Jaeger 分布式追踪实战:架构、部署与链路分析
Jaeger 是 CNCF 毕业的分布式追踪系统,本文讲解 Jaeger 的架构组件、本地部署、Demo 应用接入与链路分析方法(时间线视图、Span 标签与日志),并介绍观测云用户如何直接接收 Jaeger 数据、免运维追踪后端。
Jaeger 是 Uber 开源、CNCF 毕业的分布式追踪系统,由 Agent、Collector、Query 与存储后端组成,用于采集、存储和分析微服务的调用链数据——它是理解分布式追踪落地的最佳练手工具;而在生产环境,观测云用户可以把 Jaeger 数据直接接入平台,省去自建追踪后端的运维负担。
核心要点速览
- Jaeger 数据流:应用探针(SDK)→ Agent/Collector → 存储(ES/Cassandra/Kafka)→ Query/UI;
- 链路分析三板斧:时间线视图找慢环节、Span 标签看上下文、Span 日志查异常细节;
- 自建的隐性成本在存储运维与采样策略,生产环境建议托管;
- 观测云原生接收 Jaeger 协议数据,探针端零改动即可切换。
Jaeger 的架构是怎样的?
Jaeger 经典部署包含四层:
- Client/SDK:应用内埋点库,生成 Span(注意:官方客户端库已停止维护,新项目应使用 OpenTelemetry SDK 输出 Jaeger 格式);
- Agent(可选):本机 UDP 代理,缓冲并转发 Span;
- Collector:接收、校验、写入存储;
- 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 详情三层信息:
- Tags:结构化属性(http.method、status_code、db.statement 等),用于理解这次调用的参数与结果;
- Process:产生该 Span 的进程与运行时信息;
- Logs:Span 生命周期中的时间戳事件,异常堆栈通常在这里。
典型排障手法:发现一个慢请求 → 瀑布图中找到耗时异常的服务 → 展开该 Span 的 Tags 看 SQL/HTTP 细节 → 必要时顺 Span 日志找到具体异常。
生产环境用 Jaeger 要注意什么?
- 存储运维:ES/Cassandra 集群的容量规划、索引生命周期与查询性能都需要专人维护;
- 采样策略:全量采集成本随流量线性增长,需配置 head-based/adaptive 采样;
- 高可用:Collector 需要负载均衡与扩容方案;
- 多信号割裂:Jaeger 只管链路,日志和指标在别处,排障时要在多套系统间跳转。
观测云落地:Jaeger 数据直接接入观测云
观测云支持原生接收 Jaeger 协议数据:
- 接入:在 DataKit 中开启 Jaeger 接收(或使用 OTLP),把既有 Jaeger 探针/Agent 的上报地址指向 DataKit,应用零改动;
- 分析:链路数据进入观测云 APM,获得服务拓扑、链路检索、火焰图详情,并与日志(trace_id 关联)、指标、基础设施数据打通;
- 告警:监控器直接对链路数据做错误率、延迟检测,告警到钉钉/企微/飞书;
- 成本:无需再运维 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 默认内存存储,重启丢数据,仅供本地体验;生产要么部署完整集群,要么直接接观测云。
系列阅读
- 上一篇:《理解高基数问题》
- 下一篇:《eBPF 可观测性详解》
- 相关:《分布式追踪详解》 · 《什么是 OpenTelemetry》 · 《返回索引》