介紹
KafkaOffsetMonitor是有由Kafka開源社區提供的一款Web管理界面,這個應用程序用來實時監控Kafka服務的Consumer以及它們所在的Partition中的Offset,你可以通過瀏覽當前的消費者組,並且每個Topic的所有Partition的消費情況都可以觀看的一清二楚。它讓我們很直觀的知道,每個Partition的Message是否消費掉,有木有阻塞等等。
這個Web管理平台保留的Partition、Offset和它的Consumer的相關歷史數據,我們可以通過瀏覽Web管理的相關模塊,清楚的知道最近一段時間的消費情況。
該Web管理平台有以下功能:
1.對Consumer的消費監控,並列出每個Consumer的Offset數據
2.保護消費者組列表信息
3.每個Topic的所有Partition列表包含:Topic、Pid、Offset、LogSize、Lag以及Owner等等
4.瀏覽查閱Topic的歷史消費信息
下載
GitHub上面有源碼的jar包,放到對應的目錄就可以了,由於我們使用新版本的kafka,所以也要使用最新的代碼,在kafka中國社區可以下載最新的0.3的版本。地址:http://pan.baidu.com/s/1kUZJrCV
安裝部署
KafkaOffsetMonitor的安裝部署較為簡單,所有的資源都打包到一個JAR文件中了,因此,直接運行即可,省去了我們去配置。這里我們可以新建一個目錄單獨用於Kafka的監控目錄,我這里新建一個kafka_monitor文件目錄,然后我們在准備啟動腳本
腳本內容如下所示:
java -cp KafkaOffsetMonitor-assembly-0.3.0-SNAPSHOT.jar
com.quantifind.kafka.offsetapp.OffsetGetterWeb --offsetStorage kafka --zk localhost:2181 --port 7070 --refresh 10.seconds --retain 2.days
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')
啟動
- 步驟1:啟動ZK(集群配置依次啟動)
- 步驟2:啟動Kafka服務(詳情見kakfa環境搭建文檔)
- 步驟3:啟動Web監控服務(按照安裝部署腳本執行)
運行
消費組列表
消費組Topic列表
topic的歷史位置

Offset存儲位置
kafka能靈活地管理offset,可以選擇任意存儲和格式來保存offset。KafkaOffsetMonitor目前支持以下流行的存儲格式。
- kafka0.8版本以前,offset默認存儲在zookeeper中(基於Zookeeper)
- kafka0.9版本以后,offset默認存儲在內部的topic中(基於Kafka內部的topic)
- Storm Kafka Spout(默認情況下基於Zookeeper)
KafkaOffsetMonitor每個運行的實例只能支持單一類型的存儲格式。