本节摘要:链路追踪这个位置上,最常被放在一起比较的两个开源自选是 Zipkin 与 Jaeger。它们理念相似(都做 trace 采集、存储、UI 展示),但在存储后端、部署形态、生态侧重上有差别。本节把两者的起步门槛、组件构成、在微服务/云原生里的取舍正面比一遍,并给你一个"从单机链路到生产级"的接入建议。
链路追踪工具的角色是一致的:接收探针(SDK)上报的 span 数据、做存储、提供查询和拓扑 UI。Zipkin 早一点,追求轻量简单;Jaeger 后来居上,功能更全、对云原生友好。它们的差距不在于"要不要链",而是部署与运维的倾向。
Zipkin 走的是"小而美"。它组件简单:zipkin 单服务里打包了接收、存储(可接内存/MySQL/Elasticsearch)、UI。最适合的场景是:你想快速看一条链路什么样、单机或小集群做演示和验证。
优点:起步极快,一个容器即跑,埋点多用现成 SDK。缺点:作为生产级全栈追踪在存储扩展、多租户、权限上较弱,大集群下还得靠外挂后端撑。所以 Zipkin 更常见于"验证链路追踪是否值得上"阶段或 mid-size 的分支场景。
Jaeger 出自 Uber,给微服务和云原生设计,组件拆得开:collector 接收、storage 后端(可接 Elasticsearch/Cassandra)、query + UI,还有 agent 做本地汇聚、采样配置更灵活。它对容器/K8s 环境是原生友好,配置和扩缩容都做得成熟。
优点:生产级组件化、采样精细、和容器编排协作好、社区活跃。缺点:相对 Zipkin 组件多、配置复杂一些,起步不是一容器而是多组件编排。
| 维度 | Zipkin | Jaeger |
|---|---|---|
| 部署形态 | 单体化,一容器起步 | 组件化,collector/agent/UI 拆开 |
| 存储后端 | 内存/MySQL/ES | ES/Cassandra 等,生产级 |
| 云原生 | 一般 | 友好(容器编排、K8s 原生) |
| 采样 | 基础 | 精细,多策略 |
| 学习起步 | 快 | 中,组件多 |
| 适合场景 | 小规模、验证、入门 | 生产级微服务/云原生 |
需要提醒你一点:链路追踪很多时候不用单独挑一个极致工具,它常常被并进更大的平台——Prometheus 生态配 Grafana 时,Grafana 就支持 Jaeger;APM 全家桶(第五章)则直接把链路纳入。所以选链路前,先想清楚你已经有哪套平台,尽量与它对齐,别为了"单独最好的链路工具"又另起一套堆维护负担。
给你一条平滑的落地路线:
第一步,验证值得不值得:小规模先接 Zipkin,把"链长什么样"跑通,看它对排查的帮助是否值得投入。轻量起步,成本最低。
第二步,规模化云原生化:当你要在多个微服务、K8s 环境正式上链路,评估迁到 Jaeger,组件编排和容器协作更顺,也更好被 Grafana 等集成。
第三步,与三支柱合并:把链路和你的指标、日志平台对齐(同一 traceID 上下文),接入 APM 或全家桶的能力,让链路真正作为可观测性的一块拼图发挥。
链路工具本体不贵,贵的是它攒下的数据。很多团队把链路接了、全量采样,结果几个月后存储账单吓一跳。我的提醒是三笔账要在上之前算清:采样率—正常请求哪怕抽 1%,几千 QPS 的服务一天也攒出可观的量,务必按"错误与慢请求必采、正常抽采"配好;保留时长—链路数据两周到一个月基本够排障,别和审计日志一样按年留,追问"去年三月那条 trace"的场景少之又少;每 span 存多少属性—只留诊断要用的三个字段即可,别把 request body 整段塞进去。这三笔算下来,链路存储能压掉九成,还一点不耽误排障。
链路工具经常被当作"独立备选"来挑,反而选岔了。更聪明的顺序是先盘点已有资产:如果你已经有 Prometheus + Grafana,优先看 Grafana 支持的链路后端(Jaeger 就在它内嵌支持列表里),直接对齐,省一套独立 UI 的维护;如果你已经上了 APM 全家桶,链路通常已经被它内建,根本不用再单独选。真正到"链路工具二选一"这个关口,通常是你要自建一条独立的、跨平台的链路支柱。把"对齐主流程"排在"选最强的单工具"前面,决策会清爽很多。
我的判断:求快、验证用 Zipkin;要上生产级多组件、云原生,用 Jaeger;若是已在用 Prometheus+Grafana 或者全家桶,优先看它内嵌支持的链路组件,别单独再起一套。工具是手段,和你的主线搭上才是目的。
链路工具真正的难题往往不在"Zipkin 还是 Jaeger",而在"接好之后有没有真的用起来"。选完配置完,要写进排障流程里:每次定位全链路慢,第一反应是打开链路视图而不是逐台翻日志。工具选得再对,如果团队不习惯用它,也等于白搭——所以把链路工具当成主线的一部分常练,比纠结参数配置更有长期价值。等到真在大促夜里靠它三分钟锁定了慢的根因,你就知道这套选型值不值。常练的标准很简单:这个月有没有人真正翻开链路视图解决过一个问题——有,就算是常练;半年都没人碰过一次,那就是白装了。
开源三件套(监控、日志、链路)都配齐了。最后一节,当你要省事或者规模太大时,要不要上商业化全家桶——怎么权衡,下一节给你算这笔账。