采样(Sampling)是控制遥测数据量、降低存储与传输成本的重要手段,OpenTelemetry 提供头部采样与尾部采样两类策略。
- 头部采样(Head Sampling):在请求刚开始时即做出采样决策,基于 trace ID 与采样比例决定是否采集。优点是配置简单、开销低,且能保证整条链路完整;缺点是无法依据链路内容(如是否出错)做决策。
- 尾部采样(Tail Sampling):在链路的所有或大部分 Span 收集完成后,再依据整体特征做决策。它支持"始终采样含错误的链路""按延迟采样""按特定属性采样"等精细策略,适合大型系统;代价是组件需要有状态、资源消耗更高。
- 配置位置:头部采样通常在 SDK 侧配置;尾部采样一般在 Collector 中通过 tail sampling processor 实现。对于高流量系统,官方建议两者结合——先以头部采样降低进入管道的数据量,再以尾部采样做精细筛选。