Filebeat日志归档的正确做法
核心原则
方案一 使用 Elasticsearch ILM 实现自动归档与删除
PUT _ilm/policy/logstash-policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_size": "50gb",
"max_age": "7d"
}
}
},
"delete": {
"min_age": "30d",
"actions": { "delete": {} }
}
}
}
}
PUT _template/logstash-template
{
"index_patterns": ["filebeat-*"],
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1,
"index.lifecycle.name": "logstash-policy"
}
}
output.elasticsearch:
hosts: ["localhost:9200"]
index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
方案二 输出到 Logstash 再由下游归档
output.logstash:
hosts: ["localhost:5044"]
方案三 本地归档与保留(Filebeat 自身日志与采集文件)
/var/log/filebeat/*.log {
daily
rotate 7
compress
missingok
notifempty
create 640 root adm
postrotate
kill -USR1 $(cat /var/run/filebeat/filebeat.pid) # 通知Filebeat重新打开日志文件
endscript
}
logging:
file:
path: /var/log/filebeat/filebeat.log
name: filebeat
keepfiles: 7
rotation.period: 24h
验证与运维要点
sudo filebeat test configsudo systemctl status filebeatsudo journalctl -u filebeat -fdf -hbulk_max_size、queue.mem.events、max_concurrent_files,避免资源占用过高。