1. 啟用JMX監控(基礎前提)
Kafka通過JMX(Java Management Extensions)暴露了大量關鍵性能指標(如吞吐量、延遲、磁盤I/O等),是監控的核心基礎。需在Kafka啟動腳本(如kafka-server-start.sh
)中添加JMX參數,示例如下:
export KAFKA_HEAP_OPTS="-Xmx4G -Xms4G" # 根據服務器內存調整堆大小
export JMX_PORT=9999 # 指定JMX端口(需確保防火墻放行)
nohup sh bin/kafka-server-start.sh config/server.properties > logs/server.log 2>&1 &
啟用后,可通過jconsole
(Java自帶)、VisualVM
等工具直接連接<broker_host>:9999
,實時查看Broker的各項指標。
2. 使用Kafka自帶命令行工具(快速排查)
Kafka自帶多組命令行工具,無需額外安裝,適合快速檢查集群狀態:
bin/kafka-topics.sh --list --bootstrap-server <broker_host>:<port>
(替代舊版的--zookeeper
參數,適用于Kafka 2.8+版本)。bin/kafka-consumer-groups.sh --bootstrap-server <broker_host>:<port> --describe --group <group_name>
,可獲取消費速率、偏移量提交情況、延遲(Lag)等關鍵信息。bin/kafka-run-class.sh kafka.tools.JMXShell --object-name kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec --jmx-url service:jmx:rmi:///jndi/rmi://<broker_host>:9999/jmxrmi
,直接查詢特定JMX指標(如每秒消息攝入量)。3. Prometheus + Grafana(可視化監控)
這是目前最流行的開源監控+可視化方案,適合大規模集群:
kafka_exporter-1.4.2.linux-amd64.tar.gz
),解壓后運行./kafka_exporter --kafka.server=<broker_host>:<port>
,默認暴露9308
端口。prometheus.yml
,添加Kafka Exporter的抓取任務:scrape_configs:
- job_name: 'kafka'
static_configs:
- targets: ['<kafka_exporter_host>:9308']
7587
,涵蓋Broker、主題、消費者等指標),即可直觀查看吞吐量、延遲、ISR數量等趨勢圖。4. Kafka Manager(集群管理+監控)
Kafka Manager(又稱CMAK)是開源的Web管理工具,適合中小規模集群,提供集群狀態、Broker指標、消費者組監控等功能:
./bin/cmak -Dconfig.file=conf/application.conf -Dhttp.port=9000 &
。http://<manager_host>:9000
,配置Kafka集群的ZooKeeper地址,即可查看Broker列表、主題詳情、消費者組延遲等信息。5. Burrow(消費者偏移量專項監控)
Burrow是專門針對Kafka消費者偏移量的監控工具,可精準檢測消費者延遲、偏移量超限等問題,避免消息堆積:
config.toml
文件,添加Kafka集群信息。6. Confluent Control Center(商業級全面監控)
Confluent Control Center是Confluent官方提供的商業監控工具,適合企業級場景,提供集中化集群管理、性能指標分析、實時告警等功能:
7. 關鍵監控指標(聚焦核心問題)
無論選擇哪種工具,都需重點監控以下指標,覆蓋Broker、主題、消費者三大層面:
8. 告警策略(防患于未然)
結合Prometheus的Alertmanager組件,設置合理的告警規則,及時響應問題:
JvmMemoryHeapUsedPercent > 80%
(JVM內存不足)、RequestLatencyAvg > 1000ms
(請求延遲過高)。RecordsLag > 10000
(消費者延遲超過1萬條)、UnderReplicatedPartitions > 0
(分區未同步)。ConsumerLag > 5000
且持續5分鐘(消費者長時間未消費)。