Kafka實戰-KafkaOffsetMonitor

五柳-先生發表於2016-01-25

1.概述

  前面給大家介紹了Kafka的背景以及一些應用場景,並附帶上演示了Kafka的簡單示例。然後,在開發的過程當中,我們會發現一些問題,那就是訊息的監控情況。雖然,在啟動Kafka的相關服務後,我們生產訊息和消費訊息會在終端控制檯顯示這些記錄資訊,但是,這樣始終不夠友好,而且,在實際開發中,我們不會有許可權去一直觀看終端控制檯,那麼今天就為大家來介紹Kafka的一個監控系統——KafkaOffsetMonitor。下面是今天所分享的目錄內容:

  • KafkaOffsetMonitor簡述
  • KafkaOffsetMonitor安裝部署
  • KafkaOffsetMonitor執行預覽

  下面開始今天的內容分享。

2.KafkaOffsetMonitor簡述

  KafkaOffsetMonitor是有由Kafka開源社群提供的一款Web管理介面,這個應用程式用來實時監控Kafka服務的Consumer以及它們所在的Partition中的Offset,你可以通過瀏覽當前的消費者組,並且每個Topic的所有Partition的消費情況都可以觀看的一清二楚。它讓我們很直觀的知道,每個Partition的Message是否消費掉,有木有阻塞等等。

  這個Web管理平臺保留的Partition、Offset和它的Consumer的相關歷史資料,我們可以通過瀏覽Web管理的相關模組,清楚的知道最近一段時間的消費情況。

  該Web管理平臺有以下功能:

  • 對Consumer的消費監控,並列出每個Consumer的Offset資料
  • 保護消費者組列表資訊
  • 每個Topic的所有Partition列表包含:Topic、Pid、Offset、LogSize、Lag以及Owner等等
  • 瀏覽查閱Topic的歷史消費資訊

  這些功能對於我們開發來說,已經綽綽有餘了。

3.KafkaOffsetMonitor安裝部署

3.1下載

  在安裝KafkaOffsetMonitor管理平臺時,我們需要先下載其安裝包,其資源可以在Github上找到,考慮到Github訪問的限制問題,我將安裝包上傳到百度雲盤:

  《下載地址

3.2安裝部署

  KafkaOffsetMonitor的安裝部署較為簡單,所有的資源都打包到一個JAR檔案中了,因此,直接執行即可,省去了我們去配置。這裡我們可以新建一個目錄單獨用於Kafka的監控目錄,我這裡新建一個kafka_monitor檔案目錄,然後我們在準備啟動指令碼,指令碼內容如下所示:

#! /bin/bash
java -cp KafkaOffsetMonitor-assembly-0.2.0.jar \
 com.quantifind.kafka.offsetapp.OffsetGetterWeb \
 --zk dn1:2181,dn2:2181,dn3:2181 \
 --port 8089 \
 --refresh 10.seconds \
 --retain 1.days

  給大家解釋以下這條啟動命令的含義,首先我們需要指明執行Web監控的類,然後需要用到ZooKeeper,所有要填寫ZK叢集資訊,接著是Web執行埠,頁面資料重新整理的時間以及保留資料的時間值。

3.3啟動

  接下來,我們開始啟動,啟動步驟如下所示:

  • 步驟1:啟動ZK(DN1~DN3節點)
zkServer.sh start
  • 步驟2:啟動Kafka服務(叢集依次輸入以下命令啟動)
kafka-server-start.sh config/server.properties & 
  • 步驟3:啟動Web監控服務
java -cp KafkaOffsetMonitor-assembly-0.2.0.jar \
 com.quantifind.kafka.offsetapp.OffsetGetterWeb \
 --zk dn1:2181,dn2:2181,dn3:2181 \
 --port 8089 \
 --refresh 10.seconds \
 --retain 1.days

  Web服務啟動成功後,如下圖所示:

4.KafkaOffsetMonitor執行預覽

  下面,我們來使用Kafka程式碼生產消費一些訊息,使用Web監控來瀏覽訊息情況。生產的程式碼大家可以參考前面我寫的《Kafka實戰-簡單示例》,這裡直接預覽演示結果,如下圖所示:

5.總結

  在執行KafkaOffsetMonitor的JAR包時,需要確保啟動引數的配置正確,以免啟動出錯,另外,Github的上的KafkaOffsetMonitor的JAR中的靜態資源有些連結用到了Google的超連結,所有如果直接只用,若本地木有代理軟體會啟動出錯,這裡使用我所提供的JAR,這個JAR是經過靜態資源改版後重新編譯的使用本地靜態資源。

  另外圖中的一些引數的含義如下:

  • Topic:建立Topic名稱
  • Partition:分割槽編號
  • Offset:表示該Parition已經消費了多少Message
  • LogSize:表示該Partition生產了多少Message
  • Lag:表示有多少條Message未被消費
  • Owner:表示消費者
  • Created:表示該Partition建立時間
  • Last Seen:表示消費狀態重新整理最新時間

6.結束語

  這篇部落格就和大家分享到這裡,如果大家在研究學習的過程當中有什麼問題,可以加群進行討論或傳送郵件給我,我會盡我所能為您解答,與君共勉!

 

相關文章