ubuntu filebeat日志存储策略
导读:Ubuntu 上 Filebeat 的日志存储策略 一 策略总览 采集侧(Filebeat 自身日志):使用 logrotate 管理 /var/log/filebeat/filebeat.log,按天轮转、保留7天、压缩归档,避免磁盘被...
Ubuntu 上 Filebeat 的日志存储策略
一 策略总览
- 采集侧(Filebeat 自身日志):使用 logrotate 管理 /var/log/filebeat/filebeat.log,按天轮转、保留7天、压缩归档,避免磁盘被无限增长。
- 业务侧(被采集的日志文件):由 logrotate 或应用自身按大小/时间轮转;Filebeat 通过 inode/指纹 跟踪文件,配合 clean_inactive / ignore_older 等参数自动发现新文件并清理过期状态,避免重复采集与状态膨胀。
- 存储侧(Elasticsearch/Logstash/Redis):在 Elasticsearch 使用 ILM(索引生命周期管理) 做热-温-冷-删除的滚动与过期;若经 Logstash 或 Redis 中转,存储与保留策略在后端落地。Filebeat 本身不负责长期归档与删除。
二 Filebeat 自身日志轮转配置(Ubuntu 推荐 logrotate)
- 创建轮转配置
- 新建文件 /etc/logrotate.d/filebeat,内容示例:
/var/log/filebeat/*.log { daily rotate 7 compress missingok notifempty create 0640 root root postrotate # 通知 Filebeat 重新打开日志文件(若使用 filebeat.pid) if [ -f /var/run/filebeat/filebeat.pid ]; then kill -USR1 "$(cat /var/run/filebeat/filebeat.pid)" fi # 若 systemd 管理且无 pid 文件,可用:systemctl kill -s USR1 filebeat endscript }
- 新建文件 /etc/logrotate.d/filebeat,内容示例:
- 手动测试与生效
- 测试:
sudo logrotate -f /etc/logrotate.d/filebeat - 验证:
ls -lh /var/log/filebeat/,应出现按日分割与压缩的旧日志。
- 测试:
- 说明
- 若采用 systemd 且未生成 filebeat.pid,可在 postrotate 中使用
systemctl kill -s USR1 filebeat触发重新打开日志。 - 不建议仅依赖 Filebeat 内置文件日志的 keepfiles/rotation(版本支持有限且灵活性不足),生产环境优先使用 logrotate。
- 若采用 systemd 且未生成 filebeat.pid,可在 postrotate 中使用
三 被采集日志的采集与保留策略
- 基本采集示例(/etc/filebeat/filebeat.yml)
filebeat.inputs: - type: log enabled: true paths: - /var/log/*.log # 可按需添加字段、标签、JSON 解析等 output.elasticsearch: hosts: ["localhost:9200"] index: "filebeat-%{ [agent.version]} -%{ +yyyy.MM.dd} " # 或使用 Logstash/Redis 中转 # output.logstash: hosts: ["localhost:5044"] # output.redis: hosts: ["127.0.0.1:6379"]; key: "filebeat" - 状态与过期清理(避免注册表膨胀)
- 合理设置 clean_inactive(如:24h/48h),清理长时间未更新的文件状态。
- 结合 ignore_older(如:72h)忽略过久历史文件,减少回溯采集。
- 使用 close_inactive(如:5m)及时关闭闲置文件句柄,释放资源。
- 多路径与多类型
- 为不同业务日志分别配置 paths 与 tags,便于后续在 ILM/索引模板中区分治理。
四 存储与归档策略(Elasticsearch 与中转链路)
- Elasticsearch ILM 示例(热阶段滚动、30 天后删除)
PUT _ilm/policy/filebeat-policy { "policy": { "phases": { "hot": { "actions": { "rollover": { "max_size": "50gb", "max_age": "7d" } } } , "delete": { "min_age": "30d", "actions": { "delete": { } } } } } }- 将策略绑定到索引模板/索引生命周期中,实现按大小或时间自动滚动与过期删除。
- 经 Logstash 或 Redis 中转
- 若输出到 Redis(如:
output.redis: { hosts: ["127.0.0.1:6379"], key: "filebeat" }),Redis 仅做缓冲队列,需在 Logstash 或下游 Elasticsearch 侧设置索引与保留策略。
- 若输出到 Redis(如:
- 关键原则
- Filebeat 不负责长期存储与归档,长期保留、冷热分层、快照与合规删除应在 Elasticsearch/存储后端 实现;中转组件(Logstash/Redis)侧重缓冲与处理。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu filebeat日志存储策略
本文地址: https://pptw.com/jishu/749257.html
