1. 程式人生 > >KafkaOffsetMonitor監控工具的安裝與引數說明(該方法避免了監控頁面內容無法顯示和Java客戶端消費者組無法監控等問題)

KafkaOffsetMonitor監控工具的安裝與引數說明(該方法避免了監控頁面內容無法顯示和Java客戶端消費者組無法監控等問題)

概述

一個小應用程式來監視kafka消費者的進度和它們的延遲的佇列。

KafkaOffsetMonitor是用來實時監控Kafka叢集中的consumer以及在佇列中的位置(偏移量)。

你可以檢視當前的消費者組,每個topic佇列的所有partition的消費情況。可以很快地知道每個partition中的訊息是否很快被消費以及相應的佇列訊息增長速度等資訊。這些可以debug kafka的producer和consumer,你完全知道你的系統將會發生什麼。

這個web管理平臺保留的partition offset和consumer滯後的歷史資料(具體資料儲存多少天我們可以在啟動的時候配置),所以你可以很輕易瞭解這幾天consumer消費情況。

KafkaOffsetMonitor這款軟體是用Scala程式碼編寫的,訊息等歷史資料是儲存在名為offsetapp.db資料庫檔案中,該資料庫是SQLLite檔案,非常的輕量級。雖然我們可以在啟動KafkaOffsetMonitor程式的時候指定資料更新的頻率和資料儲存的時間,但是不建議更新很頻繁,或者儲存大量的資料,因為在KafkaOffsetMonitor圖形展示的時候會出現影象展示過慢,或者是直接導致記憶體溢位了。

所有的關於訊息的偏移量、kafka叢集的數量等資訊都是從Zookeeper中獲取到的,日誌大小是通過計算得到的。

消費者組列表

在這裡插入圖片描述

消費組的topic列表

在這裡插入圖片描述

圖中引數含義解釋如下:
topic:建立時topic名稱
partition:分割槽編號
offset:表示該parition已經消費了多少條message
logSize:表示該partition已經寫了多少條message
Lag:表示有多少條message沒有被消費。
Owner:表示消費者
Created:該partition建立時間
Last Seen:消費狀態重新整理最新時間。

topic的歷史位置

在這裡插入圖片描述

Offset儲存位置

kafka能靈活地管理offset,可以選擇任意儲存和格式來儲存offset。KafkaOffsetMonitor目前支援以下流行的儲存格式。

kafka0.8版本以前,offset預設儲存在zookeeper中(基於Zookeeper)
kafka0.9版本以後,offset預設儲存在內部的topic中(基於Kafka內部的topic)
Storm Kafka Spout(預設情況下基於Zookeeper)
KafkaOffsetMonitor每個執行的例項只能支援單一型別的儲存格式。

下載

可以到github下載KafkaOffsetMonitor原始碼。

https://github.com/quantifind/KafkaOffsetMonitor

編譯KafkaOffsetMonitor命令:

sbt/sbt assembly

不過不建議你自己去下載,因為編譯的jar包裡引入的都是外部的css和js,所以開啟必須聯網,都是國外的地址,你編譯的時候還要修改js路徑,我已經搞定了,你直接下載就好了。

百度雲盤:https://pan.baidu.com/s/1kUZJrCV
啟動
編譯完之後,將會在KafkaOffsetMonitor根目錄下生成一個類似KafkaOffsetMonitor-assembly-0.3.0-SNAPSHOT.jar的jar檔案。這個檔案包含了所有的依賴,我們可以直接啟動它:

java -cp KafkaOffsetMonitor-assembly-0.3.0-SNAPSHOT.jar \
     com.quantifind.kafka.offsetapp.OffsetGetterWeb \
     --offsetStorage kafka \
     --zk zk-server1,zk-server2 \
     --port 8080 \
     --refresh 10.seconds \
     --retain 2.days

啟動方式2,建立指令碼,因為您可能不是一個kafka叢集。用指令碼可以啟動多個。

vim mobile_start_en.sh

nohup java -Xms512M -Xmx512M -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m -cp KafkaOffsetMonitor-assembly-0.3.0-SNAPSHOT.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb 
   --offsetStorage kafka
   --zk 127.0.0.1:2181  
   --port 8080      
   --refresh 10.seconds      
   --retain 2.days 1>mobile-logs/stdout.log 2>mobile-logs/stderr.log &

各個引數的含義:
offsetStorage:有效的選項是"zookeeper",“kafka”,“storm”。0.9版本以後,offset儲存的位置在kafka。
zk: zookeeper的地址
prot 埠號
refresh 重新整理頻率,更新到DB。
retain 保留DB的時間
dbName 在哪裡儲存記錄(預設’offsetapp’)

本文轉自:http://orchome.com/54