在 Ubuntu 上排查 Kafka 故障,通常可以按「系统层 → Kafka 进程层 → 配置层 → 日志层 → 业务层」逐步定位。下面给你一套实用排查清单。
ps -ef | grep kafka
# 或
systemctl status kafka
如果是 Docker:
docker ps | grep kafka
docker logs <container_id>
Kafka 默认端口:9092
netstat -tunlp | grep 9092
# 或
ss -tunlp | grep 9092
Kafka 配置文件通常在:
/etc/kafka/server.properties
或
/opt/kafka/config/server.properties
listeners 和 advertised.listenerslisteners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<服务器IP>:9092
❌ 常见错误:
advertised.listeners 写成了 localhost测试:
telnet <kafka_ip> 9092
broker.id每个 broker 必须唯一:
broker.id=0
zookeeper.connect=localhost:2181
Zookeeper 必须正常:
systemctl status zookeeper
Kafka 3.x+ 可用 KRaft,无 Zookeeper。
/var/log/kafka/
# 或
/opt/kafka/logs/
实时查看:
tail -f /var/log/kafka/server.log
Address already in use → 端口冲突Failed to bind → listeners 配置错误Connection refused → Zookeeper / broker 未启动Topic authorization failed → ACL 问题Leader not available → Topic 未正确创建kafka-broker-api-versions.sh --bootstrap-server <ip>:9092
kafka-topics.sh --bootstrap-server <ip>:9092 --list
kafka-topics.sh --bootstrap-server <ip>:9092 --describe --topic test
kafka-console-producer.sh --bootstrap-server <ip>:9092 --topic test
kafka-console-consumer.sh --bootstrap-server <ip>:9092 --topic test --from-beginning
Kafka 对磁盘非常敏感:
df -h
⚠️ 磁盘满 → Kafka 停止写入
free -h
Kafka 默认堆内存:
export KAFKA_HEAP_OPTS="-Xms1G -Xmx1G"
ulimit -n
建议 ≥ 65535
ufw status
iptables -L
开放端口:
ufw allow 9092
连不上 Kafka?
telnet ip 9092advertised.listenersserver.logTopic 无法写入?
describe topicKafka 起不来?
如果你愿意,可以把:
server.properties 关键配置server.log 报错片段贴出来,我可以帮你精准定位问题。