CentOS 上 Filebeat 连不上(通常是连不上 Elasticsearch / Logstash / Kafka 等)这是一个很常见的问题,原因很多。下面我按排查顺序给你一个系统性的定位方法,基本能覆盖 90% 的情况。
Filebeat 常见输出:
请先确认 filebeat.yml 里的 output 配置是哪一个。
CentOS 7/8 默认 firewalld:
# 查看端口是否放行
firewall-cmd --list-all
# 放行示例(ES)
firewall-cmd --add-port=9200/tcp --permanent
firewall-cmd --reload
如果是云服务器,还要检查 安全组。
CentOS 默认开启 SELinux,可能阻止 Filebeat 网络访问。
getenforce
如果是 Enforcing,可临时验证:
setenforce 0
如果这样能连上,说明是 SELinux 问题(不建议直接关,应写策略)。
在 Filebeat 机器上测试:
# Elasticsearch
curl http://目标IP:9200
# Logstash
telnet 目标IP 5044
# 或
nc -vz 目标IP 5044
如果连不上,问题不在 Filebeat。
检查 filebeat.yml:
output.elasticsearch:
hosts: ["http://192.168.1.10:9200"]
常见错误:
localhost(但 ES 在别的机器)http://查看错误:
filebeat test output
如果用了 HTTPS:
date
时间差太大,证书会直接失败。
ls -l /var/log/xxx.log
Filebeat 通常以 filebeat 用户运行:
ps -ef | grep filebeat
journalctl -u filebeat -f
# 或
tail -f /var/log/filebeat/filebeat
常见报错关键词:
connection refused → 网络/防火墙certificate signed by unknown → TLS401/403 → 权限/账号i/o timeout → 路由/安全组你可以一条条对:
你可以直接贴:
filebeat.yml 的 output 部分journalctl -u filebeat 的报错我可以告诉你具体是哪一步错了,以及怎么改。