Jaeger 分布式追踪实战:架构、部署与链路分析

Jaeger 是 CNCF 毕业的分布式追踪系统,本文讲解 Jaeger 的架构组件、本地部署、Demo 应用接入与链路分析方法(时间线视图、Span 标签与日志),并介绍观测云用户如何直接接收 Jaeger 数据、免运维追踪后端。

最佳实践
Jaeger 分布式追踪实战:架构、部署与链路分析封面

Jaeger 是 Uber 开源、CNCF 毕业的分布式追踪系统,由 Agent、Collector、Query 与存储后端组成,用于采集、存储和分析微服务的调用链数据,可用于理解 Span 的父子关系与跨服务耗时。

核心要点速览

  • Jaeger 数据流:应用探针(SDK)→ Agent/Collector → 存储(ES/Cassandra/Kafka)→ Query/UI;
  • 链路分析三板斧:时间线视图找慢环节、Span 标签看上下文、Span 日志查异常细节;
  • 自建与托管都需要核对采样、保留期、查询方式和迁移后的链路完整性。

Jaeger 的架构是怎样的?

Jaeger 经典部署包含四层:

  1. Client/SDK:应用内埋点库,生成 Span(注意:官方客户端库已停止维护,新项目应使用 OpenTelemetry SDK 输出 Jaeger 格式);
  2. Agent(可选):本机 UDP 代理,缓冲并转发 Span;
  3. Collector:接收、校验、写入存储;
  4. Storage + Query/UI:Cassandra/Elasticsearch 存储,Web UI 提供链路检索与瀑布图。

一体化部署(all-in-one)把除存储外的组件打包,适合本地学习与测试。

本地快速上手的路径是什么?

官方推荐的体验路径:

docker run -d --name jaeger -p 16686:16686 -p 14250:14250 jaegertracing/all-in-one:latest

然后运行官方 HotROD 演示应用(一个由多个微服务组成的打车 Demo),在浏览器打开 http://localhost:16686 即可看到真实链路数据。

如何读懂 Jaeger 的链路详情?

时间线视图(瀑布图):每个 Span 一根横条,长度代表耗时,缩进代表父子关系。排障时先找最长的自耗时(Self Time)Span——它通常是瓶颈所在。

Span 详情三层信息:

  1. Tags:结构化属性(http.method、status_code、db.statement 等),用于理解这次调用的参数与结果;
  2. Process:产生该 Span 的进程与运行时信息;
  3. Logs:Span 生命周期中的时间戳事件,异常堆栈通常在这里。

典型排障手法:发现一个慢请求 → 瀑布图中找到耗时异常的服务 → 展开该 Span 的 Tags 看 SQL/HTTP 细节 → 必要时顺 Span 日志找到具体异常。

生产环境用 Jaeger 要注意什么?

  • 存储运维:ES/Cassandra 集群的容量规划、索引生命周期与查询性能都需要专人维护;
  • 采样策略:全量采集成本随流量线性增长,需配置 head-based/adaptive 采样;
  • 高可用:Collector 需要负载均衡与扩容方案;
  • 多信号割裂:Jaeger 只管链路,日志和指标在别处,排障时要在多套系统间跳转。

更换追踪后端时如何验证

评估观测云作为接收端时,可按 APM 接入说明选择 DataKit 收集 Jaeger 或 OpenTelemetry 数据的方式。先确认现有 SDK/Collector 的输出协议与接收配置一致,再将一个测试服务的出口切到新地址。

发送一条经过多个服务的请求,核对服务名、trace ID、父子 Span、耗时和错误状态。需要从链路查看日志时,日志中必须有可匹配的 trace ID。保留原有配置作为回退基线,确认正常请求与异常请求都能追溯后再扩大接入范围。

常见问题(FAQ)

Q:Jaeger 客户端库停止维护了,新项目怎么办? 用 OpenTelemetry SDK 埋点,通过 OTLP 上报到所选 Collector 或后端,并核对其接收协议。

Q:Jaeger 和 Zipkin、SkyWalking 怎么选? 功能定位相似;选型更多看生态契合与团队熟悉度。还要比较已有探针、采样策略和运维方式的迁移成本。

Q:链路数据一般保留多久? 排障场景 3-7 天够用,审计/趋势分析场景建议 15-30 天。保留期还应结合事件发现时间、审计需求与数据量调整。

Q:Jaeger all-in-one 能用于生产吗? 不建议。all-in-one 默认内存存储,重启丢数据,仅供本地体验;生产需另行设计持久化存储、高可用与容量管理。

系列阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台