温馨提示×

debian filebeat如何过滤

小樊
34
2026-09-21 16:59:59
栏目: 智能运维

在 Debian 上,Filebeat 的“过滤”通常分几种场景,下面按常见用法给你说明,并给出配置示例。


一、Filebeat 能做什么过滤?

Filebeat 本身不是重度处理器(不像 Logstash),但它支持:

  1. 输入过滤(inputs)
    • 只采集某些文件
    • 排除某些文件
  2. 处理器(processors)
    • 丢弃事件(drop_event)
    • 丢弃字段(drop_fields)
    • 条件过滤(if/then)
  3. 输出过滤(output)
    • 输出到不同地方(如只发错误日志到 ES)

二、按文件过滤(最常用)

示例:只采集 Nginx 访问日志

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
  exclude_files: ['.gz$']

排除某些文件

exclude_files: ['\.tmp$', 'error\.log']

三、按内容过滤(processors)

1️⃣ 丢弃包含某关键字的日志

processors:
  - drop_event:
      when:
        contains:
          message: "healthcheck"

2️⃣ 只保留 ERROR 日志

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

3️⃣ 丢弃某些字段(减小体积)

processors:
  - drop_fields:
      fields: ["agent.version", "ecs.version"]

四、条件过滤(if / then)

processors:
  - if:
      contains:
        message: "DEBUG"
    then:
      - drop_event: {}

五、多行日志过滤(Java / 堆栈)

multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after

六、不同日志发不同地方(输出过滤)

output.elasticsearch:
  hosts: ["localhost:9200"]
  indices:
    - index: "nginx-%{+yyyy.MM.dd}"
      when.contains:
        log.file.path: "/var/log/nginx"

七、Debian 上配置文件位置

/etc/filebeat/filebeat.yml

重启:

sudo systemctl restart filebeat

测试配置:

sudo filebeat test config
sudo filebeat test output

八、常见误区

❌ Filebeat 不能做复杂正则替换
✅ 复杂处理建议:

  • Filebeat → Logstash → ES
  • 或 Filebeat → ES Ingest Pipeline

如果你能告诉我:

  • 日志类型(Nginx / Java / 系统日志)
  • 想“过滤掉什么”或“只保留什么”

我可以直接给你一份可复制的 filebeat.yml。

0 踩