1. 检查Kafka服务状态
使用systemctl status kafka命令确认Kafka服务是否处于运行状态(active (running))。若未运行,通过systemctl start kafka启动服务;若需开机自启,执行systemctl enable kafka。
2. 查看Kafka日志定位错误
Kafka的默认日志路径为/var/log/kafka/server.log(或$KAFKA_HOME/logs/server.log),使用tail -f /var/log/kafka/server.log实时查看最新日志,通过grep "ERROR" /var/log/kafka/server.log筛选错误信息,快速定位故障根源(如端口冲突、磁盘空间不足、Zookeeper连接失败等)。
3. 验证Zookeeper连接
Kafka依赖Zookeeper实现集群管理,需确保Zookeeper服务正常运行:
systemctl status zookeeper检查Zookeeper状态;bin/zkServer.sh status(Kafka自带命令)确认Zookeeper是否处于leader或follower状态;systemctl start zookeeper启动,并检查其日志(/var/log/zookeeper/zookeeper.log)排查问题。4. 检查Kafka配置文件正确性
Kafka主配置文件通常为/etc/kafka/server.properties(或$KAFKA_HOME/config/server.properties),重点核查以下关键配置:
broker.id:集群内每个Broker的ID必须唯一;listeners:Broker监听的地址(如PLAINTEXT://0.0.0.0:9092);advertised.listeners:客户端访问Broker的地址(需与集群网络匹配,如PLAINTEXT://broker1.example.com:9092);zookeeper.connect:Zookeeper集群地址(如localhost:2181或zk1.example.com:2181,zk2.example.com:2181);log.dirs:数据存储目录(需确保磁盘空间充足,如/var/lib/kafka/data)。5. 测试网络连通性
确保Kafka节点间及客户端与Broker间网络畅通:
ping <broker_ip>测试Broker的网络可达性;telnet <broker_ip> <port>(如telnet 192.168.1.100 9092)检查端口是否开放;iptables -L -n | grep <port>)或安全组规则,放行对应端口。6. 监控系统资源使用情况
使用以下命令检查系统资源是否成为瓶颈:
top/htop:查看CPU、内存使用率(若CPU占用持续超过80%或内存耗尽,需优化Kafka配置或扩容);df -h:检查Kafka数据目录所在磁盘的剩余空间(建议保留至少20%空闲空间);iostat -x 1 10:监控磁盘IO利用率(await值过高表示磁盘性能瓶颈)。7. 检查Kafka主题与分区状态
使用Kafka自带命令验证主题和分区的健康状态:
bin/kafka-topics.sh --list --bootstrap-server <broker_ip>:<port>:列出所有主题;bin/kafka-topics.sh --describe --topic <topic_name> --bootstrap-server <broker_ip>:<port>:查看主题的详细信息(如分区数、副本数、Leader节点),确保分区有可用的Leader(Leader: -1表示无Leader,需修复副本状态)。8. 测试客户端生产与消费
使用Kafka自带的命令行工具验证客户端是否能正常读写:
bin/kafka-console-producer.sh --broker-list <broker_ip>:<port> --topic test(输入消息并回车);bin/kafka-console-consumer.sh --bootstrap-server <broker_ip>:<port> --topic test --from-beginning(查看是否能消费到生产者发送的消息)。若失败,需检查客户端配置(如bootstrap.servers)或Broker状态。9. 处理常见故障场景
ERROR信息,常见原因包括端口冲突(netstat -tuln | grep 9092)、磁盘空间不足(df -h)、配置文件错误(如broker.id重复);systemctl status kafka),并通过bin/kafka-topics.sh --describe检查分区Leader状态;logrotate工具切割日志(配置/etc/logrotate.d/kafka),避免单个日志文件占用过多磁盘空间。10. 使用监控工具辅助排查
部署监控工具实现Kafka集群的实时监控与告警: