Filebeat 在 Ubuntu 上“丢日志”通常不是真的凭空消失,而是采集、发送或配置环节出了问题。下面按最常见原因 → 排查方法 → 解决建议来说明。
Ubuntu 默认会用 logrotate:
问题表现
✅ 解决:
filebeat.inputs:
- type: log
paths:
- /var/log/app/*.log
close_inactive: 5m
scan_frequency: 10s
tail_files: false
并确认 logrotate 配置合理(不要频繁 copytruncate)。
Filebeat 用 registry 记录“读到哪了”:
/var/lib/filebeat/registry
问题表现
✅ 排查:
ls -l /var/lib/filebeat/
✅ 解决:
systemctl stop filebeat
rm -f /var/lib/filebeat/registry
systemctl start filebeat
如果输出失败,Filebeat 会缓存但不一定无限等。
现象
connection refused / timeout✅ 查看:
journalctl -u filebeat -f
✅ 配置示例(ES):
output.elasticsearch:
hosts: ["http://localhost:9200"]
bulk_max_size: 512
Filebeat 依赖 inode + device
问题场景
rm 后重建✅ 建议:
Filebeat 默认用户:filebeat
sudo -u filebeat cat /var/log/app/app.log
如果失败 → 权限不足
✅ 解决:
chmod 644 /var/log/app/*.log
或修改 systemd:
User=root
# 1. 服务状态
systemctl status filebeat
# 2. 实时日志
journalctl -u filebeat -f
# 3. 配置文件是否正确
filebeat test config
# 4. 输入是否生效
filebeat test output
# 5. registry 状态
ls -l /var/lib/filebeat/
在 Filebeat 配置中开启调试:
logging.level: debug
观察:
Harvester startedPublish event你可以补充:
我可以直接帮你改配置。