CentOS 上 Filebeat 故障排查步骤
一 快速定位与基础检查
sudo systemctl status filebeat -lsudo journalctl -xe -u filebeat.service 或 sudo tail -f /var/log/filebeat/filebeat/etc/filebeat/filebeat.ymlyamllint /etc/filebeat/filebeat.ymlfilebeat -versionsudo systemctl restart filebeatsystemctl reset-failed filebeat.service 再启动,便于继续观察二 配置与权限检查
output.logstash.hosts: ["logstash:5044"]output.elasticsearch.hosts: ["http://es:9200"]username/password 或 ssl.certificate_authorities、ssl.verification_mode 等filebeat.inputs[].paths: ["/var/log/*.log", "/var/log/messages"]ls -l /var/log/secure /var/log/messages 检查读权限sudo chmod go-w /etc/filebeat/filebeat.yml三 网络连通性与防火墙
telnet logstash-host 5044curl -X GET "http://es-host:9200"sudo firewall-cmd --add-port=5044/tcp --permanent && sudo firewall-cmd --reloadsudo firewall-cmd --add-port=9200/tcp --permanent && sudo firewall-cmd --reloadconnection refused:目标服务未启动或端口错误i/o timeout:网络不通、端口未放行、目标过载或 TLS 握手失败四 运行期问题定位与处理
top/htop 观察 CPU/内存,资源不足会导致采集或发送缓慢close_removed: truesudo systemctl restart filebeat 并实时跟踪日志验证五 常见症状与修复对照表
| 症状 | 可能原因 | 快速修复 |
|---|---|---|
| 服务启动失败(Active: failed) | 配置语法错误、端口冲突、权限不足 | journalctl -xe -u filebeat 查错;yamllint 校验;`netstat -tulpen |
| 无法连接 Logstash/ES | 地址/端口错误、服务未启动、TLS/认证缺失、防火墙拦截 | telnet/curl 连通性测试;核对 hosts、ssl、username/password;放行防火墙端口 |
| 无数据进入 ES/Kibana | inputs 路径错误、文件无新内容、权限不足、索引模板/ILM 问题 | 确认日志轮转与新日志写入;检查 paths 与读权限;在 Kibana 创建 filebeat-* 索引模式 |
| 日志解析错误 | 日志格式与处理器不匹配 | 调整 json/dissect/grok 配置;先在小样本验证再全量启用 |
| 频繁重启或达到 start-limit | 启动即崩溃、配置反复错误 | systemctl reset-failed filebeat;修复根因后重启并观察日志 |