1. 程式人生 > >kafka web頁面監控KafkaOffsetMonitor

kafka web頁面監控KafkaOffsetMonitor

原文地址:http://blog.csdn.net/qq_20641565/article/details/72897666

黑視窗的kafka叢集沒有監控,可以使用三方開源的監控工具,查詢了些資料,網上流傳最多的有三個監控工具:

  1. Kafka Web Conslole
  2. Kafka Manager
  3. KafkaOffsetMonitor

先補一張生產資料(28個patition,不算冗餘的資料 一天大概200G):

這裡寫圖片描述

根據網友的實踐:

Kafka Web Conslole

程式執行後,會定時去讀取kafka叢集分割槽的日誌長度,讀取完畢後,連線沒有正常釋放,一段時間後產生大量的socket連線,導致網路堵塞,所以不建議使用。

Kafka Manager

雅虎開源的一個監控工具,可以用來監控多個叢集。

KafkaOffsetMonitor

相對上面來說,這個工具耦合性比較低,單用於監控比較適合而且部署很簡單。
這裡也介紹了下安裝步驟,本來很簡單的,但是版本不相容,導致需要自己編譯,然後記錄下踩的坑。。。

(注意:kafka新的版本offset儲存在自己的一個topic,不像老版本是存在zookeeper裡面,所以用KafkaOffsetMonitor2.x的版本監控會有問題,根本監控不到資料,所以最好在github上面下載最新的版本自己編譯,注意jdk版本)

我們使用KafkaOffsetMonitor監控工具

  • KafkaOffsetMonitor的安裝

下載軟體包:
github地址(0.2.1版本):

點選下載

這個是用assembly外掛直接把所有包打到了一個jar裡面,上傳伺服器,直接啟動就行,特別方便。

上傳jar包到伺服器,然後建立一個kafka監控的目錄

mkdir /mydata/kafkamonitorlogs
  • 1

執行如下語句啟動kafka監控

java -Xms512M -Xmx512M -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m -cp KafkaOffsetMonitor-assembly-0.2.1.jar \
     com.quantifind.kafka.offsetapp.OffsetGetterWeb \
     --zk 10.104
.109.176:2181,10.104.86.238:2182,10.104.122.21:2181 \
--port 8787 \ --refresh 10.seconds \ --retain 7.days 1>/mydata/kafkamonitorlogs/stdout.log 2>/mydata/kafkamonitorlogs/stderr.log &
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 或者自己寫個啟動停止指令碼:

start.sh

#!/bin/bash
java -Xms512M -Xmx512M -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m -cp KafkaOffsetMonitor-assembly-0.2.1.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb --zk 10.104.109.176:2181,10.104.86.238:2182,10.104.122.21:2181 --port 8787 --refresh 10.seconds --retain 7.days 1>/mydata/kafkamonitorlogs/stdout.log 2>/mydata/kafkamonitorlogs/stderr.log &
  • 1
  • 2

stop.sh

#!/bin/bash

killnum=`jps | grep OffsetGetterWeb | awk '{print $1}'`
kill -9 ${killnum}
echo "OK...."
  • 1
  • 2
  • 3
  • 4
  • 5

啟動之後檢視web介面
訪問:安裝伺服器的ip:8787

http://testslave02:8787
  • 1

介面如下:

這裡寫圖片描述

這裡寫圖片描述

其他功能自己去試一試。

但是發現,沒有獲取到broker,kafka的版本安裝過高,不相容,只有自己去下載最新的原始碼來編譯了

GitHub連線地址(上面有命令的詳細介紹):點選進入

安裝sbt環境:

下載sbt,官網上面的半天下載不懂,找了個csdn上面的連結 0.13.8版本的,地址如下:點選進入

解壓安裝sbt:

我放到了D盤下面,建立一個目錄將sbt安裝到該目錄下:

D:\sbt0.13.8
  • 1

修改sbtconfig.txt配置檔案:
新增一項:

-Dsbt.ivy.home=D:/sbtivy
  • 1

在修改使用者目錄下的.sbt目錄下建立repositories檔案並且寫入:

[repositories]  
public: http://maven.aliyun.com/nexus/content/groups/public/
typesafe:http://dl.bintray.com/typesafe/ivy-releases/ , [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
ivy-sbt-plugin:http://dl.bintray.com/sbt/sbt-plugin-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
  • 1
  • 2
  • 3
  • 4

在命令列執行 sbt,開始下載包,
但是執行到後面時候報錯:

download failed: org.scalamacros#quasiquotes_2.10;2.0.1!quasiquotes_2.10.jar
  • 1

在阿里雲映象裡面沒有,我果斷把阿里映象換成了預設的中央倉庫,把repositories檔案的

public: http://maven.aliyun.com/nexus/content/groups/public/
  • 1

改為:

public: http://repo1.maven.org/maven2/
  • 1

再次執行,OK

為了下載包速度快,我又把maven的倉庫改為了阿里雲的

開始編譯KafkaOffsetMonitor

到工程目錄下開啟cmd執行

這裡寫圖片描述

sbt clean assembly
  • 1

就等待他慢慢編譯:
這裡寫圖片描述

等著。。。 突然發現,作者的在git上面寫著的

If you do not want to build it manually, just download the current jar.

這裡寫圖片描述

居然有編譯好的,反正不管了,編譯的也讓它編譯著,先直接下載上面提供的編譯好的jar包。

地址:點選進入

如果下載不動的話,我也上傳我自己的百度雲了,連結:點選下載

這裡寫圖片描述

將此jar包上傳伺服器

然後執行:

java -Xms512M -Xmx512M -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m \
     -cp KafkaOffsetMonitor-assembly-0.4.1-SNAPSHOT.jar \
     com.quantifind.kafka.offsetapp.OffsetGetterWeb \
     --offsetStorage kafka \
     --kafkaBrokers 10.104.109.176:9092,10.104.86.238:9092,10.104.122.21:9092 \
     --kafkaSecurityProtocol SASL_PLAINTEXT \
     --zk 10.104.109.176:2181,10.104.86.238:2182,10.104.122.21:2181 \
     --port 8787 \
     --refresh 10.seconds \
     --retain 5.days \
     --dbName offsetapp_kafka
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

jdk版本不相容:

這裡寫圖片描述

我自己的電腦也是1.8jdk,雖然編譯成功了 但是伺服器上面是jdk1.7 剛編譯的執行了也不相容,把本機jdk換成1.7重新編譯….

等了大概半個多小時,報錯包又拉不下來,又把倉庫換成public:http://repo1.maven.org/maven2/繼續編譯。。。。
編譯失敗。。報錯版本問題。。。
這裡寫圖片描述

然後想到一個辦法:直接在伺服器上面建立一個新使用者,並把新使用者的自己的環境變數設定成jdk1.8,然後在啟動,啟動命令如下(zk埠換了,之前用的cdh的,這次自己搭建的zk):

java -Xms512M -Xmx512M -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m \
     -cp KafkaOffsetMonitor-assembly-0.4.1-SNAPSHOT.jar \
     com.quantifind.kafka.offsetapp.OffsetGetterWeb \
     --offsetStorage kafka \
     --kafkaBrokers testmaster:9092,testslave01:9092,testslave02:9092 \
     --kafkaSecurityProtocol PLAINTEXT \
     --zk testmaster:2188,testslave01:2188,testslave02:2188 \
     --port 8787 \
     --refresh 10.seconds \
     --retain 5.days \
     --dbName offsetapp_kafka
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

這裡寫圖片描述

這裡寫圖片描述

  topic:建立topic的名稱
  partition:分割槽編號
  offset:該partition已經消費了多少條message
  logsize:該partition已經寫入了多少條message
  lag:該partition未消費多少條message
  owner:gaipartition所屬消費者
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

介面也都OK都能監控了:

這裡寫圖片描述