测试基础 资深开发工程师推荐的 8 个开源可观察性及测试工具

TesterHome小助手 · 2023年03月06日 · 3859 次阅读

编译:TesterHome
原文标题:Top 8 Open-Source Observability & Testing Tools
作者:Adnan Rahić , Senior Developer

以下为作者观点:

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 的测试功能 *8
由于 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 集成,这意味着你可以一次检测并测试多个工具,以找到最适合你所在公司的后端开发的工作流程。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册