Kafka監控框架介紹
前段時間在想Kafka怎麼監控、怎麼知道生產的訊息或消費的消費是否有丟失,目前有幾個開源的Kafka監控框架這裡整理了下,不過這幾個框架都有各自的問題側重點不一樣;
1、Kafka Monitor
2、Availability-Monitor-for-Kafka
3、Kafka Web Console
4、Kafka Manage
5、KafkaOffsetMonitor
kafka-monitor
git clone https://github.com/linkedin/kafka-monitor.git cd kafka-monitor ./gradlew jar //下載依賴,這個會比較久編譯原始碼
啟動KafkaMonitor
./bin/kafka-monitor-start.sh config/kafka-monitor.properties
啟動端到端監控Kafka叢集:
./bin/end-to-end-test.sh --topic test --broker-list localhost:9092 --zookeeper localhost:2181
開啟監控頁面:http://localhost:8000/index.html 頁面顯示 kafka實時的度量監控值(例如,服務可用性,訊息丟失率)動態圖顯示
Kafka-monitor把度量監控資訊寫入JMX中,並使用jolokia框架所以可以通過http請求獲取監控的度量值;
curl localhost:8778/jolokia/read/kmf.services:type=produce-service,name=*/produce-availability-avg
Kafka-monitor與Kafka為同根同源的都是LinkedIn公司開源的不過Kafka-minitor剛開源沒半年所有功能相對於其他監控框架來說比較簡單;
kafka-monitor啟動後會啟動一個produce、一個consume,broker過時時間為10分鐘; 用於捕獲服務的可用性、訊息丟失率、延遲率等,可監控叢集與單個kafka;
kafka-monitor預設自動建立監控topic,可以修改為已經存在的topic,自動增加partition,確保監控topic的partition# >= broker#
produce用於生成訊息到kafka,併產生生成速率、可用性度量資料
consume從kafka中消費訊息,併產生訊息丟失率、訊息重複率、端到端延遲 依賴生產服務來提供訊息內嵌的訊息序列號和時間戳。
KafkaManager
KafkaManager為Yahoo開源的KafkaManager管理工具, 可管理多個叢集; 能夠更容易地檢查叢集的狀態, 能夠建立主題, 執行首選的副本選擇,能夠基於叢集當前的狀態生成分割槽分配,並基於生成的分配執行分割槽的重分配 檢查叢集狀態可以發現叢集中主題分佈不均勻、分割槽分佈不均勻等,
KafkaManager 編譯生成,下載依賴會比較久
Availability Monitor for Kafka
Availability Monitor for Kafka微軟開源的Kafka可用性、延遲性的監控框架,提供JMX介面,並可存入SqlServer;
AvailabilityMonitor可監控傳送與讀取資料的可用性、延遲;
Producer可用性=所有主題和分割槽成功傳送訊息數/嘗試傳送訊息數
Consumer可用性=所有主題和分割槽訊息成功讀取數/訊息嘗試讀取數
通過往Producer傳送資料測試Producer的可用性與延遲,訊息以CanaryMessage_為字首,可以通過producerProperties.json修改;
通過從所有分割槽的尾部讀取資料來衡量Consumer的可用性與延遲
文章首發地址:Solinx
http://www.solinx.co/archives/851