Ukraine flag 我们与乌克兰的朋友和同事站在一起。为了支持乌克兰度过难关,请访问此页面

架构

版本  2.6 最新 前往最新的 1.x 版本

另请参阅


Jaeger v2 设计为一个多功能且灵活的追踪平台。它可以部署为一个单一二进制文件,配置为在 Jaeger 架构中执行不同的角色

角色

  • collector:接收来自应用程序的追踪数据并将其写入存储后端。
  • query:提供用于查询和可视化追踪的 API 和用户界面。
  • ingester:从 Kafka 接收 span 并将其写入存储后端;在分离的 collector-Kafka-ingester 配置中运行时非常有用。
  • all-in-one:在单个进程中包含 collector 和 query 角色。
  • agent:一个主机代理或 sidecar,与应用程序一起运行并将追踪数据转发给 collector。虽然 Jaeger 可以配置为这个角色,但我们建议改用标准的OpenTelemetry Collector外部链接 - Jaeger 分布式追踪平台,因为您可能还需要它来处理其他类型的遥测数据(指标和日志)。

all-in-one 和 collector/query 配置之间的选择取决于偏好。当使用外部存储后端时,这两种配置都可以水平扩展,但 collector/query 配置允许分离读写流量并独立扩展它们,还可以应用不同的访问和安全策略。

使用内存存储的 all-in-one 配置最适合开发和测试,但不建议用于生产环境,因为重启会丢失数据。使用Badger 后端的 all-in-one 可以用于生产环境,但仅适用于适度的数据量,因为它仅限于单个实例且无法水平扩展。

架构选择

可扩展的 Jaeger 后端最常见的两种部署选项是直接写入存储和使用 Kafka 作为缓冲区。

直接写入存储

在此部署中,collectors 接收来自被追踪应用程序的数据并将其直接写入存储。存储必须能够处理平均和峰值流量。collectors 可以使用内存队列来平滑短时流量峰值,但如果存储无法跟上,持续的流量峰值可能导致数据丢失。

Architecture

通过 Kafka

为了防止 collectors 和存储之间的数据丢失,可以使用 Kafka 作为中间的持久队列。collectors 配置了 Kafka 导出器。需要部署一个额外的组件 ingester,用于从 Kafka 读取数据并将其保存到存储中。可以部署多个 ingesters 来扩展数据摄取能力;它们会自动在它们之间分配负载。实际上,ingester 与 collector 非常相似,只是配置了一个 Kafka 接收器而不是基于 RPC 的接收器。

Architecture

结合 OpenTelemetry Collector

您**不需要**使用 OpenTelemetry Collector 来运行 Jaeger,因为 Jaeger 是 OpenTelemetry Collector 的一个定制分发版本,具有不同的角色。但是,如果您已经使用 OpenTelemetry Collectors 来收集其他类型的遥测数据或用于预处理/丰富追踪数据,它可以放置在 Jaeger 前面的收集管道中。OpenTelemetry Collectors 可以作为应用程序 sidecar、主机代理/守护进程或远程服务集群运行。

OpenTelemetry Collector 支持 Jaeger 的远程采样协议,可以直接提供配置文件中的静态配置,或将请求代理到 Jaeger 后端(例如,在使用自适应采样时)。

Architecture

将 OpenTelemetry Collector 作为 sidecar / 主机代理

优点

  • SDK 配置得到简化,因为追踪导出端点和采样配置端点都可以指向本地主机,而无需担心发现这些服务在远程何处运行。
  • Collector 可以通过添加环境信息(例如 k8s pod 名称)来丰富数据。
  • 数据丰富所需的资源使用可以分布在所有应用程序主机上。

缺点

  • 额外一层数据编组/解组。

将 OpenTelemetry Collector 作为远程集群

优点

缺点

  • 额外一层数据编组/解组。

Jaeger 二进制文件

Jaeger 二进制文件基于 OpenTelemetry Collector 框架构建,并包含

  • 官方上游组件,例如 OTLP Receiver、Batch 和 Attribute Processor 等。
  • 来自 opentelemetry-collector-contrib 的上游组件,例如 Kafka Exporter 和 Receiver、Tail Sampling Processor 等。
  • Jaeger 自己的组件,例如 Jaeger Storage Exporter、Jaeger Query Extension 等。

Architecture

Jaeger 组件

OpenTelemetry 组件

接收器

处理器

导出器

连接器

扩展