背景
只做小比例入口采样,最想排查的错误请求也可能被丢掉。尾部采样可以根据已接收的 trace 内容决策,但需要付出缓存与等待成本。
核心判断
- 错误、慢请求和基础概率策略分别配置,给普通请求保留代表性样本。
- 同一 trace 的 spans 必须汇聚到同一尾采样实例。
- 按请求速率与决策窗口估算内存,监控缓存压力和丢弃情况。
最小示例
下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。
processors:
tail_sampling:
decision_wait: 10s
num_traces: 50000
policies:
- name: errors
type: status_code
status_code:
status_codes: [ERROR]
- name: slow
type: latency
latency:
threshold_ms: 1000
- name: baseline
type: probabilistic
probabilistic:
sampling_percentage: 5
边界与误区
示例是 Collector contrib 的处理器片段,需接入 traces pipeline。入口已经丢弃的 spans 无法被尾采样恢复,决策窗口也不能保证迟到 span 完整保留。
验证方式
发送成功、ERROR 状态和高延迟三类 trace,核对实际留存比例。扩容 Collector 时检查 trace 分片和完整性,而不只看导出吞吐。
小结
基础比例采样之外,应优先保留错误、超时和高价值业务请求。