在 Debian 上排查 Kafka 问题,一般按「系统 → Kafka 进程 → 配置 → 日志 → 网络 → 客户端」逐层排查。下面给你一套实用排错手册。
systemctl status kafka
# 或
ps -ef | grep kafka
如果是手动启动:
jps
# 应看到 Kafka 进程
没起来常见原因:
systemctl status zookeeper
测试 ZK:
echo ruok | nc localhost 2181
# 返回 imok 表示正常
Kafka 启动前,ZK 必须正常。
/var/log/kafka/
# 或你配置的
log.dirs=/var/lib/kafka/logs
重点看:
server.log
常见错误关键词:
Address already in use → 端口冲突No space left on device → 磁盘满Failed to acquire lock → 重复启动Connection refused → ZK / Broker 没起常见文件:
/etc/kafka/server.properties
重点配置:
broker.id=0
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://你的IP:9092
zookeeper.connect=localhost:2181
log.dirs=/var/lib/kafka/logs
容易踩坑:
advertised.listeners 写错 → 客户端连不上log.dirs 权限不对 → 起不来df -h
Kafka 用户权限:
ls -ld /var/lib/kafka/logs
修复示例:
chown -R kafka:kafka /var/lib/kafka
ss -lntp | grep 9092
防火墙:
ufw status
# 或
iptables -L
开放端口:
ufw allow 9092
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
如果是 KRaft(无 ZooKeeper):
/etc/kafka/kraft/server.properties
检查:
process.roles=broker,controller
controller.quorum.voters=...
初始化:
kafka-storage.sh format -t <cluster-id> -c /etc/kafka/kraft/server.properties
| 错误 | 原因 |
|---|---|
| broker 起不来 | ZK 没起 / 配置错 |
| 客户端连不上 | advertised.listeners 错 |
| topic 创建失败 | replication > broker 数 |
| 消费不到消息 | group / offset 问题 |
| 磁盘爆满 | log.retention 没配 |
systemctl statusserver.log如果你愿意,可以把:
贴出来,我可以直接帮你定位。