一.kafka-manager簡介
kafka-manager是目前最受歡迎的kafka集羣管理工具,它最早由雅虎開源,功能非常齊全,展示的數據非常豐富。同時用戶能夠在界面上執行一些簡單的集羣管理操作。
不過雅虎已經將其更名爲CMAK(Cluster Manager for Apache Kafka)。具體支持以下內容:
- 管理多個集羣
- 輕鬆檢查集羣狀態(主題,消費者,偏移,代理,副本分發,分區分發)
- 運行首選副本選舉
- 使用選項生成分區分配以選擇要使用的代理
- 運行分區重新分配(基於生成的分配)
- 使用可選主題配置創建主題(0.8.1.1具有與0.8.2+不同的配置)
- 刪除主題(僅支持0.8.2+並記住在代理配置中設置delete.topic.enable = true)
- 主題列表現在指示標記爲刪除的主題(僅支持0.8.2+)
- 批量生成多個主題的分區分配,並可選擇要使用的代理
- 批量運行重新分配多個主題的分區
- 將分區添加到現有主題
- 更新現有主題的配置
- 選擇性爲 broker level and topic level metrics 開放JMX polling
- 選擇性過濾掉在zookeeper中沒有ids|owners|offsets|directories的消費者
CMAK管理工具支持的範圍
- 支持 Kafka 0.8以上版本
- Java 11+
- zookeeper必須是3.5+版本。
可能有些會說要求這麼多,還涉及zookeeper版本,那麼你可以選擇Kafka-manager的舊版本,比如1.3.3.23版本。
kafka-manager 項目地址:https://github.com/yahoo/kafka-manager
二.kafka-manager安裝
1.安裝sbt
1)yum安裝sbt(因爲kafka-manager需要sbt編譯)
$ curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rpm.repo
$ sudo mv bintray-sbt-rpm.repo /etc/yum.repos.d/
$ sudo yum install sbt
2)修改倉庫地址:(sbt 默認下載庫文件很慢, 還時不時被打斷)
# mkdir -p ~/.sbt
# vim ~/.sbt/repositories
##############################
[repositories]
local
huaweicloud-maven: https://repo.huaweicloud.com/repository/maven/
jcenter: https://jcenter.bintray.com
typesafe: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
maven-central: https://repo1.maven.org/maven2/
sonatype-oss-snapshots
配置sbt加速詳見:https://blog.51cto.com/qiangsh/2620294
3)自定義下載位置,在sbt\conf\sbtconfig.txt中末尾添加
vim /usr/share/sbt/conf/sbtconfig.txt
###################################
-Dsbt.boot.directory=/root/.sbt/boot
-Dsbt.global.base=/root/.sbt
-Dsbt.ivy.home=~/root/.sbt/.ivy2
-Dfile.encoding=UTF8
-Dsbt.repository.secure=false
-Dsbt.override.build.repos=true
4)驗證:檢查sbt是否安裝成功,查看命令輸出,發現已經成功可以從maven.aliyun.com/nexus下載到依賴即表示成功[root@node ~]$ sbt -version
2.安裝CMAK(1.3.3.23版本)
1)下載:
cd /data/packages
wget https://github.com/yahoo/CMAK/archive/1.3.3.23.tar.gz
tar zxvf 1.3.3.23.tar.gz
2)編譯安裝:
cd CMAK-1.3.3.23
sbt clean dist
# 需要等待一段時間...
unzip target/universal/kafka-manager-1.3.3.23.zip -d /usr/local/
ln -s /usr/local/kafka-manager-1.3.3.23/conf /etc/kafka-manager
ln -s /usr/local/kafka-manager-1.3.3.23/bin/kafka-manager /usr/local/bin/kafka-manager
ln -s /usr/local/kafka-manager-1.3.3.23/bin/kafka-manager /usr/bin/kafka-manager
3)配置:
vim /etc/kafka-manager/application.conf
##########修改下面一行################
kafka-manager.zkhosts="kafka01-ops-prod:2181,kafka02-ops-prod:2181,kafka03-ops-prod:2181"
3.啓動
#########啓動默認地址是9000也可以通過 -Dhttp.port,指定端口; -Dconfig.file=conf/application.conf指定配置文件:
1)啓動腳本:
vim /etc/systemd/system/kafka-manager.service
#########################
[Unit]
Description=kafka-manager
[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/bin/kafka-manager
Restart=always
WorkingDirectory=/usr/local/kafka-manager-1.3.3.23
PIDFile=RUNNING_PID
LimitNOFILE=16384
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=on-failure
RestartSec=30
[Install]
WantedBy=multi-user.target
2)啓動
systemctl daemon-reload
systemctl start kafka-manager.service
systemctl status kafka-manager.service
3)驗證
# netstat -tnlp |grep 9000
tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 78904/java
三、使用配置
1、新建cluster集羣
Enable JMX Polling
是否開啓 JMX 輪訓,該部分直接影響部分 kafka broker 和 topic 監控指標指標的獲取(生效的前提是 kafka 啓動時開啓了 JMX_PORT。主要影響如下指標的查看:
2、Enable Active OffsetCache
是否開啓 offset 緩存,決定 kafka-manager 是否緩存住 topic 的相關偏移量。
其它參數說明
參數名 參數說明 默認值 備註
- brokerViewUpdatePeriodSeconds Broker視圖週期更新時間/單位(s) 30
- clusterManagerThreadPoolSize 集羣管理線程池大小 2
- clusterManagerThreadPoolQueueSize 集羣管理線程池列隊大小 100
- KafkaCommandThreadPoolSize Kafka命令線程池大小 2
- logkafkaCommandThreadPoolQueueSize logkafka命令線程池列隊大小 100
- logkafkaUpdatePeriodSeconds Logkafka週期更新時間/單位(s) 30
- partitionOffsetCacheTimeoutSecs Partition Offset緩存過期時間/單位(s) 5
- brokerViewThreadPoolSize Broker視圖線程池大小 8 3 number_of_brokers
- brokerViewThreadPoolQueue Size Broker視圖線程池隊列大小 1000 3 total # of partitions across all topics
- offsetCacheThreadPoolSize Offset緩存線程池大小 8
- offsetCacheThreadPoolQueueSize Offset緩存線程池列隊大小 1000
- kafkaAdminClientThreadPoolSize Kafka管理客戶端線程池大小 8
- kafkaAdminClientTheadPoolQueue Sizec Kafka管理客戶端線程池隊列大小 1000
- kafkaManagedOffsetMetadataCheckMillis Offset元數據檢查時間 30000 (這部分解釋屬自己理解)
kafkaManagedOffsetGroupCacheSize Offset組緩存大小 100000 (這部分解釋屬自己理解)
kafkaManagedOffsetGroupExpireDays Offset組緩存保存時間 7 (這部分解釋屬自己理解)
Security Protocol 安全協議 PLAINTEXT [SASL_PLAINTEXT,SASL_SSL,SSL]
具體可以參考如下:https://blog.csdn.net/u011089412/article/details/87895652