在 CentOS 上 Filebeat 连不上 Kafka,通常不是单一原因,而是网络、配置、权限、版本等多方面的问题。下面按最常见原因 → 排查方法 → 解决建议给你一个系统性的排查清单。
在 CentOS 上执行(Filebeat 所在机器):
telnet kafka_ip 9092
# 或
nc -vz kafka_ip 9092
❌ 连不上 → 网络/防火墙/Kafka监听问题
在 Kafka 服务器上查看:
grep listeners server.properties
❌ 常见错误:
listeners=PLAINTEXT://127.0.0.1:9092
✅ 应改为:
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://kafka_ip:9092
改完重启 Kafka。
firewall-cmd --list-all
firewall-cmd --add-port=9092/tcp --permanent
firewall-cmd --reload
getenforce
如果是 Enforcing,可临时测试:
setenforce 0
filebeat.yml 示例(正确写法):
output.kafka:
hosts: ["kafka_ip:9092"]
topic: "filebeat-logs"
partition.round_robin:
reachable_only: true
required_acks: 1
❌ 常见错误:
localhostjournalctl -u filebeat -f
# 或
filebeat -e -c /etc/filebeat/filebeat.yml
典型错误:
connection refused → 网络/端口topic not found → Kafka topic 不存在SASL authentication failed → 认证问题dial tcp: i/o timeout → 防火墙/路由kafka-topics.sh --list --bootstrap-server kafka_ip:9092
如果没有:
kafka-topics.sh --create \
--topic filebeat-logs \
--bootstrap-server kafka_ip:9092 \
--partitions 3 \
--replication-factor 1
| Filebeat | Kafka |
|---|---|
| 7.x | 2.x ✅ |
| 8.x | 2.x / 3.x ✅ |
| 太老 Filebeat | 新 Kafka ❌ |
建议:
filebeat version
Filebeat 必须配置:
output.kafka:
hosts: ["kafka_ip:9092"]
topic: "logs"
ssl.enabled: true
username: "user"
password: "pass"
nc -vz kafka_ip 9092 能通advertised.listeners 正确hosts 不是 localhost你可以贴出以下信息(不要贴密码):
filebeat.yml 的 output.kafka 部分journalctl -u filebeat 报错server.properties 的 listeners 配置我可以直接告诉你是哪一步导致连不上。