跳到主要内容

OpenTelemetry Collector处理器

简介

OpenTelemetry Collector处理器(Processor)是Collector流水线中的核心组件,负责对接收到的遥测数据(如指标、日志、跟踪)进行转换、过滤或增强。它们位于接收器(Receiver)和导出器(Exporter)之间,提供了一种灵活的数据处理机制。

为什么需要处理器?

处理器可以解决以下问题:

  • 数据清洗:过滤掉不需要的字段或数据。
  • 数据丰富:添加上下文信息(如环境标签)。
  • 数据转换:修改格式或聚合指标。

核心处理器类型

1. 批处理处理器(Batch)

将多个数据点打包成批次,减少导出调用次数。

yaml
processors:
batch:
timeout: 5s
send_batch_size: 100

2. 属性处理器(Attributes)

修改数据的属性(键值对):

yaml
processors:
attributes:
actions:
- key: environment
value: production
action: insert

输入{"traceId": "abc", "attributes": {"user": "Alice"}}
输出{"traceId": "abc", "attributes": {"user": "Alice", "environment": "production"}}

3. 过滤处理器(Filter)

根据条件过滤数据:

yaml
processors:
filter:
logs:
exclude:
match_type: strict
resource_attributes:
- key: env
value: debug

实际案例:电商应用监控

假设我们需要监控一个电商服务:

  1. 过滤掉健康检查的请求
  2. 为所有请求添加 service.name 属性
  3. 批量发送数据到后端
yaml
processors:
filter:
spans:
exclude:
match_type: strict
attributes:
- key: http.path
value: /healthcheck
attributes:
actions:
- key: service.name
value: checkout-service
action: upsert
batch:
timeout: 10s

处理器流水线示例

常见问题

处理器顺序很重要!

处理器的执行顺序由配置文件中的声明顺序决定。例如,先过滤再批量处理通常比反过来更高效。

总结

  • 处理器是OpenTelemetry Collector的数据处理单元
  • 常用类型包括批处理、属性修改和过滤
  • 可通过组合处理器实现复杂的数据流水线

延伸学习

  1. 尝试在本地Collector配置中添加一个属性处理器
  2. 使用 logging 导出器调试处理器效果
  3. 官方文档:Processor README