Filebeat在Ubuntu上的日志存储策略主要涉及日志采集路径配置、日志轮转与压缩、输出目标管理及性能优化,具体如下:
通过修改/etc/filebeat/filebeat.yml文件,指定监控的日志文件路径,支持通配符(如/var/log/*.log)或具体文件路径:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/syslog
- /var/log/nginx/*.log
推荐使用系统logrotate工具(更灵活):
创建/etc/logrotate.d/filebeat配置文件,设置轮转周期、保留天数、压缩等参数:
/var/log/filebeat/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 root adm
postrotate
kill -USR1 $(cat /var/run/filebeat/filebeat.pid) # 通知Filebeat重新打开日志文件
endscript
}
或通过Filebeat内置参数配置(需注意兼容性):
在filebeat.yml中添加logging.file配置,设置日志文件路径、轮转周期及保留数量:
logging:
file:
path: /var/log/filebeat/filebeat.log
name: filebeat
keepfiles: 7 # 保留7个日志文件
rotation.period: 24h # 每天轮转
输出到Elasticsearch(常用):
配置output.elasticsearch,指定ES地址、索引名称(可包含日期,如filebeat-%{+yyyy.MM.dd}),并启用ILM(索引生命周期管理)自动归档旧日志:
output.elasticsearch:
hosts: ["localhost:9200"]
index: "filebeat-%{+yyyy.MM.dd}"
输出到文件(调试用):
启用output.logfile,指定输出路径和权限:
output.logfile:
enabled: true
path: /var/log/filebeat/output.log
permissions: "644"
queue.mem.events(默认4096)控制内存队列大小,或通过max_concurrent_files限制并发文件读取数,避免资源占用过高。bulk_max_size(如5000),批量发送日志以减少网络开销。journalctl查看Filebeat运行日志:sudo journalctl -u filebeat -f
sudo filebeat test config
总结:Filebeat本身不直接管理日志存储,需结合logrotate或输出目标(如ES)实现轮转与归档,核心策略是通过配置文件灵活控制日志路径、轮转规则及输出方式,确保日志高效存储与分析。