编译:TesterHome
原文标题:Top 8 Open-Source Observability & Testing Tools
作者:Adnan Rahić , Senior Developer
DevOps 和 "左移 "心态正影响着后端工程师的工作方式。
你需要监控一个应用程序的运行情况。你需要监控一个应用程序在你的 CI/CD 管道将其部署到生产中后的表现。这些新的责任包括可观察性和测试,传统上这并不总是后端工程师需要担心的工作。
而可观察性工具可以通过检查分布式跟踪来测量分布式系统的内部状态,对于从事分布式系统工作的人来说,跟踪是一种快速增长的、立即有价值的资源。
测试工具帮可以助你了解分布式应用或服务是否通过自动化按照其设计和业务要求执行。人们可以测试不同的服务是否按照预期一起工作(集成测试),应用程序是否从一个动作返回正确的输出(功能测试),复制用户行为(端到端)等等。
所以,越早把可观察性和测试工具整合到你的工作流程中,你的工作就可以更顺畅地开展。在开发过程的早期,对后端服务进行检测,也可以更容易地排除问题,从而发布高质量的代码。
让我们来看看,如今有哪些可以帮助你进行可观察性和测试的开源工具吧!
Tracetest 是一个基于分布式跟踪的开源测试工具,它使你能够通过在分布式跟踪中断言跨度来测试分布式应用。它允许使用 OpenTelemetry 仪器代码上生成的跟踪数据来检查和断言应用程序是否具有测试定义所定义的预期行为。
它旨在帮助后端工程师实现可观察性驱动的开发,即后端工程师在开发过程中用分布式跟踪记录他们的服务,以获得高质量的可观察性。
你可以利用基于跟踪的测试,在一个地方针对代码建立、执行和查看测试。Tracetest 基于任何使用 OpenTelemetry 等分布式跟踪的分布式系统自动生成端到端的测试,并与 Jaeger、Grafana Tempo、New Relic、Lightstep、Opensearch、Datadog 等轻松集成,未来还将有更多的集成计划。
Tracetest 是云原生计算基金会(Cloud Native Computing Foundation, 简称 CNCF)的一个新成员,并且是 100% 开源的。
Malabi 是一个开源的测试框架。通过 Malabi,可以在测试运行期间从微服务中收集数据,然后暴露一个端点,对这些数据进行断言,从而在分布式系统上编写集成测试。维护者说 Malabi 实现了基于跟踪的测试,类似于 Tracetest。Malabi 使用 OpenTelemetry 来收集跟踪数据。
当你挑选任何产品或平台 -- 开源、封闭的 SaaS 网络应用,或任何介于两者之间的产品或平台时,开发速度是很重要的考虑因素。但是,Malabi 在一年内没有向 GitHub 提交过任何东西,这可能预示着如果你遇到问题,可能不能及时得到更多的功能或技术支持。
Prometheus 专注于收集指标和启用警报,其中包括可观察性,它使用一个强大的时间序列数据库来存储高分辨率的指标数据,并使用多种模式使得从后端服务中收集的数据可视化。
Prometheus 是一个非常受欢迎的开源项目,在 GitHub 上有 46.5 万颗星,并获得 CNCF 的正式毕业资格,对于需要强大的可观察性工具的后端工程师来说,Prometheus 所提供的价值无疑得到了大量的社区支持和喜爱。
Jaeger 是一个开源的端到端跟踪工具,旨在帮助开发人员监控分布式环境并排除故障,其目的是简化开发人员调试分布式服务的方式。
Jaeger 是完全开源的,该项目始于 Uber,Uber 发布了源代码,并最终将该项目捐赠给 CNCF。
Grafana Tempo 是一个开源的、高规模的分布式追踪后端,负责收集和存储追踪数据。该项目在 AGPLv3 许可下是开源的。它由 Grafana Labs 构建和维护,该公司是其他开源项目的幕后推手,如用于日志的 Loki、用于指标数据可视化和警报的 Grafana,以及用于存储指标数据的 Mimir。它于 2020 年 10 月首次宣布,并于 2021 年开始普遍使用。
OpenSearch 是一个开源的数据库,用于摄取、搜索、可视化和分析数据。它建立在 Apache Lucene 之上,Apache Lucene 是一个用于索引和搜索的自由软件库,OpenSearch 利用它来实现更高级的分析能力,如异常检测、机器学习、全文搜索等等。
OpenSearch 诞生于一场开源的争论。在 2021 年初,Elastic 宣布他们将改变 Elasticsearch 和 Kibana 项目的许可模式。AWS 的回应是将这些项目分别分开为 OpenSearch 和 OpenSearch Dashboards,并采用更宽松的 ALv2 许可。
SigNoz 背后的团队将自己描述为企业级观察性平台(如 Datadog、New Relic 等)的开源替代品。与一些更通用的工具不同,SigNoz 专注于应用性能监控(APM),它试图从最终用户体验的角度测量性能,帮助开发人员在真正的用户受到影响之前修复问题。
自 2021 年 1 月启动以来,SigNoz 项目已经积累了近 12k 颗 GitHub 星,并提供了一个由其团队管理的付费(200 美元/月)的云端版软件。
Postman 与我们刚才介绍的以追踪和观察为重点的工具有所不同。相反,Postman 是一个用于构建和使用 API 的云平台。在 Postman 上,后端团队可以有一个单一的地方来创建、记录、模拟和测试 API,贯穿整个生命周期。
Postman 本身不是开源的而是一个封闭的云平台,但该公司有一个既定的开源理念,并维护着一些开源项目,如 Newman,用于在 CLI 上运行和测试 Postman 集合,或各种编程语言的 SDK 和代码生成器。作为 Postman 持久生命力的证明,该公司最近在 2021 年 8 月获得了融资,D 轮融资 2.25 亿美元,对该公司的估值为 56 亿美元。
## 总结
介绍了这么多,我试图涵盖这个快速发展的领域中的一些不同种类的主要工具,它们都是 GitHub 上的免费开源软件。
一个明显的启示是,用分布式跟踪和 OpenTelemetry 来检测后端代码的巨大价值,宜早不宜迟。许多流行的可观察性和测试工具与 OpenTelemetry 的收集器或 SDK 集成,这意味着你可以一次检测并测试多个工具,以找到最适合你所在公司的后端开发的工作流程。