CentOS 上 Kafka 故障排查实操手册
一 快速定位流程
systemctl status kafka -l、journalctl -u kafka -xe --since "5 minutes ago"。/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties。前台输出常能直接暴露如内存、配置、权限等致命问题。tail -f /opt/kafka/logs/server.log。zookeeper.connect 配置);检测 9092 端口是否被占用或放通;必要时用 telnet/nc 测试连通。二 常见故障与修复要点
systemctl status zookeeper),核对 server.properties 中 zookeeper.connect 地址与端口,网络与防火墙策略放通 2181。mkdir -p /var/kafka/logs && chown kafka:kafka /var/kafka/logs && chmod 755 /var/kafka/logs;确保 server.properties 中 log.dirs 指向正确路径。netstat -tulpen | grep 9092 或 ss -lntp | grep 9092,释放占用或修改 listeners 端口后重启。bin/kafka-server-start.sh 的 KAFKA_HEAP_OPTS,如 -Xms2G -Xmx2G),再启动。server.properties 明确 listeners 与 advertised.listeners,对外暴露使用 IP:listeners=PLAINTEXT://:9092、advertised.listeners=PLAINTEXT://<Your_IP>:9092,必要时同时设置 advertised.host.name 与 advertised.port 以兼容旧客户端。firewalld 或 iptables,必要时调整 SELinux 策略,验证后再固化规则。/etc/security/limits.conf 提升限制,如 * soft nofile 65536、* hard nofile 65536、* soft nproc 65536、* hard nproc 65536,并重启会话/服务生效。server.properties 一致;如为复用目录或新增节点,清理该 log.dirs 后再启动。三 关键配置与网络连通性检查
broker.id:集群内唯一;listeners 与 advertised.listeners:对外可达的 IP:9092;zookeeper.connect:Zookeeper 地址清单;log.dirs:存在且可写的目录;ss -lntp | grep 9092 或 netstat -tulpen | grep 9092;telnet <broker_ip> 9092 或 nc -vz <broker_ip> 9092;firewall-cmd --list-ports / firewall-cmd --add-port=9092/tcp --permanent && firewall-cmd --reload;getenforce(必要时 setenforce 0 做临时验证)。/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server <IP>:9092 --topic test/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server <IP>:9092 --topic test --from-beginning四 日志管理与长期观测
tail -f /opt/kafka/logs/server.log、grep -i "error\|exception" /opt/kafka/logs/server.log;结合 awk/sed 做字段筛选。