在 Debian 上排查 Apache Kafka 故障,一般可以按“系统层 → Kafka 进程层 → 日志层 → 集群/配置层 → 客户端层”逐层进行。下面给你一套实用排查思路和常用命令。
ps -ef | grep kafka
# 或
systemctl status kafka
如果是 systemd 安装:
systemctl status kafka
journalctl -u kafka -n 200
Kafka 默认端口:
ss -lntp | grep 9092
ss -lntp | grep 2181
top
free -h
df -h
iostat -x 1
常见问题:
通常在:
/opt/kafka/logs/
# 或
/var/log/kafka/
关键日志文件:
server.log:核心日志controller.log:控制器相关state-change.log:分区状态变更kafkaServer.out:启动输出查看最近错误:
tail -n 200 /opt/kafka/logs/server.log | grep -i error
Leader not availableNot enough replicasOffset out of rangeConnection refusedZooKeeper session expiredFailed to acquire locksystemctl status zookeeper
/opt/kafka/bin/zookeeper-shell.sh localhost:2181
> ls /
> ls /brokers/ids
/opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092
或(旧版本):
/opt/kafka/bin/zookeeper-shell.sh localhost:2181
> ls /brokers/ids
kafka-topics.sh --bootstrap-server localhost:9092 \
--describe --topic your_topic
重点看:
kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
--describe --group your_group
关注:
cat /opt/kafka/config/server.properties
重点配置:
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://your_host:9092
num.partitions=
default.replication.factor=
min.insync.replicas=
log.dir=
常见坑:
advertised.listeners 配置错误 → 客户端连不上log.dir 磁盘满kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic test
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test --from-beginning
| 现象 | 可能原因 | 排查点 |
|---|---|---|
| 无法启动 | 配置错误 | server.log |
| 写入失败 | 磁盘满 | df -h |
| 消费滞后 | 消费慢 | LAG |
| Leader 不存在 | Broker 宕机 | broker 列表 |
| 频繁重平衡 | 消费慢 | GC / 线程 |
| 连不上 | 防火墙 | ss / iptables |
如果你能贴出:
我可以给你更精确的排查步骤。