资深开发工程师推荐的8个开源可观察性及测试工具
Posted 测试萌萌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了资深开发工程师推荐的8个开源可观察性及测试工具相关的知识,希望对你有一定的参考价值。
以下为作者观点:
DevOps和 "左移 "心态正影响着后端工程师的工作方式。
你需要监控一个应用程序的运行情况。你需要监控一个应用程序在你的CI/CD管道将其部署到生产中后的表现。这些新的责任包括可观察性和测试,传统上这并不总是后端工程师需要担心的工作。
而可观察性工具可以通过检查分布式跟踪来测量分布式系统的内部状态,对于从事分布式系统工作的人来说,跟踪是一种快速增长的、立即有价值的资源。
测试工具帮可以助你了解分布式应用或服务是否通过自动化按照其设计和业务要求执行。人们可以测试不同的服务是否按照预期一起工作(集成测试),应用程序是否从一个动作返回正确的输出(功能测试),复制用户行为(端到端)等等。
所以,越早把可观察性和测试工具整合到你的工作流程中,你的工作就可以更顺畅地开展。在开发过程的早期,对后端服务进行检测,也可以更容易地排除问题,从而发布高质量的代码。
让我们来看看,如今有哪些可以帮助你进行可观察性和测试的开源工具吧!
1.Tracetest
Tracetest是一个基于分布式跟踪的开源测试工具,它使你能够通过在分布式跟踪中断言跨度来测试分布式应用。它允许使用OpenTelemetry仪器代码上生成的跟踪数据来检查和断言应用程序是否具有测试定义所定义的预期行为。
它旨在帮助后端工程师实现可观察性驱动的开发,即后端工程师在开发过程中用分布式跟踪记录他们的服务,以获得高质量的可观察性。
你可以利用基于跟踪的测试,在一个地方针对代码建立、执行和查看测试。Tracetest基于任何使用OpenTelemetry等分布式跟踪的分布式系统自动生成端到端的测试,并与Jaeger、Grafana Tempo、New Relic、Lightstep、Opensearch、Datadog等轻松集成,未来还将有更多的集成计划。
Tracetest是云原生计算基金会(Cloud Native Computing Foundation, 简称CNCF)的一个新成员,并且是100%开源的。
Tracetest的可观察性特点
-
从已经收集的跟踪数据中获取价值。
-
与最流行的跟踪数据存储进行开箱即用的集成。
-
通过添加OpenTelemetry instrumentation,将可观察性融入后端代码。
-
通过对服务间通信的可见性,找到基础设施中的 "未知数"。
Tracetest测试功能的特点
-
针对跟踪创建测试,以确保分布式系统按照预期和要求处理微服务之间的请求。
-
针对响应和分布式跟踪定义断言,确保响应和底层流程都能无误工作。
-
帮助QA工程师用可视化UI编写有价值的端到端测试。
-
通过强大的过滤引擎,在多个微服务中重复使用测试和断言。
2.Malabi
Malabi是一个开源的测试框架。通过Malabi,可以在测试运行期间从微服务中收集数据,然后暴露一个端点,对这些数据进行断言,从而在分布式系统上编写集成测试。维护者说Malabi实现了基于跟踪的测试,类似于Tracetest。Malabi使用OpenTelemetry来收集跟踪数据。
当你挑选任何产品或平台--开源、封闭的SaaS网络应用,或任何介于两者之间的产品或平台时,开发速度是很重要的考虑因素。但是,Malabi在一年内没有向GitHub提交过任何东西,这可能预示着如果你遇到问题,可能不能及时得到更多的功能或技术支持。
Malabi的可观察性特点
Malabi在设计时没有考虑到可观察性,这意味着它没有这方面的功能。
Malabi的测试功能
-
在推送到生产之前,验证分布式系统各部分之间的任何集成。
-
将一个简单的基于javascript的断言库添加到你想要测试的任何微服务中。
3.Prometheus
Prometheus专注于收集指标和启用警报,其中包括可观察性,它使用一个强大的时间序列数据库来存储高分辨率的指标数据,并使用多种模式使得从后端服务中收集的数据可视化。
Prometheus是一个非常受欢迎的开源项目,在GitHub上有46.5万颗星,并获得CNCF的正式毕业资格,对于需要强大的可观察性工具的后端工程师来说,Prometheus所提供的价值无疑得到了大量的社区支持和喜爱。
Prometheus的可观察性特点
-
存储长期指标数据,用于历史分析,具有高效的时间序列数据库和通过分片和联合的扩展功能。
-
使用PromQL创建强大的警报,这是一种灵活的查询语言,可以维护维度信息。
-
通过开源客户端库和集成,将指标或警报推送给可观察性基础设施中的其他工具。
Prometheus的测试功能
由于Prometheus只是一个指标收集和警报工具,它对希望测试其服务的后端开发人员其实没有很大的帮助。
4.Jaeger
Jaeger是一个开源的端到端跟踪工具,旨在帮助开发人员监控分布式环境并排除故障,其目的是简化开发人员调试分布式服务的方式。
Jaeger是完全开源的,该项目始于Uber,Uber发布了源代码,并最终将该项目捐赠给CNCF。
Jaeger的可观察性特点
-
监控分布式服务之间的交易,以了解基础设施的状况和性能。
-
通过深入研究导致面向用户的问题的单个事务,进行根本原因分析。
-
通过发现哪些服务对请求的响应最慢来优化性能和延时。
Jaeger的测试功能
Jaeger是为端到端追踪而设计的,但它没有任何工具来帮助你为后端服务开发测试。
5.Grafana Tempo
Grafana Tempo是一个开源的、高规模的分布式追踪后端,负责收集和存储追踪数据。该项目在AGPLv3许可下是开源的。它由Grafana Labs构建和维护,该公司是其他开源项目的幕后推手,如用于日志的Loki、用于指标数据可视化和警报的Grafana,以及用于存储指标数据的Mimir。它于2020年10月首次宣布,并于2021年开始普遍使用。
Grafana Tempo的可观察性特点
-
从最流行的开源追踪协议中摄取追踪数据,包括OpenTelmetry、Jaeger和Zipkin。
-
负担得起的跟踪数据的长期存储,以解锁历史数据趋势和分析。
Grafana Tempo的测试功能
虽然Grafana Tempo帮助在后端服务中实现追踪,但它并没有编写或执行测试的工具。
6.OpenSearch
OpenSearch是一个开源的数据库,用于摄取、搜索、可视化和分析数据。它建立在Apache Lucene之上,Apache Lucene是一个用于索引和搜索的自由软件库,OpenSearch利用它来实现更高级的分析能力,如异常检测、机器学习、全文搜索等等。
OpenSearch诞生于一场开源的争论。在2021年初,Elastic宣布他们将改变Elasticsearch和Kibana项目的许可模式。AWS的回应是将这些项目分别分开为OpenSearch和OpenSearch Dashboards,并采用更宽松的ALv2许可。
OpenSearch的可观察性特点
-
从OpenTelemetry或Jaeger摄取跟踪数据,这些数据可用于可视化和识别性能问题。
-
利用社区插件从Prometheus收集可观察性数据,并以丰富的可视化方式定制输出。
-
过滤、转换、规范化和聚合数据,使分析和可视化更相关,更简单。
OpenSearch的测试功能
虽然OpenSearch可以收集指标、跟踪和日志,所有这些都可以用来验证测试,但它没有任何功能来帮助开发人员创建、部署或管理这些测试,使用者需要找到一个独立的工具并将其输出连接到OpenSearch。
7.SigNoz
SigNoz背后的团队将自己描述为企业级观察性平台(如Datadog、New Relic等)的开源替代品。与一些更通用的工具不同,SigNoz专注于应用性能监控(APM),它试图从最终用户体验的角度测量性能,帮助开发人员在真正的用户受到影响之前修复问题。
自2021年1月启动以来,SigNoz项目已经积累了近12k颗GitHub星,并提供了一个由其团队管理的付费(200美元/月)的云端版软件。
SigNoz的可观察性特点
-
支持OpenTelemetry,可以作为应用程序生成跟踪数据的基础。
-
为指标、跟踪和日志提供统一的UI,不需要像其他可观察性工具(如Prometheus和Jaeger)之间进行上下文切换以调试和排除问题。
-
Flamegraphs和单个请求跟踪,帮助发现性能问题的根源。
-
根据日志中的属性建立仪表盘和警报。
-
快速可视化应用程序中最慢的端点。
SigNoz的测试功能
因为SigNoz是一个纯观察性的工具,它目前没有任何具体的功能来帮助后端开发者了解分布式系统的状况和性能。
8.Postman
Postman与我们刚才介绍的以追踪和观察为重点的工具有所不同。相反,Postman是一个用于构建和使用API的云平台。在Postman上,后端团队可以有一个单一的地方来创建、记录、模拟和测试API,贯穿整个生命周期。
Postman本身不是开源的而是一个封闭的云平台,但该公司有一个既定的开源理念,并维护着一些开源项目,如Newman,用于在CLI上运行和测试Postman集合,或各种编程语言的SDK和代码生成器。作为Postman持久生命力的证明,该公司最近在2021年8月获得了融资,D轮融资2.25亿美元,对该公司的估值为56亿美元。
Postman的可观察性特点
作为一个API开发平台,Postman不提供任何可观察性功能。
Postman的测试功能
-
在一个集中的位置存储和管理所有API规格、文档、测试用例、度量等。
-
用一个支持使用HTTP、REST、SOAP、GraphQL和Websockets的复杂请求的客户端来调试和测试API,这些请求可以被捆绑到Postman集合中以便重复使用。
-
将API生命周期与源码控制、CI/CD管道、API网关和应用性能监控(APM)平台相结合。
总结
介绍了这么多,我试图涵盖这个快速发展的领域中的一些不同种类的主要工具,它们都是GitHub上的免费开源软件。
一个明显的启示是,用分布式跟踪和OpenTelemetry来检测后端代码的巨大价值,宜早不宜迟。许多流行的可观察性和测试工具与OpenTelemetry的收集器或SDK集成,这意味着你可以一次检测并测试多个工具,以找到最适合你所在公司的后端开发的工作流程。
最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
以上是关于资深开发工程师推荐的8个开源可观察性及测试工具的主要内容,如果未能解决你的问题,请参考以下文章
强烈推荐一本今年八月份的新书《后台开发:核心技术与应用实践》,作者腾讯资深后台开发工程师徐晓鑫
web前端入门到实战:编写CSS代码的8个策略,资深开发工程师总结