在 CentOS 上使用 Filebeat 时,排错一般从「服务状态 → 日志 → 配置 → 权限 → 网络」逐步排查。下面是一套比较系统的排错思路。
systemctl status filebeat
或(老版本):
service filebeat status
常见问题:
Active: failedexited 但没报错启动它:
systemctl start filebeat
systemctl enable filebeat
journalctl -u filebeat -f
tail -f /var/log/filebeat/filebeat
常见错误示例:
Exiting: error loading config filepermission deniedconnection refusedno files found for prospectorfilebeat test config
如果报语法错误,会明确指出哪一行。
测试输出是否正常:
filebeat test output
CentOS 默认:
/etc/filebeat/filebeat.yml
确认你改的是这个文件,而不是其他副本。
查看当前加载配置:
ps -ef | grep filebeat
ls -l /var/log/xxx/*.log
getenforce
如果是 Enforcing,可能是 SELinux 拦截:
临时测试:
setenforce 0
永久解决(示例):
semanage fcontext -a -t var_log_t "/data/logs(/.*)?"
restorecon -Rv /data/logs
chmod 644 /var/log/xxx.log
chown root:root /var/log/xxx.log
示例(filebeat.yml):
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/*.log
常见错误:
enabled: false~ 或相对路径output.elasticsearch:
hosts: ["http://192.168.1.10:9200"]
测试:
filebeat test output
错误示例:
connection refused401 Unauthorizedx-pack securityFilebeat 记录读取位置:
/var/lib/filebeat/registry
如果日志不更新:
systemctl stop filebeat
rm -rf /var/lib/filebeat/registry
systemctl start filebeat
⚠️ 会重新采集所有日志
logging.level: debug
logging.to_files: true
然后重启:
systemctl restart filebeat
| 现象 | 可能原因 |
|---|---|
| 启动失败 | yml 缩进错误 |
| 无日志采集 | paths 错误 / enabled false |
| 权限拒绝 | SELinux / 文件权限 |
| 连不上 ES | 网络 / 防火墙 / 认证 |
| 重复日志 | registry 损坏 |
| 采集中断 | inode 变化 / 文件轮转 |
如果你愿意,可以把 报错日志 或 filebeat.yml(脱敏) 贴出来,我可以直接帮你定位问题。