Processor 是什么
Processor 是 OpenTelemetry Collector 管道中间的处理环节:批处理(batch)攒批降低网络与后端开销,属性处理器(attributes)增删改字段做脱敏与统一,过滤处理器(filter)丢弃噪声数据,内存限制器(memory_limiter)保护进程自身。把采样、脱敏、过滤集中到 Collector 层统一治理,比要求每个服务各自改配置更省力,也更容易审计哪些字段被丢掉了。
基本信息
| 配置位置 | Collector 配置的 processors 段,并在 service.pipelines 中引用 |
|---|---|
| 常用处理器 | batch、memory_limiter、attributes、filter、tail_sampling |
| 执行顺序 | 按 pipelines 中列出的顺序依次执行 |
| 版本注意 | filter 已改用 OTTL 表达式,语法随版本演进 |
| 权限要求 | 配置文件修改与服务重启 |
典型使用场景
- 攒批发送:batch 把小批次合并,降低后端连接与写入压力
- 字段脱敏:删除客户端真实地址、用户标识等敏感属性
- 噪声过滤:丢掉健康检查与探针产生的 span,减少存储与干扰
- 资源属性统一:为一批服务补上环境、集群、服务名等资源属性
- 尾采样:先攒后判,按整条 trace 的结果决定是否保留
使用要点
- batch 与 memory_limiter 通常一起配置,避免攒批把内存顶满
- filter 表达式语法随版本演进,升级前用测试数据回归一遍
- 删字段不可逆,下游再也看不到原始值,确认后再生效
- 属性改写在 Collector 层集中完成,能避免每个服务重复配置
- 调整处理后要核对后端数据量变化,确认策略确实按预期生效
处理片段
处理片段
processors:
batch:
timeout: 5s
send_batch_size: 8192
attributes:
actions:
- key: http.client_ip
action: delete # 脱敏
- key: env
value: prod
action: insert
filter:
error_mode: ignore
traces:
span:
- 'attributes["url.path"] == "/healthz"' # 丢掉健康检查 span常用处理器
| 处理器 | 作用 | 注意 |
|---|---|---|
| batch | 攒批发送降低开销 | 与内存限制一起配置 |
| memory_limiter | 限制内存防 OOM | 建议放在处理链靠前位置 |
| attributes | 增删改属性字段 | 删除操作不可逆 |
| filter | 丢弃不需要的数据 | 表达式语法随版本变化 |
| tail_sampling | 按 trace 结果采样 | 需缓存整条 trace,内存占用高 |
过滤与脱敏集中收口之后,后端存储量与敏感字段风险会同时下降,这也是把处理器放在 Collector 而不是各服务里的主要原因。