首页/云/可观测性速查/Exemplars:把指标关联到链路
Prometheus 与采集64 条

Exemplars:把指标关联到链路

Exemplar 是附加在样本上的标注元数据,典型做法是携带 trace_id:看到延迟毛刺时从指标直接跳到对应链路,把指标与追踪两支柱串起来。

可观测性速查云更新于 2026-10-13

Exemplar 是什么

Exemplar 是附加在样本上的标注元数据,典型做法是携带 trace_id:看到延迟毛刺时从指标直接跳到对应链路,把指标与追踪两支柱串起来。它常用在延迟直方图上,价值在于把「这里慢了」与「慢在哪一步」之间的距离缩短成一次点击。要让它工作,链路上三处必须同时具备条件:服务端开启 exemplar 存储、抓取侧协商到 OpenMetrics 格式、展示侧开启 Exemplars 显示。

基本信息

服务端开关--enable-feature=exemplar-storage,默认关闭
抓取侧条件需协商到 OpenMetrics 格式
应用侧来源OpenTelemetry 客户端观测直方图时可自动携带 trace_id
展示侧Grafana 面板开启 Exemplars 开关
存储特点容量单独限制,与常规样本相互独立

典型使用场景

  • 延迟毛刺定位:从直方图上的 exemplar 点跳到对应链路,看清慢在哪一步
  • 失败请求排查:错误计数器附带出错请求的 trace_id,快速捞到具体调用
  • 指标链路闭环:指标侧发现问题、链路侧定位原因,减少中间猜测
  • 采样抽查:抽看 exemplar 对应的链路,确认采样策略没有漏掉关键路径
  • 团队演示:用联查路径降低新人对工具链的使用门槛

使用要点

  • 只给关键延迟直方图附带 exemplar,控制存储开销并保持信噪比
  • 确认抓取走的是 OpenMetrics 格式,否则收不到 exemplar
  • exemplar 不会出现在普通查询结果里,只能在支持它的界面中查看
  • 存储容量独立且有限,海量直方图都带 exemplar 会互相挤占
  • 应用侧要保证 trace_id 与链路后端使用的是同一个标识

启用与使用

启用与使用
# 服务端开启 exemplar 存储(默认关闭)
prometheus --enable-feature=exemplar-storage

# 抓取侧:协商到 OpenMetrics 格式才会收到 exemplar
# 应用侧:观测直方图时附带当前 trace_id(OpenTelemetry 客户端可自动携带)
# 展示侧:Grafana 面板开启 Exemplars 开关,毛刺点可跳转到链路后端

四处条件

环节需要做什么不满足时的表现
服务端开启 exemplar 存储接收后丢弃,界面看不到标记
抓取侧协商 OpenMetrics 格式样本里根本没有 exemplar
应用侧观测时附带 trace_id有标记但无法跳转链路
展示侧面板开启 Exemplars数据在但看不到入口
链路后端标识保持一致跳转过去查不到对应链路
通常只给关键延迟直方图附带 exemplar:既能覆盖主要排查路径,又能把存储开销控制在可接受范围内。

易错点

  • exemplar 存储容量独立且有限,海量直方图都附带 exemplar 会互相挤占,可查数量下降
  • exemplar 不进入普通查询结果,只能在支持它的界面查看,用它做统计口径会踩空
  • 抓取侧没协商到 OpenMetrics 格式时,应用侧埋了 trace_id 也传不过来
  • 应用侧使用的标识与链路后端不一致,跳转过去查不到对应链路

数据来源与参考

  • Prometheus 文档 · exemplar storage
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌