Jaeger 2.22 介绍与选型指南
Jaeger 2.22 介绍与选型指南:CNCF 毕业分布式链路追踪平台 v2 的 OTel Collector 架构、运行角色与存储后端、多协议采集与采样体系、二进制快速上手、适用限制,以及与 Zipkin、Tempo、SkyWalking 的量化对比
Jaeger 2.22 介绍与选型指南
一、信息基准
1.1 查询口径
本篇信息查询日期为 2026-10-19,全部资料取自 Jaeger 官方渠道(官网 jaegertracing.io、官方文档 v2.22 版、GitHub 官方仓库与发布流、CNCF 官方公告),未做本地安装与运行实测。版本基准为官方最新发布 2.22.0。
1.2 版本依据
GitHub 官方发布流实查(2026-10-19):
| 版本 | 发布时间 |
|---|---|
| 2.22.0 | 2026-10-06 |
| 2.21.0 | 2026-09-15 |
| 2.20.0 | 2026-07-20 |
| 2.19.0 | 2026-06-03 |
| 2.18.0 | 2026-05-13 |
| 2.17.0 | 2026-04-01 |
次版本节奏约为每 6 至 8 周一个,期间另有补丁版本。两条关键生命周期信息:官方下载页明示「Jaeger v1 已于 2025 年 12 月 31 日到达生命周期终点,不再接收更新」;Jaeger v2 于 2024 年 11 月发布,是全新的主版本系列。官网博客另载:2.18.0 引入 ClickHouse 存储后端原生支持(2026-05 博客)。
1.3 官方来源清单
| 来源 | 地址 | 用途 |
|---|---|---|
| 官网 | https://www.jaegertracing.io/ | 产品入口、博客、下载页 |
| 官方文档 v2.22 | https://www.jaegertracing.io/docs/2.22/ | 架构、配置、存储后端权威口径 |
| Getting Started(2.22) | https://www.jaegertracing.io/docs/2.22/getting-started/ | 快速上手与端口说明 |
| GitHub 官方仓库 | https://github.com/jaegertracing/jaeger | 源码与发布物(2026-10-19 实查 stars 23,310) |
| 官方发布流 | https://github.com/jaegertracing/jaeger/releases.atom | 版本与发布时间 |
| CNCF 项目页 | https://www.cncf.io/projects/jaeger/ | 成熟度与关键时间线 |
| CNCF 毕业公告 | https://www.cncf.io/announcements/2019/10/31/cloud-native-computing-foundation-announces-jaeger-graduation/ | 毕业事实 |
二、软件概述
本文介绍的版本为 Jaeger 2.22.0(2026-10-06 发布)。
Jaeger 是端到端分布式链路追踪平台,用于在复杂分布式系统中监视与排障事务:应用侧完成埋点后,调用链路数据经 Jaeger 后端汇聚入存储,通过查询 API 与 Web UI 检索和分析。项目由 Uber 于 2016 年发起(CNCF 项目页记录首次提交 2016-04-18),2017 年 9 月进入 CNCF 孵化,2019 年 10 月 31 日作为第七个毕业项目从 CNCF 毕业。v2 起它成为 OpenTelemetry 生态的一部分:官方文档明确「Jaeger v2 是基于 OpenTelemetry Collector 框架的定制发行版」。
项目以 Apache-2.0 许可证开源,GitHub 仓库 jaegertracing/jaeger 2026-10-19 实查 stars 为 23,310。官方还提供 HotROD 示例应用(多服务演示链路追踪与 OpenTelemetry 接入)与服务性能监控(SPM)等配套能力。
三、核心架构
3.1 基于 OpenTelemetry Collector 的发行版
官方架构文档说明:Jaeger v2 二进制构建于 OpenTelemetry Collector 框架之上,由三类组件组成——上游官方组件(OTLP Receiver、Batch 与 Attribute Processor 等)、opentelemetry-collector-contrib 上游组件(Kafka Exporter/Receiver、Tail Sampling Processor 等)、以及 Jaeger 自有组件(Jaeger Storage Exporter、Jaeger Query Extension、Adaptive Sampling Processor、Remote Sampling Extension、Jaeger Storage Extension 等)。开发者可用 OpenTelemetry Collector Builder(ocb)构建自定义发行版。
3.2 运行角色
单个 Jaeger 二进制可通过配置扮演不同角色(官方架构文档):collector 接收埋点数据并写入存储;query 提供查询 API 与用户界面;ingester 从 Kafka 消费 span 写入存储(用于 collector 与存储之间经 Kafka 缓冲的拆分部署);all-in-one 将 collector 与 query 合并进单进程;agent 角色虽保留配置能力,但官方推荐直接使用标准 OpenTelemetry Collector 承担该层。all-in-one 与 collector/query 拆分均支持水平扩展,后者还能按读写流量分别扩缩并施加不同访问策略。
3.3 部署形态
两种主流可扩展部署(官方架构文档):直连存储(collector 直接写后端存储,需存储扛住峰值流量);经 Kafka 缓冲(collector 配置 Kafka exporter,额外部署 ingester 消费写入存储,多 ingester 自动分区负载,可防止峰值期间数据丢失)。
3.4 存储后端
官方 2.22 存储文档口径:主力的分布式存储后端为 Cassandra、Elasticsearch 与 OpenSearch(大规模生产推荐 OpenSearch 优先于 Cassandra);ClickHouse 位于特性开关之后作为实验性后端;另有 Badger(本地嵌入式,受单实例限制)、Memory(瞬态内存)等选项;并通过基于 gRPC 的 Remote Storage API v2 允许接入自定义存储(社区已有 PostgreSQL 等实现)。存储配置按主存储与归档存储双轨定义,归档存储用于把个别链路长期留存(需在 UI 手动触发保存),主存储通常按较短 TTL 滚动淘汰。
四、功能特性
4.1 全链路查询与用户界面
query 角色对外提供链路检索 API 与 Jaeger UI(默认端口 16686),支持按服务、操作、时间、标签等维度检索调用链,并以数据驱动的服务依赖图呈现系统拓扑(依赖分析由 spark-dependencies 作业从存储中分析 span 链接生成)。
4.2 多协议采集接入
官方 Getting Started 列出的 all-in-one 端口覆盖:OTLP gRPC(4317)与 OTLP HTTP(4318)——官方推荐的应用埋点通道;Zipkin 兼容端口 9411;以及 5778 等 Jaeger 传统协议端口。二进制内的接收器还支持经 Kafka 以 OTLP、Jaeger、Zipkin 等格式接收 span(架构文档接收器清单)。
4.3 采样体系
官方组件包括 Remote Sampling Extension(基于静态配置或自适应采样对外提供远程采样策略端点)与 Adaptive Sampling Processor(按服务与端点自动计算采样概率);经 OpenTelemetry 生态还可引入 tail-based sampling 处理器按链路尾部特征采样,并可用 OpenTelemetry Collector 在采集管线中做前置处理与富化(架构文档)。
4.4 服务性能监控与运维配套
SPM(Service Performance Monitoring)从链路数据聚合出服务级 RED 指标(官方设有专门快速开始文档);归档存储、多存储后端并存(jaeger_storage 配置多个 backend 并分别绑定查询与归档)等能力由配置体系承载;2.x 全部配置经 YAML 文件以 --config 参数注入,并支持以环境变量覆写其中的引用值(配置文档)。
五、快速上手
以下为官方 Getting Started 与 Download 页面的自建路径(本文未做本地实测)。Jaeger v2 对 macOS、Linux、Windows 均发布可执行二进制,位于 GitHub Releases 页(https://github.com/jaegertracing/jaeger/releases );最新版对应资产为 2.22.0。下载解压后运行 jaeger 可执行文件:官方配置文档说明二进制内已捆绑 all-in-one 角色(cmd/jaeger/internal/all-in-one.yaml),不传 --config 参数即以 all-in-one 形态启动,使用瞬态内存存储;随后访问 http://localhost:16686 打开 Jaeger UI。
应用侧接入按官方推荐使用 OpenTelemetry instrumentation 与 SDK,经 OTLP 上报(all-in-one 下 gRPC 4317、HTTP 4318)。切换角色或存储时按官方配置文档编写 YAML 并以 --config 传入,仓库 config-{storage}.yaml 系列示例覆盖各存储后端的 collector 角色,config-query.yaml 演示独立 query 角色。
体验与验证:官方 HotROD 示例(https://github.com/jaegertracing/jaeger/tree/main/examples/hotrod )模拟多服务打车应用,官方博客提供了完整的教学式导览,可用于演示依赖图、延迟定位与上下文传播等能力。来源标注:以上步骤与端口引自官方 Getting Started(https://www.jaegertracing.io/docs/2.22/getting-started/ )、Download(https://www.jaegertracing.io/download/ )与 Configuration(https://www.jaegertracing.io/docs/2.22/configuration/ )文档。
六、适用场景与限制
6.1 适用场景
- 微服务调用链排障:跨服务请求的耗时分解、错误定位与依赖拓扑还原;
- OpenTelemetry 标准化采集底座:以 OTLP 为统一入口,同时保留 Zipkin 协议兼容以利存量应用迁移;
- 大规模可扩展后端:collector/query 按角色拆分水平扩展,经 Kafka 缓冲削峰,Cassandra/OpenSearch 承载海量 span;
- 需要供应商中立与社区治理保障的场景:CNCF 毕业项目、Apache-2.0 许可证。
6.2 限制与注意点
- Jaeger 只管链路追踪:指标与日志需交给 Prometheus、Loki 等其他后端,属于可观测性栈中的一环而非全家桶;
- all-in-one 的内存存储仅适合开发测试(重启即失数据,官方明示不建议生产使用);Badger 受单实例限制只能承载适中数据量;生产必须外接 Cassandra/Elasticsearch/OpenSearch 等分布式存储并自行规划其容量与 TTL;
- v1 已于 2025-12-31 停止维护,存量 v1 部署需要规划向 v2 的迁移;v2 配置体系从 v1 的环境变量与 YAML 混用转向以 OTel Collector 风格 YAML 为主,存量配置需要改写;
- UI 检索能力以链路为中心,缺少内置的指标图表与告警,需要与 Grafana、SPM 等外围组合。
七、同类选型对比
7.1 对比对象
选取 Zipkin(Twitter 系老牌链路追踪)、Grafana Tempo(对象存储优先的链路后端)、Apache SkyWalking(APM 一体化观测平台)三个对象。stars 与最近发版于 2026-10-19 经 GitHub 仓库页面与 releases.atom 实查。
7.2 量化对比
| 维度 | Jaeger 2.22.0 | Zipkin 3.6.1 | Grafana Tempo v3.1.0 | SkyWalking 11.0.0 |
|---|---|---|---|---|
| 开源许可 | Apache-2.0(CNCF 毕业) | Apache-2.0 | AGPL-3.0(Grafana Labs) | Apache-2.0(Apache 顶级项目) |
| GitHub stars(2026-10-19) | 23,310 | 17,468 | 5,538 | 24,971 |
| 最近发版 | 2.22.0(2026-10-06) | 3.6.1(2026-04-08) | v3.1.0(2026-09-29) | 11.0.0(2026-08-28) |
| 版本节奏 | 约 6-8 周一个次版本 | 节奏放缓(3.5.1 于 2025-04,3.6.0 于 2026-03) | 活跃,次版本 + 补丁并行 | 约半年一个大版本 |
| 架构与角色 | OTel Collector 发行版,多角色单二进制,外接分布式存储 | Spring Boot 单体服务端 + 存储插件 | 查询/分发/压缩组件分离,依赖对象存储存原始 span | Java 一体化后端 + BanyanDB/存储选项,自带 UI 与告警 |
| 采集协议 | OTLP 原生 + Zipkin/Jaeger 协议兼容 | Zipkin 协议为核(另有 OTLP 经 collector 转换) | OTLP/Jaeger/Zipkin 均可接收 | 自有 agent(探针)为主 + OTLP 接入 |
7.3 选型建议
已在 OpenTelemetry 路线上、要一个中性且治理成熟的多角色链路后端,选 Jaeger;存量 Zipkin 埋点且场景简单、希望轻量运维可继续用 Zipkin;指标日志链路已全押 Grafana 栈、想用对象存储把链路保存成本压到最低,选 Tempo;要开箱即用的 APM 一体化能力(探针、拓扑、指标、告警一体)且接受其自有 agent 体系,选 SkyWalking。
八、参考链接
- 官网:https://www.jaegertracing.io/
- 官方文档 2.22:https://www.jaegertracing.io/docs/2.22/
- Getting Started:https://www.jaegertracing.io/docs/2.22/getting-started/
- Architecture:https://www.jaegertracing.io/docs/2.22/architecture/
- Storage Backends:https://www.jaegertracing.io/docs/2.22/storage/
- Configuration:https://www.jaegertracing.io/docs/2.22/configuration/
- Download(二进制分发):https://www.jaegertracing.io/download/
- GitHub 仓库:https://github.com/jaegertracing/jaeger
- HotROD 示例:https://github.com/jaegertracing/jaeger/tree/main/examples/hotrod
- CNCF 项目页:https://www.cncf.io/projects/jaeger/
- CNCF 毕业公告(2019-10-31):https://www.cncf.io/announcements/2019/10/31/cloud-native-computing-foundation-announces-jaeger-graduation/