Debian Kafka集群故障排查指南
首先明确故障的具体表现,常见类型包括:
通过监控工具(如Kafka Manager、Prometheus+Grafana)或客户端报错信息快速识别问题类型。
Kafka的日志是故障排查的核心依据,主要查看以下日志文件:
/var/log/kafka/server.log(或自定义路径),重点搜索ERROR、WARN关键词,如InconsistentClusterIdException(集群ID不匹配)、SocketTimeoutException(网络超时)等。journalctl -u kafka(systemd系统)或tail -f /var/log/syslog查看系统级错误(如磁盘空间不足、端口冲突)。/var/log/zookeeper/zookeeper.log,确认ZooKeeper是否正常运行(如节点宕机、会话超时)。检查Kafka主配置文件/etc/kafka/server.properties的关键参数:
broker.id:确保集群内唯一,无重复。listeners与advertised.listeners:listeners为Broker自身监听地址(如PLAINTEXT://0.0.0.0:9092),advertised.listeners为客户端访问地址(如PLAINTEXT://broker1.debian:9092),需与网络环境匹配。zookeeper.connect:确认ZooKeeper集群地址正确(如zk1:2181,zk2:2181,zk3:2181),无拼写错误。systemctl status kafka检查Kafka服务是否运行,若未运行,尝试systemctl start kafka并查看启动日志。jps命令确认Kafka进程存在(如Kafka进程),若进程不存在,说明启动失败。netstat -tuln | grep 9092(或Kafka配置的端口)检查端口是否被占用,若被占用,修改配置或停止占用进程。ping(测试网络连通性)、telnet broker_ip 9092(测试端口可达性)确认Broker间、Broker与客户端间的网络正常。df -h检查磁盘空间(确保log.dirs所在分区剩余空间充足,建议至少保留10%)。free -h检查内存使用(避免内存不足导致频繁GC)。top或htop检查CPU使用率(避免CPU过载导致处理延迟)。broker.id重复、zookeeper.connect无效)、端口冲突、ZooKeeper不可用、磁盘空间不足、Java版本不兼容(需OpenJDK 11+)。kill -9 <pid>);修复ZooKeeper集群;清理磁盘空间;安装正确版本的Java。kafka-topics.sh --describe --topic <topic_name>查看分区状态,若ISR集合缩小,检查滞后副本的Broker日志;若Leader宕机,等待自动选举或手动触发选举(kafka-leader-election.sh);更换故障磁盘并修复数据。9092)和ZooKeeper端口(如2181);修正listeners和advertised.listeners配置;修复ZooKeeper集群。compression.type=producer);增加JVM堆内存(KAFKA_HEAP_OPTS="-Xmx4G -Xms4G");调整分区数(num.partitions,根据吞吐量需求增加);优化GC参数(KAFKA_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=200")。log.retention.hours)、优化分区分布(kafka-reassign-partitions.sh平衡副本)、测试故障恢复流程(如Broker宕机重启)。