Filebeat 在 CentOS 的日志存储策略
一 自身日志轮转与保留
logging:
level: info
to_files: true
files:
path: /var/log/filebeat
name: filebeat
rotateeverybytes: 10485760 # 10 MB
keepfiles: 7
permissions: 0644
二 采集端对应用日志的留存与清理
filebeat.inputs:
- type: filestream
paths:
- /var/log/nginx/*.log
ignore_older: 240h
close_inactive: 5m
close_renamed: true
close_removed: true
clean_inactive: 744h # 31 天,需 > ignore_older + scan_frequency
三 系统级 logrotate 对 Filebeat 自身日志的轮转
/var/log/filebeat/*.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 root root
postrotate
# 通知 Filebeat 重新打开日志文件
kill -USR1 $(cat /var/run/filebeat/filebeat.pid 2>/dev/null) 2>/dev/null || true
endscript
}
logrotate -f /etc/logrotate.d/filebeat;Filebeat 通常通过 PID 文件或 systemd 管理,发送 USR1 是常见做法。
该策略与 filebeat.yml 的 logging 轮转互补:前者管理“Filebeat 自身日志”,后者管理“被采集的日志”。四 输出侧存储控制(Elasticsearch 索引生命周期)
index: "nginx_json_log_%{+yyyy-MM-dd}"。KEEP_DAYS=7
for day in $(seq 1 $(($KEEP_DAYS+10))); do
DATE=$(date -d "$((-day)) day ago" +%Y.%m.%d)
curl -XDELETE "http://127.0.0.1:9200/filebeat-7.17.0-$DATE"
done