在 Debian 下使用 Filebeat 过滤数据,通常有三种常见方式:
下面按场景说明。
Filebeat 支持在 filebeat.yml 中直接使用 processors 来过滤、丢弃、修改字段。
例如:丢弃包含 DEBUG 的日志
filebeat.inputs:
- type: log
paths:
- /var/log/app/*.log
processors:
- drop_event.when.contains:
message: "DEBUG"
processors:
- drop_event.when.not.contains:
message: "ERROR"
processors:
- drop_event.when.equal:
level: "info"
processors:
- drop_event.when.regexp:
log.file.path: "/var/log/app/test.log"
如果你只是不想采集某些文件:
filebeat.inputs:
- type: log
paths:
- /var/log/app/*.log
exclude_files: ['\.gz$', 'test.log']
或只看某些文件:
include_lines: ['^ERROR', '^WARN']
exclude_lines: ['^DEBUG']
⚠️ 这是行级别过滤,不是字段级。
Filebeat → Logstash → ES
output.logstash:
hosts: ["localhost:5044"]
filter {
if [message] =~ "DEBUG" {
drop {}
}
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:time} %{LOGLEVEL:level} %{GREEDYDATA:msg}" }
}
}
✅ 适合:
| 功能 | 示例 |
|---|---|
| 丢弃事件 | drop_event |
| 添加字段 | add_fields |
| 删除字段 | drop_fields |
| 条件判断 | when.contains / when.regexp |
| 修改字段 | dissect / script |
# 校验配置
filebeat test config
# 查看 processors 是否生效
filebeat export config
# 重启
systemctl restart filebeat
| 场景 | 推荐 |
|---|---|
| 简单过滤 | Filebeat processors |
| JSON 日志 | decode_json_fields |
| 复杂解析 | Filebeat + Logstash |
| 高性能 | 尽量在 Filebeat 丢弃无用日志 |
如果你愿意,可以贴出:
filebeat.yml我可以帮你写精准的过滤配置。