Tempo 3.1 介绍与选型指南
Tempo 3.1 介绍与选型指南:官方资料溯源的 Grafana 系分布式追踪后端架构(读写分离与对象存储)、TraceQL 查询语言与 trace-derived metrics、vParquet5 存储格式、快速上手与适用限制,以及与 Jaeger、Zipkin、SigNoz、Elastic APM 的量化选型对比,并说明其与 Grafana LGTM 栈的集成关系。
Tempo 3.1 介绍与选型指南
目标:基于官方公开资料(GitHub 官方仓库 grafana/tempo 发行页与 README、Grafana 官方文档与博客)溯源介绍 Grafana Tempo 的定位、架构、功能与选型对比,本文不做本地安装与运行实测,所有版本与数据均标注来源与查询日期 2026-10-19。
一、信息基准
1.1 查询说明
- 查询日期:2026-10-19。
- 信息获取方式:纯官方资料溯源(github.com/grafana/tempo 发行页与 README、grafana.com 官方文档与官方博客),本文不做本地安装与运行实测。
- 版本结论:本次介绍的版本为 Grafana Tempo v3.1.0(2026-09-29 发布),为当前最新稳定 minor;3.0 线最新补丁为 v3.0.4(2026-10-16),2.x 线最新补丁为 v2.10.8(2026-08-13)。特别说明:Tempo 当前稳定线已是 3.x(v3.0.0 于 2026-05-28 打标、官方博客 2026-06-01 宣布 GA),本文按实查结果以 3.1 为介绍基准。
1.2 版本依据
| 项目 | 实查结果(2026-10-19) | 来源 |
|---|---|---|
| 最新稳定 minor | v3.1.0(2026-09-29) | github.com/grafana/tempo/releases |
| 3.0 线最新补丁 | v3.0.4(2026-10-16) | github.com/grafana/tempo/releases |
| 3.0 GA | v3.0.0 标签 2026-05-28;官方博客发布于 2026-06-01 | github.com/grafana/tempo/releases/tag/v3.0.0;grafana.com/blog/tempo-3-0-release-all-the-latest-features/ |
| 2.x 线末版补丁 | v2.10.8(2026-08-13) | github.com/grafana/tempo/releases |
| 代码仓库 | grafana/tempo | github.com/grafana/tempo |
| 开源许可 | AGPL-3.0-only(Apache-2.0 例外见 LICENSING.md) | 仓库 README License 段与 LICENSE 文件 |
| 社区活跃度 | 5.5k stars(shields.io 实查) | shields.io/github/stars/grafana/tempo |
1.3 官方来源清单
二、软件概述
本文介绍的是 Grafana Tempo v3.1.0(2026-09-29 发布,AGPL-3.0-only 开源)。
Grafana Tempo 是一个开源、易用、面向大规模场景的分布式追踪后端(tracing backend)。官方 README 概括其三个核心特征:成本高效——只需对象存储(S3、GCS、Azure Blob 或本地磁盘)即可运行,无需专门数据库;易运维——接收 Jaeger、Zipkin、Kafka 与 OpenTelemetry 等多种协议格式的批量数据,缓冲后写入对象存储;深度集成——与 Grafana、Prometheus、Loki 紧密协作(官方 README 实查)。
Tempo 由 Grafana Labs 主导,是 Grafana 官方可观测组合 LGTM 栈(Loki 日志、Grafana 可视化、Tempo 追踪、Mimir 指标)中的追踪组件:Loki/Grafana/Tempo/Mimir 四件套均以 AGPL-3.0 发布,共享相似的对象存储架构与部署模式。Tempo 的接收层、线协议与存储格式直接基于 OpenTelemetry 的标准与代码构建(官方 README「OpenTelemetry」一节实查)。
三、核心架构
3.1 存储与部署形态
- 对象存储为唯一持久层:Tempo 将 trace 数据以块(block)形式写入 S3/GCS/Azure 或本地磁盘,单二进制即可启动,这是其「廉价、易运维」定位的基础(官方 README 实查)。
- 单进程 all 模式与微服务模式:all 模式下一个进程包含全部功能模块(distributor、live-store、block-builder、querier、query-frontend、compactor 等);微服务模式按角色拆分横向扩展(官方仓库 example 目录提供 Docker Compose、Helm、Jsonnet 三类部署示例)。
- 3.0 新架构(读写分离):Tempo 3.0 用新写入架构取代旧 ingester——微服务模式下引入 Kafka 兼容系统作为写入缓冲,读路径与写路径彻底分离,官方称由此获得更高的可靠性与可扩展性并降低 TCO(官方发行说明与博客实查)。
3.2 数据流
数据经 distributor 接收(支持 OTLP、Jaeger、Zipkin、Kafka 等格式),缓冲后由写入路径构建为块写入对象存储;查询经 query-frontend 拆分并分发至 querier 从对象存储检索;compactor 负责块合并与压缩,vParquet5 为 3.1 起新写入块的默认存储格式(官方发行说明实查)。
3.3 查询语言与工具组件
| 组件 | 说明(官方 README/文档口径) |
|---|---|
| TraceQL | 受 LogQL/PromQL 启发的 trace 专用查询语言 |
| TraceQL metrics | 从 trace 派生指标并按任意维度聚合,3.0 起 GA |
| tempo-cli | 官方命令行工具(配置迁移、数据操作、redact 等) |
| tempo-vulture | 一致性校验工具:写入 trace 再多路径读回比对 |
四、功能特性
4.1 广泛的接收兼容性
官方 README 明确:Tempo 兼容 Jaeger、Zipkin、Kafka 与 OpenTelemetry 四类输入,接收层、线协议与存储格式直接复用 OpenTelemetry 标准组件,已有 OTel 埋点可以近乎零改造接入。
4.2 TraceQL 与 trace 派生指标
TraceQL 支持按属性定位具体 trace 与结构化检索;TraceQL metrics 在 3.0 转 GA,可对任意 TraceQL 查询结果按维度做运行时聚合,直接从追踪数据产出 RED 类指标,3.1 又加入 metrics 算术运算与采样感知外推(sampling-aware extrapolation),对采样环境的指标估算更准确(v3.1.0 发行说明实查)。
4.3 数据治理与性能剖析
- Trace redaction:3.0 引入按查询隐藏敏感 trace 数据的 CLI 命令与 API;3.1 扩展为基于查询的 redaction 并支持时间窗口分片执行(官方发行说明实查)。
- Span profiling:3.0 起通过 otelpyroscope 将 pprof 性能剖析数据关联到 trace span(官方发行说明实查)。
- metrics-generator 增强:按标签的基数限制、服务图过滤、面向采样环境的 span multiplier 等(官方 v3.0 发行说明实查)。
4.4 与 Grafana 生态的联动
Tempo 深度集成 Grafana:TraceQL 编辑器、Traces Drilldown(原 Explore Traces,免写查询的点选式 trace 分析应用)、日志-追踪互链等能力都在 Grafana 内呈现(官方 README 实查)。这也是「LGTM 栈一体化采购/自建」路径的核心卖点。
五、快速上手
以下步骤转述自官方 README 与官方文档,本文不做本地实测。
5.1 获取与运行
官方 README「Getting started with Tempo」指向 https://grafana.com/docs/tempo/latest/getting-started/ ,并在仓库 example/ 目录提供 Docker Compose、Helm、Jsonnet 三套部署示例(github.com/grafana/tempo/tree/main/example)。以 Docker Compose 为例,使用官方镜像 grafana/tempo,配置对象存储(本地磁盘即可起步)与接收端口后启动单进程 all 模式。
5.2 写入数据
Tempo 原生接收 OpenTelemetry 协议:将 OTLP exporter 的 endpoint 指向 Tempo 的 OTLP 接收端口(4317 gRPC / 4318 HTTP)即可写入;官方集成指南(https://grafana.com/docs/tempo/latest/guides/instrumentation/ )给出各语言 OTel 埋点对接 Tempo 的示例。
5.3 查询验证
在 Grafana 中添加 Tempo 数据源后,可用 TraceQL(如按 service.name 过滤)查询 trace,或使用 Traces Drilldown 做 RED 指标浏览;也可以通过 Tempo HTTP API 直接检索(官方文档转述)。
六、适用场景与限制
6.1 适用场景
- 大规模、成本敏感的追踪后端:只需对象存储,无需运维专门的查询数据库,存储成本随 S3 类服务线性可算。
- 已采用 Grafana 可观测体系(Prometheus/Loki/Grafana)的团队:LGTM 栈一体化,日志-指标-追踪互链体验完整。
- OpenTelemetry 标准化路线:接收层即 OTel,避免厂商协议锁定。
- 需要「从 trace 生成指标」的团队:TraceQL metrics GA 后可直接对追踪数据做运行时聚合与告警。
6.2 限制与注意事项
- AGPL-3.0 许可:对「修改后作为网络服务提供」的场景有开源义务,商业合规需先过法务(README License 段实查)。
- 3.0 是带破坏性变更的大版本:官方明确旧 ingester、legacy overrides、v2 块、OpenCensus 等需按迁移指南处理,升级前必须核对(v3.0 发行说明与迁移指南链接实查)。
- 无内置 UI:查询与可视化依赖 Grafana(UI 相关 issue 需提到 grafana/grafana 仓库)。
- 微服务模式引入 Kafka 兼容缓冲后,组件数量与运维面大于单机方案;小规模团队建议从 all 模式起步。
七、同类选型对比
7.1 候选概览
| 工具 | 定位 | 开源许可 |
|---|---|---|
| Grafana Tempo 3.1 | 对象存储型高规模追踪后端(LGTM 栈) | AGPL-3.0-only |
| Jaeger | CNCF 毕业的原生分布式追踪平台 | Apache-2.0(仓库 LICENSE 实查) |
| Zipkin | 老牌轻量分布式追踪系统 | Apache-2.0(shields 徽章实查) |
| SigNoz | 开源一体化可观测(trace+metrics+logs) | MIT 为主(ee/ 企业目录另按 ee/LICENSE,仓库 LICENSE 实查) |
| Elastic APM | Elastic Stack 内的 APM/追踪方案 | Apache-2.0 为主(x-pack 目录为 Elastic License,仓库 LICENSE.txt 实查) |
7.2 量化对比(2026-10-19 实查)
| 维度 | Tempo 3.1 | Jaeger | Zipkin | SigNoz | Elastic APM |
|---|---|---|---|---|---|
| GitHub stars | 5.5k(grafana/tempo) | 23k(jaegertracing/jaeger) | 17k(openzipkin/zipkin) | 32k(SigNoz/signoz) | 1.3k(elastic/apm-server) |
| 最近发版 | v3.1.0(2026-09-29) | v2.22.0 | v3.6.1 | v0.146.0 | apm-server v9.5.5 |
| 许可证 | AGPL-3.0-only | Apache-2.0 | Apache-2.0 | MIT 为主 + EE | Apache-2.0 + Elastic License |
| 存储依赖 | 仅对象存储(S3/GCS/Azure/本地盘) | 支持 Cassandra/Kafka/ES 等多后端 | 内嵌/ES、Cassandra、MySQL 等 | ClickHouse + PostgreSQL | Elasticsearch |
| 查询语言 | TraceQL + UI | Jaeger UI/API | Zipkin UI/API | 查询 UI(ClickHouse 底座) | Kibana/ES DSL |
| 生态归属 | Grafana LGTM 栈 | CNCF 毕业项目 | 独立社区 | SigNoz Inc. | Elastic |
(stars 与版本取自各项目 GitHub 仓库/releases 与 shields.io 实查;许可证取自各仓库 LICENSE 文件实查。)
7.3 选型建议
- 已有 Grafana + Prometheus/Loki 体系、追求大规模低成本存储的团队,Tempo 与现有栈咬合最紧,对象存储架构也最省运维,参见《Jaeger 2.22 介绍与选型指南》对比原生 CNCF 方案。
- 追踪协议历史包袱重(Jaeger/Zipkin 客户端存量)的团队,Tempo 与 Jaeger 均可平滑接收;若希望追踪后端本身有独立 UI、不绑 Grafana,Jaeger 更合适。
- 需要「追踪+指标+日志+仪表盘」一个开源仓库全包的中小团队,SigNoz 的一体化形态更省心,代价是定制深度不如各专精组件组合。
- 已自建 Elasticsearch 且深度使用 Kibana 的团队,Elastic APM 可以复用现有存储与安全体系;注意 x-pack 商业模块的许可边界。
- 历史最久、组件最轻的 Zipkin 适合轻量场景与教学,但新特性(派生指标、TraceQL 类查询语言)已明显落后于 Tempo/Jaeger 的演进节奏;如需了解其配置体系可参考《Zipkin 配置参数详解》。
八、参考链接
- 源码仓库:https://github.com/grafana/tempo
- 官方文档:https://grafana.com/docs/tempo/latest/
- 快速上手:https://grafana.com/docs/tempo/latest/getting-started/
- v3.1.0 发行说明:https://github.com/grafana/tempo/releases/tag/v3.1.0
- v3.0.0 标签页:https://github.com/grafana/tempo/releases/tag/v3.0.0
- Tempo 3.0 官方博客:https://grafana.com/blog/tempo-3-0-release-all-the-latest-features/
- 部署示例(Docker Compose/Helm/Jsonnet):https://github.com/grafana/tempo/tree/main/example
- Tempo 2.0 发布博客(2023-02-01):https://grafana.com/blog/2023/02/01/new-in-grafana-tempo-2.0-apache-parquet-as-the-default-storage-format-support-for-traceql/
- Jaeger 仓库:https://github.com/jaegertracing/jaeger
- Zipkin 仓库:https://github.com/openzipkin/zipkin
- SigNoz 仓库:https://github.com/SigNoz/signoz
- Elastic APM Server 仓库:https://github.com/elastic/apm-server