温馨提示×

如何排查Debian Kafka故障

小樊
45
2026-07-23 17:20:48
栏目: 智能运维

排查 Debian 上 Kafka 故障,一般从 系统 → Java → Kafka 进程 → 配置 → 网络 → 磁盘 → 日志 逐层进行。下面给你一套实用排查清单,适合生产环境。


一、基础环境检查

1. 系统资源

# CPU / 内存
top
htop

# 磁盘空间(Kafka 很怕磁盘满)
df -h

# 磁盘 IO
iostat -x 1

⚠️ Kafka 对 磁盘空间 & IO 非常敏感。


2. Java 环境

Kafka 依赖 Java:

java -version

推荐:

  • Java 8 / 11 / 17(与 Kafka 版本匹配)

检查 JAVA_HOME

echo $JAVA_HOME

二、Kafka 进程状态

1. 进程是否存在

ps -ef | grep kafka
jps

正常应看到:

  • Kafka
  • QuorumPeerMain(如果用 ZooKeeper)

2. Kafka 是否监听端口

ss -lntp | grep 9092

或:

netstat -lntp | grep 9092

三、Kafka 日志排查(最关键)

1. Kafka 日志路径

默认在:

/opt/kafka/logs/

或你配置的:

log.dirs=/var/lib/kafka-logs

重点文件:

  • server.log
  • controller.log
  • state-change.log

2. 用 journalctl(如果用 systemd)

journalctl -u kafka -f

3. 常见错误日志关键词

在日志中搜索:

grep -i error server.log
grep -i fatal server.log

常见错误:

  • OutOfMemoryError
  • Connection refused
  • Broker may not be available
  • Disk error
  • Leader not available

四、Kafka 配置检查

1. 配置文件

/opt/kafka/config/server.properties

重点参数:

broker.id
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://<IP>:9092
log.dirs
zookeeper.connect
num.partitions

⚠️ 最常见问题

  • advertised.listeners 配置错误
  • ZooKeeper 地址错误

2. ZooKeeper 状态(老版本 Kafka)

systemctl status zookeeper

或:

/opt/kafka/bin/zookeeper-shell.sh localhost:2181 ls /

五、网络与端口连通性

1. 本地测试

telnet localhost 9092

2. 远程测试

telnet <kafka_ip> 9092

3. 防火墙

iptables -L -n
ufw status

六、Kafka 功能级排查

1. Topic 是否正常

kafka-topics.sh --bootstrap-server localhost:9092 --list

查看详情:

kafka-topics.sh --bootstrap-server localhost:9092 --describe

2. 生产 / 消费测试

# 生产
kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic test

# 消费
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test --from-beginning

七、常见故障场景速查

1. Kafka 起不来

✅ 检查:

  • Java 是否安装
  • log.dirs 磁盘是否满
  • 端口是否被占用
  • server.properties 是否写错

2. 能启动但连不上

✅ 检查:

  • advertised.listeners
  • 防火墙
  • 客户端 IP 是否可达

3. 消息发不进去

✅ 检查:

  • Topic 是否存在
  • Broker 是否是 Leader
  • ISR 是否完整
kafka-topics.sh --describe

4. 磁盘满导致 Kafka 卡死

✅ 解决:

  • 清理旧日志
  • 调整:
log.retention.hours
log.segment.bytes

八、推荐监控工具

  • kafka-run-class.sh kafka.tools
  • Prometheus + JMX Exporter
  • Kafka Eagle
  • Burrow(消费延迟)

九、快速排障命令总结

ps -ef | grep kafka
ss -lntp | grep 9092
df -h
tail -f /opt/kafka/logs/server.log
kafka-topics.sh --bootstrap-server localhost:9092 --list

如果你愿意,可以告诉我:

  • Kafka 版本
  • 错误日志片段
  • 起不来 / 连不上 / 丢消息 / 消费慢

我可以 直接帮你定位具体原因

0