Filebeat日志轮转策略配置指南
Filebeat的日志轮转可通过系统级logrotate工具(推荐,适用于所有日志文件)或Filebeat自身配置(适用于Filebeat自身输出的日志)实现。以下是详细步骤:
logrotate是Linux系统默认的日志轮转工具,可管理Filebeat生成的日志文件(如/var/log/filebeat/filebeat.log),实现按时间/大小分割、压缩、保留指定数量文件等功能。
若系统未安装logrotate,可通过以下命令安装(以CentOS为例):
sudo yum install logrotate -y
为Filebeat创建专属配置文件(如/etc/logrotate.d/filebeat),内容如下:
/var/log/filebeat/*.log {
daily # 每天轮转一次(可选:weekly/monthly)
rotate 7 # 保留最近7个轮转文件(可根据磁盘空间调整)
compress # 压缩旧日志(节省空间)
delaycompress # 延迟压缩(如第8个文件才压缩第1个,避免频繁操作)
missingok # 若日志文件不存在,不报错
notifempty # 若日志为空,不轮转
create 0640 root root # 创建新日志文件,权限640,属主root、属组root
sharedscripts # 多个日志文件匹配时,只执行一次postrotate脚本
postrotate
# 向Filebeat进程发送USR1信号,通知其重新打开日志文件
if [ -f /var/run/filebeat/filebeat.pid ]; then
kill -USR1 $(cat /var/run/filebeat/filebeat.pid)
fi
endscript
}
手动触发logrotate,验证配置是否正确:
sudo logrotate -f /etc/logrotate.d/filebeat
检查/var/log/filebeat/目录,应生成压缩后的旧日志文件(如filebeat.log.1.gz)和新日志文件(filebeat.log)。
logrotate通常由系统的cron.daily任务自动执行(每日凌晨)。可通过以下命令检查定时任务是否存在:
ls -l /etc/cron.daily/logrotate
Filebeat的logging.files参数可控制其自身输出日志(如/var/log/filebeat/filebeat)的轮转行为,适用于需要独立管理Filebeat日志的场景。
打开/etc/filebeat/filebeat.yml,在logging section添加或修改以下配置:
logging.level: info # 日志级别(info/debug/warning/error)
logging.to_files: true # 输出到文件(而非终端)
logging.files:
path: /var/log/filebeat # 日志文件存放目录
name: filebeat # 日志文件名(无扩展名)
keepfiles: 7 # 保留最近7个日志文件
permissions: 0640 # 文件权限
rotateeverybytes: 10485760 # 按大小轮转(10MB,可选:按时间用daily/weekly)
# 可选:按时间轮转(与rotateeverybytes二选一)
# daily: true
# rotateeverybytes: 0
使配置生效:
sudo systemctl restart filebeat
查看Filebeat日志文件,确认是否按配置轮转:
tail -f /var/log/filebeat/filebeat
ls -l /var/log/filebeat/
/var/log/filebeat/*.log)与Filebeat配置中的paths或logging.files.path一致。0640),避免Filebeat无法写入。postrotate脚本必须向Filebeat发送USR1信号(或重启服务),否则Filebeat可能继续向旧文件写入日志。rotateeverybytes: 10MB适用于大流量场景)。通过上述方法,可实现Filebeat日志的有效轮转,避免日志文件过大占用磁盘空间,同时保留历史日志供后续分析。