遥测采样是什么
采样是针对量大且可丢弃数据的成本控制手段。三类信号的采样方式并不相同:指标按抓取间隔天然降采样,间隔决定分辨率与存储量;日志可按级别过滤或按比例抽样,抽样后无法回答精确计数类问题;链路采样决定成本与可见性,头部采样在上报前决定、尾部采样在链路结束后按结果决定。理清这层差别,才能在成本与可观测性之间做出有依据的取舍。
基本信息
| 指标 | 按抓取间隔聚合,常见 15 秒到 1 分钟 |
|---|---|
| 日志 | 按级别过滤、按比例抽样、按来源限流 |
| 链路 | 头部采样(概率)或尾部采样(按结果) |
| 取舍原则 | 先保证关键错误与关键路径可见,再压缩普通流量 |
典型使用场景
- 采集间隔调优:核心指标用短间隔,容量类指标用长间隔
- 日志降量:把高频无信息量的成功日志降级或抽样
- 链路降本:高流量服务降低采样率,保留错误与慢请求
- 尾部采样:链路结束后按错误或延迟条件决定是否保留
- 成本核算:按采样率反推存储与带宽需求
OpenTelemetry 采样环境变量
OpenTelemetry 采样环境变量
export OTEL_TRACES_SAMPLER=parentbased_traceidratio
export OTEL_TRACES_SAMPLER_ARG=0.1 # 保留 10% 链路
export OTEL_SERVICE_NAME=order-api
# 日志侧通常用采集器过滤而不是应用内抽样
# Promtail 示例:只保留 warn 及以上
export LOG_LEVEL=warn
# 指标侧控制间隔:抓取配置里的 scrape_interval
# 间隔越短序列越密,存储与查询代价同步上升三类信号的采样方式
| 信号 | 采样方式 | 注意事项 |
|---|---|---|
| 指标 | 按抓取间隔聚合(15s / 1m) | 间隔越短分辨率越高、成本越高 |
| 日志 | 按级别过滤或按比例抽样 | 抽样后不能再做精确计数 |
| 链路 | 头部概率采样或尾部结果采样 | 低采样率会漏掉低频错误路径 |
| 事件 | 一般不采样 | 低频高价值,通常全量保留 |
先采样再上报是成本控制的起点:在采集端丢弃比在后端存储再删除便宜得多,但丢弃是不可逆的,采样策略变更前先确认排障需求。
错误链路通常单独提高采样率或全量保留:尾部采样按状态码、错误标记或延迟阈值决定保留,能在降本的同时保住排障样本。