Debian中Filebeat日志管理技巧
Filebeat的默认日志路径为/var/log/filebeat/filebeat.log(部分版本可能在/var/log/beats/filebeat.log)。使用以下命令实时查看日志流,快速定位运行异常(如配置错误、连接失败):
sudo tail -f /var/log/filebeat/filebeat.log
若日志中出现ERROR或FATAL关键字,可直接定位故障原因(如无法读取输入日志文件、输出目标不可达)。
默认情况下,Filebeat将日志输出到系统日志(journald)或文件。可通过修改filebeat.yml调整输出方式:
logging.to_syslog: true
logging.syslog.level: info # 日志级别(info/debug/warning/error)
logging.to_files: true
logging.files:
path: /var/log/filebeat # 日志目录
name: filebeat # 日志文件名(不含扩展名)
keepfiles: 7 # 保留最近7个日志文件
permissions: 0644 # 文件权限
修改后需重启Filebeat使配置生效:
sudo systemctl restart filebeat
日志轮转可防止日志文件过大占用磁盘空间,Debian下常用两种方式:
logrotate是系统级日志管理工具,支持按时间/大小轮转、压缩、删除旧日志。配置步骤如下:
/etc/logrotate.d/filebeat文件:sudo nano /etc/logrotate.d/filebeat
/var/log/filebeat/*.log {
daily # 每天轮转
rotate 7 # 保留7个旧日志文件
compress # 压缩旧日志(gzip)
missingok # 日志文件不存在时不报错
notifempty # 日志为空时不轮转
sharedscripts # 所有日志轮转完成后执行脚本
postrotate # 轮转后执行的命令
/usr/bin/filebeat -f /etc/filebeat/filebeat.yml reload > /dev/null
endscript
}
sudo logrotate -d /etc/logrotate.d/filebeat
sudo logrotate -f /etc/logrotate.d/filebeat
Filebeat内置日志轮转功能,适合简单场景:
在filebeat.yml中添加以下配置:
logging.files:
path: /var/log/filebeat
name: filebeat
max_size: 100MB # 单个日志文件最大100MB
max_files: 5 # 最多保留5个文件
keepfiles: 7 # 保留7个文件(与max_files配合使用)
修改后重启Filebeat即可生效。
当Filebeat无法正常运行时,可通过以下步骤快速排查:
validate命令验证filebeat.yml是否有语法错误:filebeat -c /etc/filebeat/filebeat.yml validate
filebeat)有权读取输入日志文件和写入输出目录:sudo chown -R filebeat:filebeat /var/log/filebeat
sudo chmod -R 0755 /var/log/filebeat
systemctl查看Filebeat是否正在运行:sudo systemctl status filebeat
ping或curl测试网络连通性:ping elasticsearch.example.com
curl -XGET 'http://elasticsearch.example.com:9200'
max_size(如100MB)控制单个日志文件大小,避免单个文件过大影响读写性能。daily或hourly),减少旧日志占用空间。filebeat.yml中使用exclude_lines或include_lines过滤无用日志(如调试信息),减少处理负担:filebeat.inputs:
- type: log
paths:
- /var/log/app/*.log
exclude_lines: ["DEBUG", "TRACE"] # 排除DEBUG和TRACE级别的日志