温馨提示×

debian下filebeat如何过滤数据

小樊
51
2026-09-27 15:29:17
栏目: 智能运维

在 Debian 下使用 Filebeat 过滤数据,通常有三种常见方式:

  1. 使用 Filebeat 自身的 processors(推荐,轻量)
  2. 使用 Filebeat ⇒ Logstash ⇒ 过滤(功能最强)
  3. 使用 Filebeat 的 include/exclude 规则(简单筛选)

下面按场景说明。


一、使用 Filebeat 内置 processors(最常用)

Filebeat 支持在 filebeat.yml 中直接使用 processors 来过滤、丢弃、修改字段。

1️⃣ 丢弃某些日志(drop_event)

例如:丢弃包含 DEBUG 的日志

filebeat.inputs:
- type: log
  paths:
    - /var/log/app/*.log
  processors:
    - drop_event.when.contains:
        message: "DEBUG"

2️⃣ 只保留某些日志(不含则丢弃)

processors:
  - drop_event.when.not.contains:
      message: "ERROR"

3️⃣ 按字段过滤(如 level)

processors:
  - drop_event.when.equal:
      level: "info"

4️⃣ 丢弃某来源文件

processors:
  - drop_event.when.regexp:
      log.file.path: "/var/log/app/test.log"

二、使用 include / exclude(简单文件级过滤)

如果你只是不想采集某些文件:

filebeat.inputs:
- type: log
  paths:
    - /var/log/app/*.log
  exclude_files: ['\.gz$', 'test.log']

或只看某些文件:

include_lines: ['^ERROR', '^WARN']
exclude_lines: ['^DEBUG']

⚠️ 这是行级别过滤,不是字段级。


三、使用 Logstash 做复杂过滤(推荐生产环境)

Filebeat → Logstash → ES

Filebeat 配置(Debian)

output.logstash:
  hosts: ["localhost:5044"]

Logstash 过滤示例

filter {
  if [message] =~ "DEBUG" {
    drop {}
  }

  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:time} %{LOGLEVEL:level} %{GREEDYDATA:msg}" }
  }
}

✅ 适合:

  • 正则解析
  • 多条件判断
  • 字段丰富(geoip、user-agent)

四、常用 processors 速查

功能 示例
丢弃事件 drop_event
添加字段 add_fields
删除字段 drop_fields
条件判断 when.contains / when.regexp
修改字段 dissect / script

五、Debian 下常用命令

# 校验配置
filebeat test config

# 查看 processors 是否生效
filebeat export config

# 重启
systemctl restart filebeat

六、建议方案

场景 推荐
简单过滤 Filebeat processors
JSON 日志 decode_json_fields
复杂解析 Filebeat + Logstash
高性能 尽量在 Filebeat 丢弃无用日志

如果你愿意,可以贴出:

  • 日志样例
  • 当前 filebeat.yml
  • 想过滤什么

我可以帮你写精准的过滤配置。

0 踩