在 Ubuntu 上排查 Kafka 问题,通常可以按「系统 → Kafka 进程 → 配置 → 日志 → 网络 → 业务」逐层进行。下面给你一套实用排错清单。
Kafka 依赖 Java:
java -version
推荐:
Kafka 对 hostname 很敏感:
hostname
hostname -i
cat /etc/hosts
确保:
127.0.0.1 localhost
<内网IP> your-hostname
ps -ef | grep kafka
jps
应有:
KafkaQuorumPeerMain(如果用 ZooKeeper)sudo netstat -tnlp | grep 9092
sudo lsof -i:9092
vim /opt/kafka/config/server.properties
关键项:
broker.id=0
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<你的IP>:9092
zookeeper.connect=localhost:2181
log.dirs=/tmp/kafka-logs
⚠️ 常见错误:
advertised.listeners 写成 localhost,远程连不上log.dirs 权限不足ls -ld /tmp/kafka-logs
whoami
tail -f /opt/kafka/logs/server.log
常见错误:
Address already in use → 端口冲突Failed to acquire lock → 多个 Kafka 实例Connection refused → ZooKeeper 没起tail -f /opt/kafka/logs/zookeeper.out
systemctl status zookeeper
# 或
/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
测试:
echo ruok | nc localhost 2181
# 返回 imok 表示正常
kafka-topics.sh --create \
--topic test \
--bootstrap-server localhost:9092 \
--partitions 1 --replication-factor 1
kafka-topics.sh --list --bootstrap-server localhost:9092
kafka-console-producer.sh --topic test --bootstrap-server localhost:9092
kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server localhost:9092
| 现象 | 原因 |
|---|---|
| 连不上 9092 | advertised.listeners 错 |
| 启动立即退出 | 端口 / 日志目录冲突 |
| topic 无法创建 | ZooKeeper 未启动 |
| 消费者无数据 | group / offset 问题 |
| 磁盘暴涨 | retention 未配置 |
如果是 KRaft 模式:
/opt/kafka/bin/kafka-storage.sh random-uuid
/opt/kafka/bin/kafka-storage.sh format
检查:
cat /opt/kafka/config/kraft/server.properties
java -versionps / netstatserver.logadvertised.listeners如果你愿意,可以:
我可以直接帮你定位具体原因。