Ubuntu Kafka故障排查常用方法
使用systemctl命令確認Kafka服務是否處于運行狀態,若未運行則啟動服務并設置開機自啟。
sudo systemctl status kafka # 查看服務狀態
sudo systemctl start kafka # 啟動服務
sudo systemctl enable kafka # 設置開機自啟
Kafka的日志文件(默認位于/var/log/kafka/server.log)記錄了詳細的錯誤信息和異常堆棧,是定位故障的核心依據。使用tail命令實時查看最新日志:
tail -500 /var/log/kafka/server.log # 查看最近500行日志
sudo tail -f /var/log/kafka/server.log # 實時跟蹤日志輸出
檢查server.properties(通常位于/etc/kafka/或Kafka安裝目錄下)的關鍵配置項是否正確,重點關注:
listeners:Broker監聽的地址和端口(如PLAINTEXT://your_server_ip:9092);advertised.listeners:客戶端連接的地址和端口(需與集群內其他Broker一致);zookeeper.connect:Zookeeper集群連接串(如localhost:2181或zk1:2181,zk2:2181,zk3:2181);log.dirs:日志數據存儲目錄(需確保目錄存在且有寫入權限)。cat /etc/kafka/server.properties | grep -E "listeners|advertised.listeners|zookeeper.connect|log.dirs"
確保Kafka Broker之間、Broker與客戶端之間的網絡通信正常:
ping命令測試Broker之間的網絡連通性;telnet或nc命令測試端口是否可達(如Kafka的9092端口、Zookeeper的2181端口):ping your_kafka_broker_ip # 測試網絡連通性
telnet your_kafka_broker_ip 9092 # 測試端口可達性
nc -zv your_kafka_broker_ip 9092 # 替代telnet的端口測試命令
Kafka的性能高度依賴硬件資源,使用以下命令檢查CPU、內存、磁盤的占用情況:
top或htop(按1查看每個核心的使用率);free -h(查看已用/可用內存);df -h(檢查log.dirs所在分區的剩余空間,建議保留20%以上);iostat -x 1 10(查看磁盤的讀寫延遲、吞吐量,await值過高表示IO瓶頸)。top # 實時查看CPU和內存使用
df -h # 查看磁盤空間
iostat -x 1 10 # 監控磁盤IO(需安裝sysstat包)
Kafka提供的命令行工具可用于快速測試生產和消費功能,驗證集群基本功能是否正常:
kafka-console-producer.sh);kafka-console-consumer.sh);kafka-topics.sh)。# 生產消息(本地Broker,端口9092,主題test_topic)
kafka-console-producer.sh --broker-list localhost:9092 --topic test_topic
# 消費消息(從最早的消息開始讀?。?/span>
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test_topic --from-beginning
# 查看Topic詳情
kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic test_topic
Kafka依賴Zookeeper實現集群協調(如Leader選舉、分區管理),需確保Zookeeper服務正常運行:
sudo systemctl status zookeeper;/var/log/zookeeper/):tail -500 /var/log/zookeeper/zookeeper.log;zkCli.sh工具連接Zookeeper,檢查Kafka相關的節點是否存在:sudo systemctl status zookeeper # 檢查Zookeeper服務狀態
zkCli.sh -server localhost:2181 # 連接Zookeeper(默認端口2181)
ls /brokers/ids # 查看已注冊的Broker節點
借助第三方監控工具實現對Kafka集群的長期監控和告警,快速發現性能瓶頸或異常:
jconsole、jmc等工具連接Kafka Broker的JMX端口(默認9999),監控關鍵指標(如消息入隊速率、消費延遲、分區Leader分布);kafka_exporter采集Kafka指標,用Grafana展示 dashboard(如Broker負載、Topic積壓情況);compression.type)、批量發送大?。?code>batch.size)、分區數量(num.partitions)及磁盤IO性能;kafka-consumer-groups.sh查看REBALANCE狀態),確認消費者數量是否足夠;group.id)、訂閱的主題是否存在(kafka-topics.sh --list),確認消費者是否正常啟動(無ConsumerCoordinatorNotAvailableException錯誤)。