在 CentOS 上使用 Filebeat 实现“断点续传”,本质上是指:Filebeat 在采集日志时,能够记住已经读取到的位置(offset),即使 Filebeat 重启或宕机,也能从断点继续采集,不丢数据、不重复。
下面从原理、配置、常见问题三方面说明。
Filebeat 通过 registry 文件 记录每个日志文件的读取位置:
/var/lib/filebeat/registry/
/var/lib/filebeat/registry
内容包含:
✅ 只要 registry 不丢,就能断点续传
sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
sudo yum install filebeat -y
filebeat.inputs:
- type: log
paths:
- /var/log/app/*.log
enabled: true
output.elasticsearch:
hosts: ["http://localhost:9200"]
✅ 默认已经支持断点续传,不需要额外配置
path.data: /var/lib/filebeat
⚠️ 不要手动删除 /var/lib/filebeat/registry
filebeat.inputs:
- type: log
paths:
- /var/log/app/*.log
Filebeat 通过:
rm -rf /var/lib/filebeat/registry
✅ 解决:
/var/lib/filebeat/例如:
echo "new log" > app.log
✅ 解决:
echo "new log" >> app.log
例如 logrotate:
mv app.log app.log.1
touch app.log
✅ 解决:
/var/lib/filebeat 在容器里没持久化
✅ 解决:
-v /data/filebeat:/var/lib/filebeat
cat /var/lib/filebeat/registry/filebeat/log.json | jq
systemctl restart filebeat
✅ 新日志继续采集,旧日志不重复
CentOS 上 Filebeat 默认就支持断点续传,核心是保护好
/var/lib/filebeat/registry,日志用追加方式写入即可。
如果你有:
可以告诉我,我可以给你对应配置示例。