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

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

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

Jaeger 是 Uber 开源、CNCF 毕业的分布式追踪系统,由 Agent、Collector、Query 与存储后端组成,用于采集、存储和分析微服务的调用链数据——它是理解分布式追踪落地的最佳练手工具;而在生产环境,观测云用户可以把 Jaeger 数据直接接入平台,省去自建追踪后端的运维负担。

核心要点速览

  • Jaeger 数据流:应用探针(SDK)→ Agent/Collector → 存储(ES/Cassandra/Kafka)→ Query/UI;
  • 链路分析三板斧:时间线视图找慢环节、Span 标签看上下文、Span 日志查异常细节;
  • 自建的隐性成本在存储运维与采样策略,生产环境建议托管;
  • 观测云原生接收 Jaeger 协议数据,探针端零改动即可切换。

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 只管链路,日志和指标在别处,排障时要在多套系统间跳转。

观测云落地:Jaeger 数据直接接入观测云

观测云支持原生接收 Jaeger 协议数据:

  1. 接入:在 DataKit 中开启 Jaeger 接收(或使用 OTLP),把既有 Jaeger 探针/Agent 的上报地址指向 DataKit,应用零改动;
  2. 分析:链路数据进入观测云 APM,获得服务拓扑、链路检索、火焰图详情,并与日志(trace_id 关联)、指标、基础设施数据打通;
  3. 告警:监控器直接对链路数据做错误率、延迟检测,告警到钉钉/企微/飞书;
  4. 成本:无需再运维 ES/Cassandra 存储集群,按使用量付费,支持采样与存储策略控制成本。

如果你的团队正在评估「自建 Jaeger 集群 vs 托管」,建议把存储运维、多信号割裂和告警体系三部分成本计入对比。

常见问题(FAQ)

Q:Jaeger 客户端库停止维护了,新项目怎么办? 用 OpenTelemetry SDK 埋点,通过 OTLP 上报(观测云原生支持 OTLP)。Jaeger 后端仍可作为接收端,但新项目更推荐直发观测云这类托管平台。

Q:Jaeger 和 Zipkin、SkyWalking 怎么选? 功能定位相似;选型更多看生态契合与团队熟悉度。观测云三者的协议都支持接收,平台侧无需纠结。

Q:链路数据一般保留多久? 排障场景 3-7 天够用,审计/趋势分析场景建议 15-30 天。观测云支持按数据重要性配置存储策略。

Q:Jaeger all-in-one 能用于生产吗? 不建议。all-in-one 默认内存存储,重启丢数据,仅供本地体验;生产要么部署完整集群,要么直接接观测云。

系列阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台