CentOS上Filebeat问题排查清单
一 快速定位与基础检查
sudo systemctl status filebeat、sudo journalctl -xe -u filebeat.service。若服务反复失败,先执行:sudo systemctl reset-failed filebeat 再启动。sudo tail -f /var/log/filebeat/filebeat.log 观察启动与运行期报错关键词(如 permission denied、connection refused、illegal configuration、SSL/TLS error)。yamllint /etc/filebeat/filebeat.yml 检查缩进与语法;再核对关键段落(如 filebeat.inputs.paths、output.elasticsearch 或 output.logstash 的 hosts/端口/协议、以及可选的 processors)。二 常见故障与修复要点
yamllint 与逐项注释法定位;核对 YAML 缩进、冒号后空格、以及 hosts、端口、协议 等必填项。sudo chown -R filebeat:filebeat /var/log/your_log_dir/,并确保配置文件权限合理(如 sudo chmod 644 /etc/filebeat/filebeat.yml)。telnet <目标IP> <端口> 或 curl -v http://<目标IP>:<端口> 测试;若目标为 Logstash 5044 或 Elasticsearch 9200/443,确认目标服务已启动且监听正确端口。firewall-cmd 放行端口(示例:sudo firewall-cmd --add-port=5044/tcp --permanent && sudo firewall-cmd --reload);如使用云主机,还需检查云安全组规则。top/htop;再提升文件句柄限制(如编辑 /etc/security/limits.conf 增加 filebeat soft/hard nofile 65535),并在 Filebeat 配置中启用 close_removed: true 等选项以回收已删除文件的句柄。三 深入验证与端到端确认
curl -X GET "http://<ES_HOST>:9200/_cluster/health?pretty"(如启用安全认证,补充 -u user:pass)。telnet <LS_HOST> 5044 或 nc -vz <LS_HOST> 5044,确认端口开放与进程监听。curl -X GET "localhost:9200/_cat/indices?v",若存在以 filebeat-* 开头的索引,说明数据已写入;随后可在 Kibana 的 Management > Index Patterns 创建 filebeat-* 模式并在 Discover 中检索。sudo filebeat modules enable system,再按需执行 sudo filebeat setup 初始化索引模板与仪表板;遇到 Java 堆栈等多行日志,配置 multiline;采集 JSON 日志可使用 json.keys_under_root: true 与 json.add_error_key: true。四 服务管理与应急恢复
sudo systemctl restart filebeat、sudo systemctl enable filebeat;若服务进入 failed 状态,先 sudo systemctl reset-failed filebeat 再启动,并持续观察 journalctl -u filebeat -f 的输出。filebeat -version 与目标组件 API 查询版本),避免因版本不兼容引发异常。sudo yum remove --purge filebeat && sudo yum autoremove && sudo yum clean all),再从官方仓库安装并恢复配置、启动服务。