温馨提示×

怎样调试Debian的Kafka服务

小樊
45
2026-07-23 17:13:54
栏目: 智能运维

在 Debian 上调试 Kafka 服务,通常可以从 服务状态、日志、配置、端口、JVM、系统资源 等方面入手。下面给你一套比较系统的排查思路(适用于 systemd 管理的 Kafka官方/第三方包)。


一、确认 Kafka 服务状态

1. 查看服务是否运行

systemctl status kafka

常见状态:

  • active (running)
  • failed
  • activating ⚠(可能端口被占用或 ZooKeeper 没启动)

重启服务:

systemctl restart kafka

查看是否开机自启:

systemctl is-enabled kafka

二、查看 Kafka 日志(最关键)

1. Kafka 自身日志

常见路径:

/var/log/kafka/

/opt/kafka/logs/

重点查看:

server.log
controller.log

实时查看:

tail -f /var/log/kafka/server.log

常见错误关键词:

  • ERROR
  • FATAL
  • Address already in use
  • Connection refused
  • OutOfMemoryError

2. systemd 日志

journalctl -u kafka -f

如果 Kafka 启动就失败,这里通常能看到 JVM 或启动参数问题。


三、检查 ZooKeeper(非常重要)

Kafka 依赖 ZooKeeper(除非你用的是 KRaft 模式)。

1. 确认 ZooKeeper 是否运行

systemctl status zookeeper

2. 测试 ZooKeeper 端口

ss -lntp | grep 2181

或:

telnet localhost 2181

ZooKeeper 日志:

/var/log/zookeeper/

四、检查 Kafka 配置文件

1. server.properties

常见路径:

/etc/kafka/server.properties

/opt/kafka/config/server.properties

重点检查:

broker.id=0
listeners=PLAINTEXT://:9092
log.dirs=/var/lib/kafka-logs
zookeeper.connect=localhost:2181

常见错误:

  • log.dirs 目录不存在或权限不足
  • listeners 写错
  • zookeeper.connect 指向错误地址

2. 检查目录权限

ls -ld /var/lib/kafka-logs

修复权限示例:

chown -R kafka:kafka /var/lib/kafka-logs

五、检查端口和进程

1. 查看 Kafka 是否监听 9092

ss -lntp | grep 9092

如果没有监听:

  • Kafka 没启动成功
  • 端口被占用

2. 查看 Java 进程

ps -ef | grep kafka

或:

jps

应看到:

Kafka

六、测试 Kafka 是否可用

1. 创建 topic

/opt/kafka/bin/kafka-topics.sh \
--bootstrap-server localhost:9092 \
--create \
--topic test

2. 查看 topic

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

3. 发送 / 消费消息

kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

七、JVM / 内存问题排查

1. 查看 Kafka 是否 OOM

dmesg | grep -i oom

2. 调整 JVM 参数

编辑:

/etc/kafka/kafka-env.sh

或 systemd service 文件:

Environment="KAFKA_HEAP_OPTS=-Xmx1G -Xms512M"

八、KRaft 模式(无 ZooKeeper)

如果你是 Kafka 3.x+ 且使用 KRaft

检查:

process.roles=broker,controller
node.id=1
controller.quorum.voters=1@localhost:9093

KRaft 不需要 ZooKeeper,许多“连不上 ZooKeeper”的问题其实是配置错了模式。


九、常见错误速查表

现象 可能原因
启动失败 ZooKeeper 未启动
端口未监听 配置错误 / 权限问题
OOM JVM 内存不足
topic 创建失败 broker 未就绪
连接拒绝 listeners 配置错误

十、建议的调试顺序(总结)

  1. systemctl status kafka
  2. journalctl -u kafka -f
  3. 查看 server.log
  4. 确认 ZooKeeper / KRaft
  5. 检查 server.properties
  6. 检查端口 & 权限
  7. 测试 topic

如果你愿意,可以把 具体报错日志systemctl status 输出贴出来,我可以直接帮你定位问题。

0