OpenTelemetry 和 Jaeger 都是 Cloud Native Computing Foundation 下的开源项目。在本文中,让我们了解这两个项目所涉及的关键概念、它们的功能以及它们之间的区别。

OpenTelemetry 是一个与供应商无关的仪器库。它提供了一组工具、API 和 SDK 来创建和管理遥测数据(日志、指标和跟踪)。

Jaeger 是一个开源工具,专注于微服务架构中请求的分布式跟踪。

OpenTelemetry 和 Jaeger 都使应用程序所有者能够设置监控和可观察性来衡量应用程序性能。但他们的解决方案是针对不同的问题。 OpenTelemetry 有助于生成遥测数据,而 Jaeger 是一个分布式跟踪工具。

什么是可观察性?

在控制理论中,术语“可观察性”表示如果系统的内部状态可以通过查看其输入和输出来确定,则系统是可观察的。

对于分布式软件系统,可观察性意味着我们能够对从系统收集的数据的性能问题进行故障排除的能力。

什么是 OpenTelemetry?

OpenTelemetry 是 Cloud Native Computing Foundation (CNCF) 下的一个开源项目,旨在标准化遥测数据的生成和收集。遥测数据包括日志、指标和跟踪。

它是 API、SDK 和客户端库的集合,用于从应用程序代码生成遥测数据。您使用 OpenTelemetry 收集的数据与供应商无关,可以以多种格式导出。

使用 OpenTelemetry 的最大优势是您可以自由选择您选择的后端。您不会被供应商所束缚,工程团队可以使用单一技术来生成遥测数据。

要将 OpenTelemetry 与您的应用程序代码集成,您可以使用所需编程语言的 OpenTelemetry 客户端库。 OpenTelemetry 还提供了一个称为 OTel (OpenTelemetry) 收集器的收集器,可用于处理和导出多种格式的遥测数据。

[OpenTelemetry 架构](https://res.cloudinary.com/practicaldev/image/fetch/s--7R5TQ-FO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:/signoz.io /img/blog/2022/03/opentelemetry_architecture_new.webp)

OpenTelemetry 的架构。您可以将 OTel 库与您的应用程序代码集成

什么是积家?

Jaeger 是一种流行的开源分布式跟踪工具,最初由 Uber 的团队构建,然后开源。它用于监控和排除基于微服务架构的应用程序。

分布式跟踪工具跨服务跟踪用户请求,并集中概述微服务架构的不同组件如何交互以处理用户请求。 Jaeger 用于存储、分析和可视化跟踪数据。

Jaeger 不支持日志和指标。

它提供了基于 OpenTracing 标准构建的检测库。这些库涵盖了流行的编程语言,如 Go、Java、Node、Python、C++ 和 C#。对于存储跟踪数据,它支持两个存储后端:

  • 卡桑德拉

  • 弹性搜索

Jaeger 提供了一个最小的 UI 来分析捕获的跟踪数据。

[Jaeger UI](https://res.cloudinary.com/practicaldev/image/fetch/s---Z_8AswZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:/signoz.io/ img/blog/2022/03/jaeger_ui.webp)

Jaeger UI 显示所选服务的跟踪

比较 OpenTelemetry 和 Jaeger

虽然 OpenTelemetry 和 Jaeger 都是能够为现代云原生应用程序设置可观察性的工具,但它们旨在解决不同的问题。

为您的应用程序设置可观察性涉及两个主要步骤:

  • 采集应用健康相关数据

  • 存储、管理和可视化收集的数据以采取快速行动

OpenTelemetry 解决了第一步,而 Jaeger 旨在解决后者。在可观察性领域,像 Jaeger 这样的工具被称为可观察性后端,而 OpenTelemetry 提供仪器。检测是使您的应用程序代码能够生成遥测数据的过程。

您可以使用 OpenTelemetry 作为检测层,使用 Jaeger 来存储和可视化跟踪数据。

OpenTelemetry 和 Jaeger 之间的主要区别可以总结为以下几点:

  • OpenTelemetry 为您的应用程序代码提供了一个检测层,而 Jaeger 是一个后端分析工具,用于存储和可视化跟踪数据。

  • 使用 OpenTelemetry 库,您可以生成日志、指标和跟踪。 Jaeger 不支持日志和指标。

  • OpenTelemetry 只能用于生成和收集数据。它不提供存储层。 Jaeger 提供 Cassandra 和 Elasticsearch 作为存储数据的两个选项。

  • OpenTelemetry 不提供任何 Web UI 组件。 Jaeger 带有一个用于可视化跟踪数据的 Web UI 组件。

OpenTelemetry 和 Jaeger 的主要特性

OpenTelemetry 和 Jaeger 都旨在通过针对不同级别的可观察性堆栈来提高云原生应用程序的可观察性。

OpenTelemetry 作为检测层的主要功能包括:

  • 涵盖多种编程语言和技术的单一一致仪表层

  • 生成和收集遥测数据,包括日志、指标和跟踪

  • 支持以多种数据格式将遥测数据导出到选择的后端

  • 跨语言能力,能够在所有主要编程语言中以一致的格式生成遥测数据

OpenTelemetry 让您可以访问分析应用程序运行状况所需的原始数据,而 Jaeger 为最终用户(即应用程序所有者)提供分析和存储层。

Jaeger 作为分布式追踪工具的主要特点包括:

  • 带有跟踪的分布式事务监控

  • 性能和延迟优化

  • 根本原因分析

  • 服务依赖分析

  • 分布式上下文传播

更好的Jaeger替代品

OpenTelemetry 是云原生应用程序检测的未来。它得到了庞大的开发人员、可观察性供应商和云供应商社区的支持。现代分布式软件系统的操作和故障排除很复杂。

检测应用程序和基础架构的各个方面是检查应用程序性能的第一个关键步骤。 OpenTelemetry 可以处理整个仪器层,因为它支持多种编程语言和技术。

下一步是选择后端分析工具。 Jaeger 支持 OpenTelemetry 的数据格式。但是 Jaeger 在其 UI 方面受到限制,并且只进行分布式跟踪。对于强大的监控和可观察性框架,您需要一个统一的 UI 用于度量和跟踪。这就是SigNoz远比 Jaeger 作为分布式跟踪工具更适合的地方。

SigNoz 是一个全栈开源应用程序性能监控和可观察性工具,可以用来代替 Jaeger。 SigNoz 旨在原生支持 OpenTelemetry。它还提供了一个快速的 OLAP 数据库——ClickHouse 作为存储后端。

它带有开箱即用的应用程序指标图表。

[SigNoz 仪表板中的应用程序指标图表](https://res.cloudinary.com/practicaldev/image/fetch/s--Eq5v3jpl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:// dev-to-uploads.s3.amazonaws.com/uploads/articles/uzbqcdzxv9qkzc4ble92.png)

SignNoz 仪表板中的应用程序指标图表

您可以使用强大的过滤器分析跟踪数据。您还可以使用聚合跟踪指标分析服务级别性能,例如特定服务的 p99 延迟。

[具有聚合跟踪指标功能的跟踪数据过滤器](https://res.cloudinary.com/practicaldev/image/fetch/s--N5dKqGdI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/ https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xo949y7w6ihsuonz4tml.png)

具有聚合跟踪指标功能的跟踪数据过滤器

SigNoz 还借助火焰图和甘特图提供了丰富的跟踪数据可视化。您可以准确地看到单个事件作为整个用户请求的一部分是如何执行的。

[SigNoz dashbaord中的火焰图和甘特图](https://res.cloudinary.com/practicaldev/image/fetch/s--k6k_QsO4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:/ /dev-to-uploads.s3.amazonaws.com/uploads/articles/9gh7jo0unh8ricg4wrru.png)

SigNoz 仪表板中的火焰图和甘特图

查看 SigNoz GitHub 存储库:

SigNoz GitHub repo

常见问题

Jaeger 是否使用 OpenTelemetry?

Jaeger 基于用于检测的 OpenTracing API。但是,OpenTracing 现已存档,如果您的项目使用 OpenTracing,建议迁移到 OpenTelemetry。 Jaeger 的网站提到,未来的 Jaeger 后端组件将基于 OpenTelemetry Collector。

我应该使用 OpenTracing 还是 OpenTelemetry?

OpenTracing 现在是archived,建议迁移到 OpenTelemetry。


延伸阅读

积家与 SigNoz

OpenTelemetry Collector - 架构和配置指南

Logo

CI/CD社区为您提供最前沿的新闻资讯和知识内容

更多推荐