头部采样是什么
头部采样在链路开始时决定是否记录:一旦决定,整条链路的所有环节都遵循同一结论。确定性比例采样按链路标识做哈希判断,因此同一请求在任何服务上都会算出相同结果,不会出现只有半条的链路。
代价与补偿
它的优点是成本可控、实现简单;代价是只能在起点判断,那些事后才发现重要的请求可能没被记录下来。因此常见做法是入口按比例采样,同时保证错误请求优先保留,让故障发生时仍然有样本可查。
基本信息
| 决策时机 | 链路开始时一次决定 |
|---|---|
| 决策方式 | 基于链路标识的确定性哈希 |
| 父级策略 | 存在上游决策时跟随上游 |
| 采样比例 | 按服务流量分层设置 |
典型使用场景
- 高流量服务:按较低比例采样,控制存储与传输成本
- 低流量服务:提高比例甚至全采样,保证可观测性
- 多环境差异:测试环境可全采样,生产按比例
- 错误优先:失败请求不受比例限制地保留
- 灰度期观察:新版本按较高比例采样,便于前后对比
采样配置示例
采样配置示例
# 跟随上游决策,入口流量按 10% 采样
OTEL_TRACES_SAMPLER=parentbased_traceidratio
OTEL_TRACES_SAMPLER_ARG=0.1
# 其他常用取值:always_on、always_off、traceidratio、parentbased_always_on采样策略对照
| 策略 | 含义 | 适用 |
|---|---|---|
| 全采样 | 记录所有链路 | 低流量或测试环境 |
| 比例采样 | 按比例记录 | 高流量生产环境 |
| 跟随上游 | 以上游决策为准 | 多服务协同 |
| 比例加例外 | 在比例之上保留重点请求 | 生产环境的常用组合 |
落地约定
- 采样决策统一在入口产生,下游只跟随不重新判断
- 比例按服务流量分层设置,避免低流量服务采不到样本
- 采样参数纳入配置管理,比例调整可追溯
比例采样按链路标识做确定性哈希:同一请求在任何服务上结论一致,因此不会出现被截断的调用树。
各服务独立随机采样会让上下游结论冲突:入口统一决策并向下传播才是正确做法。