1. 安装Filebeat
在CentOS上安装Filebeat,推荐使用包管理器(如yum)以确保依赖项正确安装:
sudo yum install filebeat -y
2. 配置Filebeat采集特定日志
Filebeat的核心配置文件位于/etc/filebeat/filebeat.yml,需修改以下关键部分:
filebeat.inputs部分,通过paths参数定义要采集的日志文件路径。支持通配符(如*.log)和目录(如/var/log/myapp/),可同时监控多个路径。例如:filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/myapp/*.log # 监控myapp目录下所有.log文件
- /var/log/secure # 监控系统安全日志
fields参数为日志事件添加业务标识(如application、environment),便于后续分类检索。例如:filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/myapp/*.log
fields:
application: myapp # 自定义应用名称字段
environment: production # 自定义环境字段
fields_under_root: true # 将自定义字段提升至事件根层级
exclude_files参数排除特定文件(如压缩日志.gz),减少不必要的采集。例如:filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
exclude_files: ['\.gz$'] # 排除所有.gz结尾的文件
3. 解析特定日志格式
若日志为结构化格式(如JSON、Syslog)或需要提取特定字段,可通过processors参数进行处理:
json.keys_under_root将JSON字段提升至事件根层级,便于直接检索。例如:filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/myapp/json.log
json.keys_under_root: true # 将JSON字段转为事件根字段
json.add_error_key: true # 添加error字段记录解析错误
decode_syslog处理器解析Syslog格式(默认端口514),提取主机名、优先级等信息。例如:filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/messages
processors:
- decode_syslog: # 解析Syslog格式
port: 514
dissect处理器通过预定义格式提取日志中的特定字段(如Nginx访问日志)。例如,若日志格式为%{remote_addr} - %{user} [%{time_local}] "%{request}" %{status} %{body_bytes_sent},配置如下:processors:
- dissect:
tokenizer: '%{remote_addr} - %{user} [%{time_local}] "%{request}" %{status} %{body_bytes_sent}'
field: "message" # 原始日志字段
target_prefix: "" # 提取的字段存入根层级(无前缀)
4. 配置输出目标
将采集的日志发送到目标存储系统(如Elasticsearch、Logstash),以下为常见配置:
%{+yyyy.MM.dd}生成日期索引)。例如:output.elasticsearch:
hosts: ["localhost:9200"] # Elasticsearch地址
index: "myapp-logs-%{+yyyy.MM.dd}" # 动态索引名称(按天分割)
output.logstash:
hosts: ["localhost:5044"] # Logstash地址
5. 启动与验证
sudo systemctl start filebeat
sudo systemctl enable filebeat
sudo systemctl status filebeat
sudo tail -f /var/log/filebeat/filebeat
curl http://localhost:9200/_search)或Kibana,检查目标索引是否存在采集的日志数据。注意事项
sudo cp /etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml.bak)。nginx、mysql),可启用对应模块简化配置(sudo filebeat modules enable nginx),但需根据模块要求调整路径和处理器。ssl.certificate_authorities参数)和认证信息(如output.elasticsearch.username、output.elasticsearch.password),确保数据安全。