AWS X-Ray 和 Jaeger 都是分布式跟踪工具,用于在微服务架构中进行性能监控。 Jaeger 最初由 Uber 的团队构建,然后于 2015 年开源。另一方面,AWS X-Ray 是 AWS 提供的分布式跟踪工具,专门针对使用 Amazon Cloud Services 的应用程序进行分布式跟踪。

SigNoz GitHub repo

Jaeger 是一个流行的开源工具,作为一个项目从 Cloud Native Computing Foundation 毕业。另一方面,Amazon X-Ray 更适合基于 Amazon Cloud Services 构建的应用程序。

但在深入了解 Amazon X-Ray 和 Jaeger 的详细信息之前,让我们先绕道而行,了解分布式跟踪。

什么是分布式跟踪?

在微服务的世界里,一个用户请求在为用户提供他们需要的东西之前要经过数百个服务。为了使业务具有可扩展性,工程团队负责特定的服务,而不了解系统整体的性能。这就是分布式跟踪出现的地方。

[微服务架构](https://res.cloudinary.com/practicaldev/image/fetch/s--G8Vee_gt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:/signoz.io/img /blog/2021/09/jaeger_vs_zipkin_microservices_architecture.png)

一个虚构的电子商务应用程序的微服务架构

分布式跟踪可让您深入了解特定服务在分布式软件系统中作为整体的一部分是如何执行的。分布式跟踪涉及两个基本概念:Spanstrace context

用户请求被分解为跨度。

什么是跨度?

跨度表示跟踪中的单个操作。因此,它表示由单个服务完成的工作,可以根据用例进一步分解。

当请求在服务之间传输时,跟踪上下文会被传递,它跟踪跨服务的用户请求。因此,您可以查看用户请求如何跨服务执行,并确定您需要关注的具体内容,而无需手动切换多个仪表板。

[跟踪上下文被传递以跟踪跨服务的用户请求](https://res.cloudinary.com/practicaldev/image/fetch/s--ZXTMH1wS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/ https://signoz.io/img/blog/2021/09/opentelemetry_distributed_tracing-min.png)

当用户请求从一个服务传递到另一个服务时,会传递一个跟踪上下文

AWS X-Ray 的主要功能

AWS X-Ray帮助开发人员分析和调试生产中的分布式应用程序。使用 AWS X-Ray,您可以确定性能问题和错误的根本原因。 AWS X-Ray 的一些主要功能包括:

  • 端到端跟踪

AWS X-Ray 从各个服务收集数据,并为您提供对应用程序发出的请求的跨服务视图。它将请求数据聚合到单个跟踪中,然后可用于跟踪单个请求通过不同服务时的路径。

  • 服务地图

服务地图为您提供服务在应用程序架构中的连接方式的概览。服务地图可用于一目了然地识别应用程序服务中的延迟问题。

  • 服务器和客户端延迟检测

使用 AWS X-Ray,您可以直接从服务地图中检测节点和边缘延迟分布。使用基于自定义注释的过滤器,您可以快速深入了解影响最终用户体验的问题。

  • 数据标注和过滤

您可以将特定于业务的元数据添加到您的跟踪中。数据注释为您的跟踪数据提供了丰富的上下文,可进一步用于高级跟踪过滤。

  • 基于角色的访问控制

大型分布式应用程序将具有大量敏感的遥测数据。 AWS X-Ray 让您可以灵活地控制哪些用户和资源有权访问您的跟踪以及如何访问。

[服务地图概述了服务在应用程序中的连接方式](https://res.cloudinary.com/practicaldev/image/fetch/s--TMs9hUTB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto %2Cw_880/https:/signoz.io/img/blog/2021/09/aws_xray_service_maps-min.jpg)

AWS X-Ray 上的服务地图功能

[跟踪捕获用户请求如何跨服务传输](https://res.cloudinary.com/practicaldev/image/fetch/s--l0F3SUf4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https :/signoz.io/img/blog/2021/09/aws_xray_traces-min.jpg)

使用 AWS X-Ray 控制面板上的跟踪跟踪用户请求

积家的主要特点

Jaeger最初由 Uber 的团队构建,然后开源。它用于微服务的端到端分布式跟踪。 Jaeger 的一些主要功能包括:

  • 分布式上下文传播

分布式系统的挑战之一是拥有跨进程边界和服务传递上下文的标准格式。 Jaeger 提供支持多种语言代码检测的客户端库,以跨服务传播上下文

  • 分布式事务监控

Jaeger 带有一个用 Javascript 编写的 Web UI。仪表板可用于查看跨服务的跟踪和跨度。

  • 根本原因分析

使用跟踪,您可以深入了解导致特定用户请求延迟的服务。

  • 服务器依赖分析

使用 Jaeger 的 Web UI,您可以看到请求如何流经不同的服务以及不同的服务器在处理用户请求时如何交互。

  • 性能/延迟优化

一旦您确定了哪个服务或查询造成了延迟,您就可以使用这些信息来优化它。

[Jaeger UI](https://res.cloudinary.com/practicaldev/image/fetch/s--PBiBbLYG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:/signoz.io/img /blog/2021/08/jaeger_ui-min.png)

Jaeger UI 显示服务和相应的跟踪

比较 AWS X-Ray 和 Jaeger

AWS X-Ray 和 Jaeger 之间最重要的区别在于 AWS X-Ray 仅支持跟踪 AWS 云生态系统中的应用程序,而开源工具 Jaeger 提供了一种与供应商无关的方式来收集和分析跟踪数据。

AWS X-Ray 和 Jaeger 之间的一些主要区别是:

  • AWS X-Ray 只能用于在 Amazon EC2、Amazon EC2 容器服务、AWS Lambda 和 AWS Elastic Beanstalk 上运行的应用程序。另一方面,Jaeger 是 CNCF 下的一个开源工具,可以在任何云供应商上生成和管理跟踪数据。

  • Jaeger 用于生成跟踪数据的工具库基于 OpenTracing 标准——供应商中立的 API 和用于分布式跟踪的工具。开源仪器库更适合分布式和多语言架构。 AWS X-Ray 提供 X-Ray 开发工具包和 X-Ray 代理来检测代码。

  • AWS X-Ray 仅支持少数要监控的数据库。 X-Ray 开发工具包可以捕获对 My SQL、PostgreSQL 和 Amazon Dynamo 数据库发出的请求的元数据。 Jaeger 可以跟踪对大多数数据库的请求,因为它基于 OpenTracing API。

  • Jaeger 拥有广泛的社区支持。它的 GitHub 存储库有近 14k 颗星,它的社区得到了来自微软和谷歌等所有主要云供应商的成员的支持。另一方面,AWS X-Ray 是亚马逊的专有工具,并没有围绕它的开放社区。

  • AWS X-Ray 是一种付费工具,包括在 AWS 免费套餐中免费记录 100k 跟踪的选项。它是 AWS 的托管服务,可供在 AWS 上构建的客户使用。另一方面,Jaeger 是完全开源和免费的。这也意味着您负责使用 Jaeger 设置和维护分布式跟踪堆栈。

AWS X-Ray 非常适合仅在 AWS 云生态系统上构建的用户。但是对于分布式团队和多语言技术架构,您可能会使用不同的云供应商和 AWS 生态系统之外的部分。因此,使用开源解决方案来设置分布式跟踪更有意义。

这使得 Jaeger 成为端到端分布式跟踪的更好选择。但 Jaeger 仅限于分布式跟踪,工程团队需要的不仅仅是跟踪,以建立强大的性能监控系统。

这就是SigNoz出现的地方。它提供了一个全栈的开源性能监控平台。

替代 AWS X-Ray 和 Jaeger - SigNoz

SigNoz 是一个全栈开源应用程序性能监控和可观察性工具,可以用来代替 AWS X-Ray 和 Jaeger。它在单个仪表板下提供高级分布式跟踪功能以及指标。

SigNoz 旨在原生支持 OpenTelemetry。OpenTelemetry正在成为生成和管理遥测数据(日志、指标和跟踪)的世界标准。它还在存储方面为用户提供了灵活性。在安装 SigNoz 时,您可以选择 ClickHouse 或 Kafka + Druid 作为后端存储。

[带有 OpenTelemetry 和 ClickHouse 的 SigNoz 架构](https://res.cloudinary.com/practicaldev/image/fetch/s--6BdjoEB__--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:/ signoz.io/img/blog/2021/09/SigNoz_architecture_clickhouse.png)

以 ClickHouse 作为存储后端和 OpenTelemetry 用于代码检测的 SigNoz 架构

SigNoz 带有开箱即用的可视化功能,例如 RED 指标。

[SigNoz UI 显示流行的 RED 指标](https://res.cloudinary.com/practicaldev/image/fetch/s--OKFqZ_PP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:// signoz.io/img/blog/common/signoz_charts_application_metrics.png)

SigNoz UI 显示应用程序概览指标,例如 RPS、50th/90th/99th Percentile 延迟和错误率

您还可以使用火焰图来可视化跟踪数据的跨度。所有这些都来自 SigNoz 的开箱即用。

[用于在 SigNoz UI 中可视化分布式跟踪范围的火焰图](https://res.cloudinary.com/practicaldev/image/fetch/s--FOoIlefK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880 /https://signoz.io/img/blog/common/signoz_flamegraphs.png)

显示每个跨度的确切持续时间的火焰图 - 分布式跟踪的概念

SigNoz 可以帮助您跟踪的一些事情:

  • 应用程序概览指标,例如 RPS、50th/90th/99th Percentile 延迟和错误率

  • 应用程序中最慢的端点

  • 查看确切的请求跟踪以找出下游服务中的问题、缓慢的数据库查询、调用第三方服务(如支付网关等)

  • 按服务名称、操作、延迟、错误、标签/注释过滤跟踪。

  • 对跟踪数据运行聚合

  • 指标和跟踪的统一 UI

你可以在这里查看 SigNoz 的 GitHub 存储库👇

SigNoz GitHub repo

Logo

云原生社区为您提供最前沿的新闻资讯和知识内容

更多推荐