ubuntu

ubuntu filebeat自定义配置文件

小樊
48
2025-10-12 15:33:19
栏目: 智能运维

Ubuntu Filebeat自定义配置文件指南

Filebeat是Elastic Stack中的轻量级日志采集器,通过自定义配置文件可实现灵活的日志收集、处理与转发。Ubuntu系统中,Filebeat的主配置文件默认位于/etc/filebeat/filebeat.yml,所有自定义设置均在此文件中完成。

1. 修改基础配置:输入与输出

1.1 配置日志输入源

通过filebeat.inputs字段定义要监控的日志文件路径、类型及采集规则。例如,收集系统日志(syslog)和Apache日志(access.log/error.log):

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/syslog
    - /var/log/apache2/*.log
  # 可选:忽略旧日志(72小时内未修改的文件)
  ignore_older: 72h
  # 可选:排除包含特定关键词的行(如ERROR/WARN)
  exclude_lines: ['ERROR', 'WARN']

1.2 配置输出目标

通过output字段指定日志转发目标(如Elasticsearch、Logstash)。以下是输出到Elasticsearch的示例,包含索引名称自定义:

output.elasticsearch:
  hosts: ["localhost:9200"]  # Elasticsearch地址
  index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"  # 索引名称格式(含Filebeat版本和日期)

若输出到Logstash,需指定Logstash地址:

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

2. 高级自定义:处理器(Processors)

处理器用于在日志发送前修改事件数据(如添加字段、删除敏感信息、解析JSON)。常见处理器示例:

2.1 添加自定义字段

通过add_fields处理器向每个事件添加元数据(如environmentservice):

processors:
- add_fields:
    target: ""  # 空字符串表示添加到根层级
    fields:
      environment: "production"
      service: "web_server"

2.2 解析JSON日志

若日志为JSON格式,使用json处理器提取字段并提升到事件根层级:

processors:
- json:
    keys_under_root: true  # 将JSON字段提升到根层级
    add_error_key: true    # 解析失败时添加`error`字段
    message_key: "message" # 指定日志消息的JSON键名

2.3 删除敏感字段

通过drop_fields处理器移除敏感信息(如密码、token):

processors:
- drop_fields:
    fields: ["password", "access_token"]

3. 启用官方模块(简化常见场景配置)

Filebeat提供官方模块(如Nginx、MySQL、Redis),内置预定义的输入路径、处理器和索引模板,可快速启用。例如,启用Nginx模块:

# 启用Nginx模块(访问日志和错误日志)
sudo filebeat modules enable nginx

启用后,模块配置文件位于/etc/filebeat/modules.d/nginx.yml,可根据需求修改:

- module: nginx
  access:
    enabled: true
    var.paths: ["/var/log/nginx/access.log*"]
  error:
    enabled: true
    var.paths: ["/var/log/nginx/error.log*"]

4. 验证与重启配置

4.1 检查配置语法

修改配置文件后,使用以下命令验证语法是否正确:

sudo filebeat test config -e

若输出无错误,则配置语法正确。

4.2 重启Filebeat服务

使配置生效,重启Filebeat服务:

sudo systemctl restart filebeat

4.3 查看服务状态与日志

5. 示例:完整自定义配置文件

以下是一个综合示例,包含输入、输出、处理器及模块配置:

# ============================== Filebeat inputs ===============================
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/syslog
    - /var/log/apache2/*.log
  processors:
    - add_fields:
        target: ""
        fields:
          environment: "production"
          service: "web_server"
    - drop_fields:
        fields: ["password", "access_token"]

# ============================== Filebeat output ===============================
output.elasticsearch:
  hosts: ["localhost:9200"]
  index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"

# ============================== Filebeat modules ==============================
filebeat.modules:
- module: nginx
  access:
    enabled: true
    var.paths: ["/var/log/nginx/access.log*"]
  error:
    enabled: true
    var.paths: ["/var/log/nginx/error.log*"]

通过以上步骤,可完成Ubuntu系统中Filebeat的自定义配置,满足不同日志采集与处理需求。如需更高级的功能(如自定义模块、字段映射),可参考Filebeat官方文档。

0
看了该问题的人还看了