温馨提示×

怎样排查linux kafka故障

小樊
57
2026-10-02 09:20:50
栏目: 智能运维

排查 Linux 上 Kafka 故障,一般遵循 “从外到内、从集群到应用” 的思路。下面给你一套实战向的排查清单,覆盖常见故障场景。


一、先确认基础环境

1. 服务是否正常运行

# 查看进程
ps -ef | grep kafka

# 或用 systemd
systemctl status kafka

2. 端口与监听

netstat -tunlp | grep 9092
# 或
ss -tunlp | grep 9092

3. 磁盘 & inode

Kafka 对磁盘非常敏感:

df -h
df -i

常见问题:

  • 磁盘满 → Kafka 停止写入
  • inode 满 → 无法创建新日志段

二、查看 Kafka 日志(最重要)

1. Kafka 服务日志

默认路径(视安装方式):

# 原生安装
tail -f /opt/kafka/logs/server.log

# 包管理或 systemd
journalctl -u kafka -f

重点关注:

  • ERROR
  • Shutdown
  • IOException
  • Not enough replicas
  • Leader not available

三、使用 Kafka 自带工具排查

1. 检查 Broker 状态

kafka-broker-api-versions.sh --bootstrap-server localhost:9092

2. 查看 Topic 状态

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

关注:

  • Leader 是否为 -1
  • ISR 是否小于副本数
  • Partition 是否 Under-Replicated

3. 消费者是否落后

kafka-consumer-groups.sh \
  --bootstrap-server localhost:9092 \
  --describe --group your-group

关注:

  • LAG 是否持续增长
  • CURRENT-OFFSET 是否不前进

四、常见故障场景 & 处理

场景 1:Producer 发不出去

可能原因:

  • broker 宕机
  • topic 不存在且 auto.create.topics.enable=false
  • 网络问题

排查:

telnet broker_ip 9092
kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test

场景 2:消费者收不到消息

检查:

  • group 是否重平衡频繁
  • 消费者是否死循环/阻塞
  • 是否指定了错误 offset
kafka-console-consumer.sh \
  --bootstrap-server localhost:9092 \
  --topic test --from-beginning

场景 3:Leader 频繁切换

原因:

  • 网络抖动
  • GC 停顿
  • 磁盘 IO 高

排查:

# GC 日志
grep -i "full gc" /opt/kafka/logs/kafkaServer-gc.log

# IO
iostat -x 1

场景 4:磁盘写满

临时处理:

  • 清理旧日志
  • 调整 log.retention.hours
du -sh /opt/kafka/logs/*

五、ZooKeeper(老版本 Kafka)

如果是 Kafka < 2.8:

zkCli.sh
ls /brokers/ids
get /controller

若 /brokers/ids 为空 → broker 未注册


六、系统层辅助排查

# CPU / 内存
top
free -h

# 网络
ping broker_ip
tcpdump -i eth0 port 9092

# 文件句柄
ulimit -n

七、推荐的标准排查顺序

  1. 服务是否活着
  2. 日志有没有 ERROR
  3. 磁盘 / 内存 / CPU
  4. Topic / Partition 状态
  5. 生产者 / 消费者状态
  6. 网络 & 配置

如果你能告诉我:

  • Kafka 版本
  • 报错日志片段
  • 是 生产 / 消费 / 集群异常

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

0 踩