如何在CentOS上利用Filebeat进行日志监控
sudo tee /etc/yum.repos.d/elastic-beats.repo << EOF
[elastic-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
sudo yum install filebeat -y
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.2-amd64.rpm
sudo rpm -ivh filebeat-7.10.2-amd64.rpm
/opt
目录:wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.2-linux-x86_64.tar.gz
sudo tar -xzf filebeat-7.10.2-linux-x86_64.tar.gz -C /opt/
Filebeat的主配置文件位于/etc/filebeat/filebeat.yml
,需修改以下核心部分:
指定要监控的日志文件路径,支持通配符*
和排除规则:
filebeat.inputs:
- type: log # 输入类型为日志文件
enabled: true
paths:
- /var/log/*.log # 监控/var/log下所有.log文件
- /var/log/myapp/*.log # 监控自定义应用日志目录
exclude_files: ['*.gz'] # 排除.gz压缩文件
ignore_older: 72h # 忽略72小时前修改的文件(减少资源消耗)
将日志发送到Elasticsearch(生产环境常用)或Logstash:
output.elasticsearch:
hosts: ["localhost:9200"] # Elasticsearch地址(若在远程服务器,替换为IP)
index: "filebeat-%{+yyyy.MM.dd}" # 动态生成每日索引(如filebeat-2025.09.22)
username: "elastic" # 若启用了X-Pack安全,需配置用户名
password: "your_password" # 对应密码
output.logstash:
hosts: ["localhost:5044"] # Logstash监听端口
若需使用Kibana进行可视化,需添加Kibana地址:
setup.kibana:
host: "localhost:5601" # Kibana地址
logrotate
,无需额外配置,但可调整close_older
(文件未更新时关闭句柄的时间,默认5m)。multiline
:filebeat.inputs:
- type: log
multiline.pattern: '^\[' # 匹配日志行开头的特征(如Java异常的[)
multiline.negate: true # 取反,即匹配pattern以外的行作为新日志
multiline.match: after # 将后续行追加到上一行后面
Filebeat内置了常见应用(如Nginx、MySQL、System)的预定义配置模块,可简化日志解析:
# 查看可用模块
sudo filebeat modules list
# 启用System模块(监控系统日志)
sudo filebeat modules enable system
# 启用Nginx模块(需提前安装Nginx)
sudo filebeat modules enable nginx
启用模块后,模块的配置会自动加载到filebeat.inputs
中,无需手动修改filebeat.yml
。
sudo systemctl start filebeat # 启动Filebeat
sudo systemctl enable filebeat # 设置开机自启
sudo systemctl status filebeat
若状态显示为active (running)
,则表示服务已正常运行。
若需排查问题,可通过以下命令查看Filebeat实时日志:
sudo journalctl -u filebeat -f
修改配置文件后,建议先验证语法是否正确:
sudo filebeat test config -e
无报错则表示配置正确。
若输出到Elasticsearch,可通过以下命令查看是否生成了Filebeat索引:
curl -XGET 'localhost:9200/_cat/indices?v' | grep filebeat
若输出类似filebeat-2025.09.22
的索引,说明日志已成功发送。
http://localhost:5601
)。filebeat-*
(匹配所有Filebeat生成的索引)。@timestamp
(日志时间戳)。chown
或chmod
调整权限)。setsebool -P filebeat_port_t 1
)。harvester.buffer_size
(默认16KB)和scan_frequency
(默认10s)参数优化性能。