在 Debian 上排查 Kafka 报错,一般按下面这个思路来查,基本都能定位到问题。
Kafka 的日志默认在:
/opt/kafka/logs/
# 或
/var/log/kafka/
常见日志文件:
server.log ✅(最重要)controller.logstate-change.logkafkaServer.out查看最新错误:
tail -n 200 /opt/kafka/logs/server.log
实时查看:
tail -f /opt/kafka/logs/server.log
ps -ef | grep kafka
正常应看到 kafka.Kafka 进程。
ss -lntp | grep 9092
# 或
netstat -lntp | grep 9092
如果端口没监听,说明 Kafka 没启动成功。
java.net.UnknownHostException原因:listeners 配置的主机名解析不了
查看配置:
grep listeners /opt/kafka/config/server.properties
✅ 推荐配置(本地或内网):
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<服务器IP>:9092
然后:
systemctl restart kafka
# 或
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties
Kafka 依赖 ZooKeeper(老版本)
常见报错:
Connection refusedTimeout connecting to ZooKeeper检查 ZooKeeper:
systemctl status zookeeper
ss -lntp | grep 2181
测试连接:
/opt/kafka/bin/zookeeper-shell.sh localhost:2181 ls /
ZooKeeper 没启动,Kafka 一定起不来。
查看 Kafka 数据目录:
grep log.dirs /opt/kafka/config/server.properties
检查权限:
ls -ld /tmp/kafka-logs
修复权限:
chown -R kafka:kafka /tmp/kafka-logs
LEADER_NOT_AVAILABLE通常是:
advertised.listeners 配置错误测试:
/opt/kafka/bin/kafka-topics.sh \
--bootstrap-server localhost:9092 \
--list
Topic not present in metadata创建 topic 测试:
/opt/kafka/bin/kafka-topics.sh \
--bootstrap-server localhost:9092 \
--create --topic test --partitions 1 --replication-factor 1
java -version
Kafka 需要 Java 8 / 11 / 17(看 Kafka 版本)
Kafka 默认吃内存较多,查看:
free -h
可调整:
export KAFKA_HEAP_OPTS="-Xmx512M -Xms256M"
如果你是用 systemd 管理 Kafka:
journalctl -u kafka -n 100
journalctl -u kafka -f
如果你愿意,可以直接把 报错日志贴出来,我可以帮你逐行分析 ✅