Ubuntu Filebeat自定义配置文件指南
Filebeat是Elastic Stack中的轻量级日志采集器,通过自定义配置文件可实现灵活的日志收集、处理与转发。Ubuntu系统中,Filebeat的主配置文件默认位于/etc/filebeat/filebeat.yml,所有自定义设置均在此文件中完成。
通过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']
通过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"]
处理器用于在日志发送前修改事件数据(如添加字段、删除敏感信息、解析JSON)。常见处理器示例:
通过add_fields处理器向每个事件添加元数据(如environment、service):
processors:
- add_fields:
target: "" # 空字符串表示添加到根层级
fields:
environment: "production"
service: "web_server"
若日志为JSON格式,使用json处理器提取字段并提升到事件根层级:
processors:
- json:
keys_under_root: true # 将JSON字段提升到根层级
add_error_key: true # 解析失败时添加`error`字段
message_key: "message" # 指定日志消息的JSON键名
通过drop_fields处理器移除敏感信息(如密码、token):
processors:
- drop_fields:
fields: ["password", "access_token"]
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*"]
修改配置文件后,使用以下命令验证语法是否正确:
sudo filebeat test config -e
若输出无错误,则配置语法正确。
使配置生效,重启Filebeat服务:
sudo systemctl restart filebeat
sudo systemctl status filebeat
sudo journalctl -u filebeat -f
以下是一个综合示例,包含输入、输出、处理器及模块配置:
# ============================== 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官方文档。