Jaeger 和 Prometheus 都是流行的开源应用程序性能监控工具。 Jaeger 是一个端到端的分布式跟踪工具,而 Prometheus 则用作监控指标的时间序列数据库。

SigNoz GitHub repo

应用程序性能监控是检查系统健康状况的关键。在当今的数字经济中,任何企业都不能承受用户请求的失败或延迟完成。几毫秒的延迟可能会导致数以百万计的商机丢失。

分布式跟踪和指标监控对于为您的应用程序设置强大的监控框架都很重要。

Jaeger 和 Prometheus 都是 Cloud Native Computing Foundation 下的热门开源项目。 Jaeger 专注于为微服务架构提供分布式跟踪,而 Prometheus 则以时间序列指标监控工具而闻名。

分布式跟踪可让您深入了解用户请求在不同服务中的执行情况。指标提供对系统行为和健康状况的洞察,尤其是在进行汇总分析时。指标可以是任何类型,例如基于主机的指标、应用程序指标以及网络和连接指标。

现在您对分布式跟踪和指标监控有了一些了解,让我们详细了解一下 Jaeger 和 Prometheus 的功能。

积家的主要特点

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 显示服务和相应的跟踪

普罗米修斯的主要特点

Prometheus 最初于 2012 年在 SoundCloud 开发,然后作为开源项目发布。它于 2016 年被 CloudNative Computing Foundation 录取,是继 Kubernetes 之后从该基金会毕业的第二个项目。

Prometheus 使您能够捕获时间序列数据作为指标。可以汇总这些指标,以深入了解我们系统的行为。 Prometheus 的一些主要功能包括:

  • 多维数据模型

Prometheus 将数据存储为时间序列。例如,它可以存储接收到的 HTTP 请求总数的时间戳值。您还可以存储一组可选的键值对,称为该指标的标签。多维数据模型支持丰富的上下文指标监控。

时间序列指标的表示法:

  <metric name>{<label name>=<label value>, ...}

进入全屏模式 退出全屏模式

  • 灵活的查询语言

Prometheus 提供了一种称为 PromQL 的查询语言。使用 PromQL,您可以实时过滤和聚合指标数据。

  • 拉取模型数据采集

与大多数 APM 工具相比,Prometheus 数据收集是基于拉取的。它要求您运行一个公开 Prometheus 指标的 HTTP 服务器。

  • 图形和仪表板支持

对于可视化,Prometheus 有三个选项:Prometheus Expression Browser、Grafana 和 Prometheus Console Templates。 Grafana 是一个流行的数据可视化工具,它支持查询 Prometheus。尽管使用 Grafana 设置自定义 Prometheus 指标需要时间和精力,但它可以为您提供一些可靠的可视化。

[使用 Grafana可视化的 Prometheus 指标](https://res.cloudinary.com/practicaldev/image/fetch/s--Z-DRx73a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:/ /signoz.io/img/blog/2021/09/jaeger_vs_prometheus_grafana%2520dashboard-min.jpg)

使用 Grafana 的 Prometheus 指标数据可视化

Jaeger vs Prometheus:主要区别

从上面的描述中,您可能对 Jaeger 和 Prometheus 之间的区别有了一个很好的了解。两者的主要区别在于 Jaeger 专门用于分布式跟踪,而 Prometheus 专门用于监控指标。

总结 Jaeger 和 Prometheus 之间的主要区别:

  • Jaeger 是一个端到端分布式跟踪工具,用于跟踪微服务架构中跨服务的用户请求。另一方面,Prometheus 是一个时间序列指标监控工具,用于跟踪资源使用等指标。

  • Jaeger 具有基于推送的数据收集,其中跟踪数据被发送到收集器,而 Prometheus 具有基于拉取的数据收集模型,它在其中抓取暴露 Prometheus 指标的端点。

  • Jaeger 的 Web UI 带有开箱即用的跟踪数据可视化和服务依赖关系图。 Prometheus 开箱即用的 Web UI 是有限的。您需要使用 Grafana 设置自定义可视化以获得更好的洞察力。

  • Jaeger 支持用于跟踪数据的可插拔存储后端。 Cassandra 和 Elasticsearch 是 Jaeger 主要支持的存储后端。 Prometheus 包含一个本地磁盘时间序列数据库,但它不提供任何可插拔数据库。

  • Jaeger 在设计上具有可扩展的架构。另一方面,Prometheus 是为单机设计的。它不能水平缩放。

这两种工具的问题在于它们仅限于分布式跟踪和指标监控的特定用例。但是对于一个健壮的监控框架,您需要指标和跟踪。工程团队需要快速解决问题,他们需要访问统一的指标和跟踪视图。这就是SigNoz出现的地方。

替代 Jaeger 和 Prometheus - SigNoz

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

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

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

更多推荐