首页/云/可观测性速查/头部采样:在起点决定是否记录

头部采样:在起点决定是否记录

头部采样在 trace 开始时决定:parent-based 尊重上游决定,ratio 采样按 trace_id 哈希确定且全链路一致;成本可控但采不到“事后才重要”的链路。

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

头部采样是什么

头部采样在链路开始时决定是否记录:一旦决定,整条链路的所有环节都遵循同一结论。确定性比例采样按链路标识做哈希判断,因此同一请求在任何服务上都会算出相同结果,不会出现只有半条的链路。

代价与补偿

它的优点是成本可控、实现简单;代价是只能在起点判断,那些事后才发现重要的请求可能没被记录下来。因此常见做法是入口按比例采样,同时保证错误请求优先保留,让故障发生时仍然有样本可查。

基本信息

决策时机链路开始时一次决定
决策方式基于链路标识的确定性哈希
父级策略存在上游决策时跟随上游
采样比例按服务流量分层设置

典型使用场景

  • 高流量服务:按较低比例采样,控制存储与传输成本
  • 低流量服务:提高比例甚至全采样,保证可观测性
  • 多环境差异:测试环境可全采样,生产按比例
  • 错误优先:失败请求不受比例限制地保留
  • 灰度期观察:新版本按较高比例采样,便于前后对比

采样配置示例

采样配置示例
# 跟随上游决策,入口流量按 10% 采样
OTEL_TRACES_SAMPLER=parentbased_traceidratio
OTEL_TRACES_SAMPLER_ARG=0.1

# 其他常用取值:always_on、always_off、traceidratio、parentbased_always_on

采样策略对照

策略含义适用
全采样记录所有链路低流量或测试环境
比例采样按比例记录高流量生产环境
跟随上游以上游决策为准多服务协同
比例加例外在比例之上保留重点请求生产环境的常用组合

落地约定

  • 采样决策统一在入口产生,下游只跟随不重新判断
  • 比例按服务流量分层设置,避免低流量服务采不到样本
  • 采样参数纳入配置管理,比例调整可追溯
比例采样按链路标识做确定性哈希:同一请求在任何服务上结论一致,因此不会出现被截断的调用树。
各服务独立随机采样会让上下游结论冲突:入口统一决策并向下传播才是正确做法。

易错点

  • 每个服务各自随机决定:链路被截断成互不相连的片段
  • 低流量服务沿用低比例:可能几天都采不到一条样本
  • 忽略错误样本:故障期间恰好没被采样,链路形同虚设
  • 采样参数到处硬编码:调整比例要逐个服务改代码

数据来源与参考

  • OpenTelemetry 官方文档 · Sampling
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌