一、kafka-manager 簡介
為了簡化開發者和服務工程師維護Kafka叢集的工作,yahoo建構了一個基于Web的Kafka叢集管理工具,叫做 Kafka Manager。這個管理工具可以很容易地發現分布在叢集中的哪些topic分布不均勻,或者是分區在整個叢集分布不均勻的的情況。它支援管理多個叢集、選擇副本、副本重新配置設定以及建立Topic。同時,這個管理工具也是一個非常好的可以快速浏覽這個叢集的工具,有如下功能:
- 管理多個kafka叢集
- 便捷的檢查kafka叢集狀态(topics,brokers,備份分布情況,分區分布情況)
- 選擇你要運作的副本
- 基于目前分區狀況進行
- 可以選擇topic配置并建立topic(0.8.1.1和0.8.2的配置不同)
- 删除topic(隻支援0.8.2以上的版本并且要在broker配置中設定delete.topic.enable=true)
- Topic list會指明哪些topic被删除(在0.8.2以上版本适用)
- 為已存在的topic增加分區
- 為已存在的topic更新配置
- 在多個topic上批量重分區
- 在多個topic上批量重分區(可選partition broker位置)
kafka-manager 項目位址:https://github.com/yahoo/kafka-manager
二、安裝
1. 環境要求
- Kafka 0.8.1.1 or 0.8.2.* or 0.9.0.*
- Java 8+
- zookeeper 2+
本次實驗所用的環境是kafka-0.9.1.0 , jdk-1.8.0_60 , zookeeper-3.4.7,下載下傳解壓安裝運作:
# start zookeeper
cd /usr/local/zookeeper-3.4.7
./bin/zkServer.sh start
#
# start kafka
cd /usr/local/kafka_2.11-0.9.0.0
./bin/kafka-server-start.sh ./config/server.properties
2. 下載下傳安裝 kafka-manager
下載下傳編譯
git clone https://github.com/yahoo/kafka-manager
cd kafka-manager
# 因為要編譯。是以下面這步操作要等很久
sbt clean distcd target/
# 在target目錄下我們可以看到 kafka-manager
kafka-manager-1.3.0.8.zip
tips:使用sbt編譯打包的時候時間可能會比較長,如果你hang在Loading project definition from kafka-manager/project
可以修改project/plugins.sbt中的LogLevel參數将logLevel := Level.Warn修改為logLevel := Level.Debug 。
或者,簡單點直接下載下傳編譯好的安裝包,下面給出網友編譯好的 kafka-manager-1.3.3.7.zip 的網盤連結:https://pan.baidu.com/s/1qYifoa4 密碼:el4o
解壓
unzip kafka-manager-1.3.0.8.zip -d /usr/local
cd /usr/local/kafka-manager-1.3.0.8
修改配置
編輯 conf/application.properties 檔案,修改 Zookeeper 叢集位址。
# 如果zk是叢集,這裡填寫多個zk位址
kafka-manager.zkhosts="localhost:2181"
啟動
bin/kafka-manager
kafka-manager 預設的端口是9000,可通過 -Dhttp.port,指定端口; -Dconfig.file=conf/application.conf指定配置檔案:
nohup bin/kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port=8080 &
我們用浏覽器通路試試,界面非常簡潔。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL9U1VaNXNXRWck1mYsJ0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL0YTN3EjM0UTM2ATMwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
這樣便安裝成功了。
三、測試 kafka-mamager
建立 Cluster
輸入要監控的Kafka叢集的名稱及Zookeeper叢集的位址。
建好之後看到如下界面。
在儲存Cluster時,若勾選了啟用 JMX 投票,如果 kafka 沒有設定 JMX_PORT, kafka manager 日志會出現如下錯誤資訊:
[error] k.m.a.c.BrokerViewCacheActor - Failed to get broker topic segment metrics for BrokerIdentity(1,192.168.118.15,9092,-1,false)
java.lang.IllegalArgumentException: requirement failed: No jmx port but jmx polling enabled!
解決辦法:
修改 kafka-server-start.sh,增加 JMX 的端口資訊。
修改kafka-run-class.sh,增加綠色部分,注意對應的 ip位址。
三個節點都需要修改,修改完畢記得重新開機 kafka 服務。
建立topic
填寫分區和副本個數。
檢視topic
在 Kafka-manager 中看到的topic如下:
在伺服器上通過kafka-topics.sh指令查詢到的topic如下:
# bin/kafka-topics.sh --list --zookeeper localhost:2181
啟動 consumer
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic test-a
啟動 producer
bin/kafka-console-producer.sh --broker-list 10.26.236.43:9092 --topic test-a
此時, 看到的Broker清單如下。
輸入 message。
可以看到 consumer 已經收到消息。
到這裡,我們的kafka-manager已搭建測試成功,它的其他用法大家可自行測試。