可行性与总体思路
可以。Filebeat 能在 Ubuntu 上读取并过滤系统及应用的日志(如 /var/log/syslog、/var/log/auth.log、/var/log/apache2/*.log),支持按路径、正则、时间、大小等进行采集侧过滤,也可启用 System 模块做结构化解析;复杂条件过滤与丰富处理能力建议交由 Logstash 或 Elasticsearch Ingest Pipeline 完成。
采集侧过滤常用配置
- 按路径包含/排除
- 包含:paths: [“/var/log/syslog”, “/var/log/apache2/*.log”]
- 排除文件:exclude_files: [“.gz", ".zip”]
- 按行内容包含/排除(正则)
- 排除含 “ERROR” 或 “WARN” 的行:exclude_lines: [‘ERROR’, ‘WARN’]
- 仅采集含 “CRON” 的行:include_lines: [‘CRON’]
- 按时间/大小减少采集
- 忽略 72 小时前的旧文件:ignore_older: 72h
- 按文件通配与多输入
- 多日志源:paths: [“/var/log/.log", "/var/log/nginx/.log”]
- 快速示例(采集 syslog,排除 DEBUG 与空行)
- filebeat.inputs:
- type: log
enabled: true
paths: [“/var/log/syslog”]
exclude_lines: [‘^DEBUG’, ‘^$’]
- output.elasticsearch:
- hosts: [“localhost:9200”]
说明:上述配置均写入 /etc/filebeat/filebeat.yml,修改后重启 Filebeat 生效。
使用模块与处理器增强过滤
- 启用 System 模块并加载默认仪表盘/管道
- 命令:filebeat modules enable system
- 初始化:filebeat setup(将创建索引模板、Kibana 仪表盘等)
- 说明:System 模块可对 syslog、auth、dpkg 等进行结构化解析,便于后续在 Kibana 中按字段过滤与可视化。
- 使用 Processors 做字段级处理
- 示例:processors:
- add_cloud_metadata: ~
- drop_event.when.regexp.message: ‘^DEBUG’ # 丢弃匹配正则的事件
- add_fields:
target: ‘’
fields:
env: prod
说明:模块负责解析,processors 负责轻量条件处理;复杂逻辑建议放到 Logstash/Ingest。
复杂过滤建议与部署路径
- 场景建议
- 多条件组合、跨日志关联、grok 解析、丰富字段处理等,优先在 Logstash 的 filter 阶段完成;或在 Elasticsearch Ingest Pipeline 中做二次处理。
- 典型部署
- Filebeat → Logstash(5044)→ Elasticsearch:Filebeat 仅做采集与简单过滤,Logstash 负责过滤/解析/丰富,再写入 ES。
- Filebeat → Elasticsearch:启用模块 + Ingest Pipeline 实现解析与过滤,减少组件依赖。
- 快速 Logstash 片段(按字段条件丢弃)
- filter {
if [log][syslog][severity] == “debug” { drop {} }
}
说明:Logstash 适合复杂过滤与处理;Filebeat 轻量采集与前置过滤可减轻后端压力。