Processors 是什么
Processors 是 Filebeat 在发送事件前执行的轻量处理链:加字段、补主机元数据、丢弃噪声、解析 JSON、按分隔符切分字段。它把过去必须在 Logstash 里做的事前移到采集端,少一跳网络、少一层资源消耗。处理器自上而下执行,写在前面的先跑,因此「先丢噪声再解析」能省下大量 CPU。
基本信息
| 配置位置 | filebeat.yml 的 processors 列表 |
|---|---|
| 常用处理器 | add_fields、add_host_metadata、drop_event、decode_json_fields、dissect |
| 执行顺序 | 按列表自上而下依次执行 |
| 适用版本 | Filebeat 7.x / 8.x |
| 权限要求 | 配置与日志文件的读取权限 |
典型使用场景
- 环境标记:为不同机器补上环境与集群字段,便于多维过滤与分组
- 健康检查降噪:丢弃探针与健康检查访问日志,直接降低写入量
- 结构化解析:把 JSON 日志摊平成字段,支持按字段精确检索
- 主机元数据:补齐主机名、操作系统、地址,方便定位日志来源
- 敏感内容处理:去掉不该入库的字段,降低合规与泄露风险
使用要点
- drop_event 放在解析之前,先丢再解析最省资源
- decode_json_fields 只对确定是 JSON 的消息启用,避免大量错误字段
- 改完配置先用 filebeat test config 与 test output 验证再重启
- 处理器链越长越难排查,重量级加工仍应交给集中处理层
- 上线前用一条真实日志走查,确认目标字段的名称与类型
常用处理器组合
常用处理器组合
processors:
- add_host_metadata: ~
- add_fields:
target: ""
fields: { env: prod, cluster: dc1 }
- drop_event.when.contains:
message: "GET /healthz"
- decode_json_fields:
fields: ["message"]
target: ""
overwrite_keys: true常见处理器
| 处理器 | 作用 | 注意 |
|---|---|---|
| add_fields | 补充固定字段 | 字段名要与下游映射保持一致 |
| drop_event | 条件丢弃事件 | 条件写宽会丢掉有效日志 |
| decode_json_fields | 解析 JSON 消息 | 非 JSON 行会产生错误字段 |
| add_host_metadata | 补主机元信息 | 容器环境需额外配置才能拿到宿主机信息 |
| dissect | 按分隔符切分 | 比正则轻量,适合格式固定的日志 |
处理器顺序同时决定成本与结果:把过滤噪声排在解析之前,既省 CPU,也让下游少收无用事件。