全量采集 Trace 在高流量系统中通常不可持续,纯随机低比例采样又可能漏掉罕见错误。采样设计应从希望保留的问题类型反推,而不是先定一个固定百分比。
理解两种采样点
头部采样在请求入口立即决定,开销低且链路决策一致,但无法预知最终状态。尾部采样在收集端看到完整 Trace 后决定,可优先保留错误和慢请求,却需要缓存并承担更高资源成本。
processors:
tail_sampling:
decision_wait: 10s
policies:
- name: errors
type: status_code
status_code: {status_codes: [ERROR]}
- name: slow
type: latency
latency: {threshold_ms: 2000}
建立分层策略
- 错误、超时和关键交易尽量完整保留
- 正常高频请求按稳定哈希抽样
- 健康检查和轮询可降到极低比例
- 对租户、路由等属性设置基数与隐私边界
监控采样器本身
观察接收、丢弃、导出失败、内存和 decision timeout。Collector 过载时的静默丢数会让故障现场恰好缺失。
收尾清单
用历史流量估算每天 span 数、压缩后字节和查询成本。定期回放已知事故,检查当前策略是否仍能保留诊断所需的完整链路。