Kafka 監測工具 Kafka Offset Monitor

Jeff Hsieh
5 min readNov 2, 2018

--

在建置完 Kafka 後,有時對於效能的監測會有一些需求,而市面上有許多 Kafka 的 Monitor,甚至 Kafka 本身也有一些內建的 script,但大多是呈現目前有多少 topic、producer、consumer,比較少看到顯示訊息消化速度…等功能,而這次介紹的 Kafka Offset Monitor 則是有針對這部份去做顯示,操作起來也很簡單,下面開始進行介紹

這套工具可以直接到官方Github下載,在 README 裡面有打包好的 jar 檔可以使用,但是實測的結果發現該包 jar 檔其實是過期的

在官方說明中,啟動 jar 使用的 command 如下:

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

但實際運作上會發現 --offsetStorage 這個參數會拋 exception,search 過後發現似乎是官方提供的 jar 檔並沒有包到最新的原始碼,也就不能使用該參數

如果 Kafka 版本是舊版的,那可以直接把該參數拔掉不會有什麼問題,因為 Kafka Offset Monitor 不指定參數的話會去讀 Zookeeper 裡面的 offset,但是在新版的 Kafka 中,offset 不再被存到 Zookeeper 裡面,而是存在 Kafka 之中,所以如果不指定該參數的話就會發現跑起來一片空白

這邊提供我找到的新版編譯後 jar 檔
https://github.com/sylar88/kafkaOffsetMonitor-0.3.0

如果是上面的 jar 檔的話,載下來就可以用--offsetStorage這個參數了,如果不喜歡非官方包的 jar 的話,自己到官方下載原始碼然後用 sbt 編譯也是可以的

假設選定上面 0.3.0 的 jar 檔的話,下載以後用 command line 執行

java -cp KafkaOffsetMonitor-assembly-0.3.0-SNAPSHOT.jar \
com.quantifind.kafka.offsetapp.OffsetGetterWeb \
--offsetStorage kafka \
--zk localhost:2181 \
--port 8072 \
--refresh 5.seconds \
--retain 2.days

其中--offsetStorage就是決定offset儲存的地方,預設是 Zookeeper,--zk就是 Zookeeper 的位置,--port則是啟動後要去那個port顯示頁面,如果 run 在本機的話,跑起來後到 localhost:8072 就可以看到 monitor,--refresh則是圖表多久會更新一次,最後--retain 應該是指 monitor 出來的資料會存放多久

成功 run 起來以後到 localhost:8072 應該會看到下面的頁面

顯示目前擁有的 consumer group

這邊會列出目前擁有的 consumer group 列表,跟 script 的 kafka-consumer-group 功能差不多,點進去後會到下圖

consumer group 詳細資料

可以看到目前總共有 60 萬筆資料,offset也是 60 萬代表全部都消費完了

而如果要看到消化速度的話要到上面的 Topic List 頁籤

列出所有topic

點擊想要看的 topic 後就會顯示目前有哪些 consumer 正在消費

點擊 consumer 後就可以看到消費的情況

可以看到圖表中,藍色代表現在訊息量累積到了多少,白色則是offset目前在哪個位置,紅色則是還沒被消化完的數量,該筆測試用的資料量是十萬筆,每筆 100 bytes,可以看出大約五秒消化完

最後值得注意的是,在執行完要關掉服務的話,如果直接 ctrl + c 結束它,下次再 run 起來的時候有可能會出現錯誤訊息,顯示 port 已經被佔用,這時候可以用 jps | grep OffsetGetterWeb指令找出 service 的 number,然後再用 kill -9 {num} 去把它砍掉,這樣再重啟就沒問題囉~

參考文章
Kafka — (2) Kafka監控開源工具Kafka Offset Monitor | 安裝及簡介
kafka集群監控之KafkaOffsetMonitor 0.4.1版本以及用sbt編譯KafkaOffsetMonitor

--

--

Jeff Hsieh
Jeff Hsieh

Written by Jeff Hsieh

資深後端工程師,熟悉JAVA與現代網頁後端技術與框架,並具備金融市場交易知識

No responses yet