温馨提示×

centos filebeat怎么过滤日志

小樊
44
2026-09-08 23:32:41
栏目: 智能运维

在 CentOS 上使用 Filebeat 过滤日志,通常有以下几种常见方式,按使用频率和场景给你说明:


一、使用 Filebeat 自身过滤(processors)

Filebeat 支持 processors,可以在采集阶段就过滤、丢弃或修改日志。

1️⃣ 丢弃指定日志(drop_event)

例如:丢弃包含 "DEBUG" 的日志

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

2️⃣ 只保留某些日志(keep)

例如:只保留包含 "ERROR""WARN"

processors:
  - drop_event.when.not.contains:
      message: ["ERROR", "WARN"]

3️⃣ 按字段过滤

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

二、使用 include / exclude 规则(最常用)

1️⃣ 排除文件

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

2️⃣ 排除某些行(正则)

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

✅ 实际示例:

filebeat.inputs:
- type: log
  paths:
    - /var/log/nginx/access.log
  exclude_lines: ['200']

三、使用 multiline(多行日志合并)

比如 Java 异常堆栈:

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

四、使用 Filebeat + Logstash(高级过滤)

如果你有 Logstash,推荐在 Logstash 里做复杂过滤。

Filebeat 输出到 Logstash

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

Logstash 过滤示例

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

五、按日志类型分离(fields / tags)

filebeat.inputs:
- type: log
  paths:
    - /var/log/app/error.log
  fields:
    log_type: error
  fields_under_root: true

在 Elasticsearch / Kibana 中可按 log_type 过滤。


六、常用配置检查命令(CentOS)

# 校验配置
filebeat test config

# 查看运行状态
systemctl status filebeat

# 重启
systemctl restart filebeat

七、典型示例(CentOS + Nginx)

filebeat.inputs:
- type: log
  paths:
    - /var/log/nginx/*.log
  exclude_lines: ['^#']
  exclude_files: ['.gz$']

processors:
  - drop_event.when.contains:
      message: "GET /health"

如果你是 具体某类日志(Nginx / Java / Docker / 系统日志),可以告诉我,我可以给你一份可直接用的配置

0