在 Debian 上排查 Filebeat 问题,一般可以按下面这个思路来,从「能不能跑」到「为什么没数据」逐步定位。
systemctl status filebeat
或(旧版 / SysV):
service filebeat status
常见状态:
active (running):服务在跑failed:配置或权限问题inactive:没启动journalctl -u filebeat -f
或:
tail -f /var/log/filebeat/filebeat
重点看:
errorspermission deniedconnection refusedno files matchedfilebeat test config
如果有错,会明确指出哪一行。
filebeat test output
常见错误:
示例:
filebeat.inputs:
- type: log
paths:
- /var/log/nginx/*.log
检查:
ls -l /var/log/nginx/*.log
注意:
Filebeat 默认以 root 或 filebeat 用户运行:
ps aux | grep filebeat
如果以 filebeat 用户运行,但日志文件权限是:
-rw------- root root
就会报:
permission denied
解决方式:
Filebeat 用 registry 记录读取位置:
/var/lib/filebeat/registry
可能原因:
调试方式:
filebeat -e -d "*"
(前台运行,输出所有调试信息)
telnet es-host 9200
# 或
curl http://es-host:9200
curl 'http://localhost:9200/_cat/indices?v'
如果没有 filebeat-*:
# 前台运行(调试)
filebeat -e -c /etc/filebeat/filebeat.yml -d "*"
# 仅测试配置
filebeat test config
# 测试输出
filebeat test output
# 查看当前采集文件
filebeat export config
| 现象 | 可能原因 |
|---|---|
| 服务起不来 | yml 格式错误 |
| 无数据 | paths 写错 |
| permission denied | 文件权限 |
| ES 无索引 | output / 模板问题 |
| 只采一次 | registry 已记录 |
| 日志太大无输出 | 多行日志未配置 |
如果你愿意,可以把:
filebeat.yml(脱敏)systemctl statusjournalctl 报错贴出来,我可以帮你精确分析。