Ubuntu环境下Kafka故障排查指南
首先确认Kafka服务是否正在运行,使用以下命令查看服务状态:
sudo systemctl status kafka
若服务未运行,启动Kafka:sudo systemctl start kafka;若需开机自启,执行:sudo systemctl enable kafka。
同时检查Zookeeper状态(Kafka依赖Zookeeper):sudo systemctl status zookeeper,确保其正常运行。
Kafka的日志是故障定位的核心依据,默认路径为/var/log/kafka/(或自定义路径)。使用以下命令实时查看最新日志:
sudo tail -f /var/log/kafka/server.log
重点关注ERROR或WARN级别的日志,例如端口冲突、磁盘空间不足、ZooKeeper连接失败等问题会在此记录。
检查Kafka主配置文件/etc/kafka/server.properties的关键参数是否正确:
broker.id:每个Broker的唯一标识(集群中不可重复);listeners:Broker监听的地址和端口(如PLAINTEXT://0.0.0.0:9092);advertised.listeners:客户端连接的地址(需与Broker实际IP一致,避免网络可达性问题);zookeeper.connect:ZooKeeper集群地址(如localhost:2181);log.dirs:日志存储目录(需存在且可写)。sudo systemctl restart kafka。确保Kafka Broker之间、Broker与客户端之间的网络通信正常:
ping <broker-ip>测试Broker的网络可达性;telnet <broker-ip> 9092(或Kafka端口)测试端口是否开放;sudo ufw allow 9092/tcp。Kafka的性能高度依赖硬件资源,使用以下命令检查资源使用情况:
top或htop(查看CPU使用率,若长期超过80%需优化或扩容);free -h(查看JVM堆内存使用情况,若频繁Full GC需调整KAFKA_HEAP_OPTS,如-Xmx4G -Xms4G);df -h(查看日志目录所在磁盘的剩余空间,建议保留至少20%空间);iostat -x 1 10(查看磁盘I/O负载,若%util接近100%需升级SSD或优化日志清理策略)。Kafka依赖ZooKeeper管理集群元数据,若ZooKeeper异常会导致Kafka无法正常运行:
zkCli.sh连接ZooKeeper:./zkCli.sh -server localhost:2181;stat命令查看ZooKeeper状态(Mode应为leader或follower,Zxid应持续增长);/var/log/zookeeper/),查看是否有连接超时、数据不一致等问题。sudo netstat -tulnp | grep 9092找到占用进程,杀死进程或修改Kafka的listeners配置;log.dirs、config/等目录有读写权限:sudo chown -R $USER:$USER /path/to/kafka;java -version验证,若版本不符,安装合适版本:sudo apt install openjdk-11-jdk;num.consumer.fetchers)、调整fetch.max.bytes(增大单次拉取数据量)或优化消费者处理逻辑(异步处理、批量处理)。