kafka-manager配置和使用


01 kafka-manager配置

  最主要配置就是用於kafka管理器狀態的zookeeper主機。這可以在conf目錄中的application.conf文件中找到。

kafka-manager.zkhosts="my.zookeeper.host.com:2181"

  當然也可以聲明為zookeeper集群。

kafka-manager.zkhosts="my.zookeeper.host.com:2181,other.zookeeper.host.com:2181"

  另外也可以通過環境變量ZK_HOSTS來表示。

ZK_HOSTS="my.zookeeper.host.com:2181"

  自定義kafka-manager功能,類似於權限管理。

application.features=["KMClusterManagerFeature","KMTopicManagerFeature","KMPreferredReplicaElectionFeature","KMReassignPartitionsFeature"]
  • KMClusterManagerFeature - allows adding, updating, deleting cluster from Kafka Manager
  • KMTopicManagerFeature - allows adding, updating, deleting topic from a Kafka cluster
  • KMPreferredReplicaElectionFeature - allows running of preferred replica election for a Kafka cluster
  • KMReassignPartitionsFeature - allows generating partition assignments and reassigning partitions

02kafka-manager打包

  下面的命令將創建一個zip文件,可用於部署應用程序。

./sbt clean dist

  更多的玩法配置請參考:production deployment/configuration.

  這個命令執行的會很慢,而且可能會失敗,要反復執行幾次。不過我已經執行好了,訪問鏈接: https://pan.baidu.com/s/1123fRCT9ywEgiV6HjzSluw 提取碼: r86e 。

3|0kafka-manager運行


  經過上一步打包好之后會生成一個zip,具體zip的位置可以看輸出日志。解壓zip文件,進入kafka-manager目錄。

bin/kafka-manager

  或者指定配置文件位置和端口

bin/kafka-manager -Dconfig.file=/path/to/application.conf -Dhttp.port=8080

  也可以指定java home的位置

bin/kafka-manager -java-home /usr/local/oracle-java-8

  修改conf/application.conf如下屬性

 
play.http.context = "/kafka-manager" kafka-manager.zkhosts="localhost:2181" kafka-manager.zkhosts=${?ZK_HOSTS} application.features=["KMClusterManagerFeature","KMTopicManagerFeature","KMPreferredReplicaElectionFeature","KMReassignPartitionsFeature"]
 

  默認的端口是9000

4|0kafka-manager界面詳情


4|1  集群監控信息


   

  

4|2   Topic配置信息


  

4|3   Topic對應的消費分組信息


   

4|4   消費者消費詳情


  

4|5  消費者列表信息


   

4|6   Borker信息


  

  

 

  附:Kafka-Manager API

kafka manager的使用,kafka manager頁面參數說明

kafka-manager是kafka集群管理工具,由雅虎開源,用戶可以在Web界面執行一些簡單的集群管理操作。具體支持以下內容(從githup上kafka-manager項目的readme得到功能列表):

 - Manage multiple clusters
 - Easy inspection of cluster state (topics, consumers, offsets, brokers, replica distribution, partition distribution)
 - Run preferred replica election
 - Generate partition assignments with option to select brokers to use
 - Run reassignment of partition (based on generated assignments)
 - Create a topic with optional topic configs (0.8.1.1 has different configs than 0.8.2+)
 - Delete topic (only supported on 0.8.2+ and remember set delete.topic.enable=true in broker config)
 - Topic list now indicates topics marked for deletion (only supported on 0.8.2+)
 - Batch generate partition assignments for multiple topics with option to select brokers to use
 - Batch run reassignment of partition for multiple topics
 - Add partitions to existing topic
 - Update config for existing topic
 - Optionally enable JMX polling for broker level and topic level metrics.
 - Optionally filter out consumers that do not have ids/ owners/ & offsets/ directories in zookeeper.

翻譯如下

管理多個集群
輕松檢查群集狀態(主題,消費者,偏移,代理,副本分發,分區分發)
運行首選副本選舉
使用選項生成分區分配以選擇要使用的代理
運行分區重新分配(基於生成的分配)
使用可選主題配置創建主題(0.8.1.1具有與0.8.2+不同的配置)
刪除主題(僅支持0.8.2+並記住在代理配​​置中設置delete.topic.enable = true)
主題列表現在指示標記為刪除的主題(僅支持0.8.2+)
批量生成多個主題的分區分配,並可選擇要使用的代理
批量運行重新分配多個主題的分區
將分區添加到現有主題
更新現有主題的配置
可隨意開啟對broker級別或者對topic級別的JMX輪詢
可方便的過濾出沒有id 、所有者、延遲或目錄等的消費者

下面通過頁面 的操作步驟詳細講解下kafka-manager的使用

添加集群 

 

圖1

Enable JMX Polling
是否開啟 JMX 輪訓,該部分直接影響部分 kafka broker 和 topic 監控指標指標的獲取(生效的前提是 kafka 啟動時開啟了 JMX_PORT。主要影響如下指標的查看:

broker/topic 的combined metrics 綜合指標

圖2

Poll consumer information

是否開啟獲取消費信息,直接影響能夠在消費者頁面和 topic 頁面查看消費信息

圖3

 

圖4

      

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]

 

topic管理
 

圖5

 

Brokers Skew% (broker 傾斜率)
該 topic 占有的 broker 中,擁有超過該 topic 平均分區數的 broker 所占的比重。舉個例子說明

圖6

 

上圖,我們以一個 6 個分區,2 個副本的 topic 舉例,該 topic 一共 6 * 2 = 12 個 分區,分布在 5 個 broker 上,平均一個 broker 應該擁有 2.4 個分區,因為分區為整數,所以 2 個或者 3 個都是屬於平均范圍,5 個 broker 並沒有那個擁有超過平均分區數的,所以 Brokers Skew% 為 0。
如果此時,我將 broker 1 上的分區 1 的副本移動到 broker 2 上,如下圖所示:

圖7

 

上圖,broker 2 上擁有 4 個分區,超過平均的 2 個或 3 個的平均水平,broker 2 就傾斜了,broker 傾斜率 1/5=20%。

圖8

注意如下這種情況也是不計算作傾斜的。

圖9

 

Brokers Leader Skew% (broker leader 分區傾斜率)
該 topic 占有的 broker 中,擁有超過該 topic 平均 Leader 分區數的 broker 所占的比重。同樣舉個例子說明:

圖10

 

我們還是以一個 6 個分區,2 個副本的 topic 舉例,該 topic 一共有 6 個 Leader 分區,分布在 5 個 broker 上,平均一個 broker 應該擁有 1.2 個 Leader 分區,因為分區為整數,所以 1 個或者 2 個都是屬於平均范圍,如圖所示,5 個 broker 沒有那個擁有超過 2 個的 Leader 分區,所以 Brokers Leader Skew% 為 0。
如果此時,我們將 broker3 的 Leader 分區移動到 broker2,如下圖所示:

圖11

 

圖12


 

圖13

 

此時,broker2 擁有 3 個 leader 分區,超過平均范圍的 2 個,所以 broker2 就 Leader 分區傾斜了,傾斜率 1/5=20%。

Under Replicated%
該 topic 下的 partition,其中副本處於失效或者失敗的比率。失敗或者失效是指副本不處於 ISR 隊列中。目前控制副本是否處於 ISR 中由 replica.log.max.ms 這個參數控制。

replica.log.max.ms: 如果一個follower在這個時間內沒有發送fetch請求或消費leader日志到結束的offset,leader將從ISR中移除這個follower,並認為這個follower已經掛了,默認值 10000 ms

用下圖舉例說明:

圖14

broker1 此時擁有 partition1 和 partition4,其中 partition4 時 Leader,partition1 是副本,如果此時 broker 故障不可用,則會出現如下情況:

圖15

 

上述兩張圖片時接連展現,先是發現borker1 上 partition4 這個 Leader 分區失效,繼而從 ISR 隊列中取出 broker4 上的副本作為 Leader 分區,然后在后期同步檢測過程中發現broker1 上 partition1 這個副本失效。最后導致的結果就是 partition1 和 partition4 都出於副本失效或者失敗的狀態。此時 Under Replicated 的數值為:2/6=33%。

圖16

 

總結

上面三個參數對於衡量 topic 的穩定性有重要的影響:
Broker Skew: 反映 broker 的 I/O 壓力,broker 上有過多的副本時,相對於其他 broker ,該 broker 頻繁的從 Leader 分區 fetch 抓取數據,磁盤操作相對於其他 broker 要多,如果該指標過高,說明 topic 的分區均不不好,topic 的穩定性弱;
Broker Leader Skew:數據的生產和消費進程都至於 Leader 分區打交道,如果 broker 的 Leader 分區過多,該 broker 的數據流入和流出相對於其他 broker 均要大,該指標過高,說明 topic 的分流做的不夠好;
Under Replicated: 該指標過高時,表明 topic 的數據容易丟失,數據沒有復制到足夠的 broker 上。

 

topic 詳情

圖17

Preferred Replicas
分區的副本中,采用副本列表中的第一個副本作為 Leader 的所占的比重,如上圖,6 個副本組,其中只有 partition4 不是采用副本中的第一個在 broker1 中的分區作為 leader 分區,所以 Preferred Replicas 的值為 5/6=83%。

 


上述是關於“優先副本”的相關描述,即在理想的狀態下,分區的 leader 最好是 “優先副本”,這樣有利於保證集群中 broker 的領導權比較均衡。重新均衡集群的 leadership 可采用 kafka manager 提供的工具

 

topic 操作

操作 說明
Delete Topic 刪除 topic
Reassign Partitions 平衡集群負載
Add Partitions 增加分區
Update Config Topic 配置信息更新
Manual Partition Assignments 手動為每個分區下的副本分配 broker
Generate Partition Assignments 系統自動為每個分區下的副本分配 broker

一般而言,手動調整、系統自動分配分區和添加分區之后,都需要調用 Reassign Partition。

Manual Partition Assignments
一般當有 Broker Skew 時或者 Broker Leader Skew 后可以借助該功能進行調整,本文前面的 Broker Skew 和 Broker Leader Skew 的說明都借助了該工具。
例如將下圖中的 broker1 的分區4 移動到 broker2 上。


 


 

Generate Partition Assignments
該功能一般在批量移動 partition 時比較方便,比如集群新增 broker 或者 topic 新增 partition 后,將分區移動到指定的 broker。
例如下圖將 topic 由原來的分布在 5 個 broker 修改為 4 個 broker:

 

 

消費監控

kafka manager 能夠獲取到當前消費 kafka 集群消費者的相關信息。

 

 

 

 

 

文章參考 https://www.jianshu.com/p/6a592d558812

一.kafka-manager簡介

    kafka-manager是目前最受歡迎的kafka集群管理工具,最早由雅虎開源,用戶可以在Web界面執行一些簡單的集群管理操作。具體支持以下內容:

  • 管理多個集群
  • 輕松檢查群集狀態(主題,消費者,偏移,代理,副本分發,分區分發)
  • 運行首選副本選舉
  • 使用選項生成分區分配以選擇要使用的代理
  • 運行分區重新分配(基於生成的分配)
  • 使用可選主題配置創建主題(0.8.1.1具有與0.8.2+不同的配置)
  • 刪除主題(僅支持0.8.2+並記住在代理配​​置中設置delete.topic.enable = true)
  • 主題列表現在指示標記為刪除的主題(僅支持0.8.2+)
  • 批量生成多個主題的分區分配,並可選擇要使用的代理
  • 批量運行重新分配多個主題的分區
  • 將分區添加到現有主題
  • 更新現有主題的配置

kafka-manager 項目地址:https://github.com/yahoo/kafka-manager

二.kafka-manager安裝

1.下載安裝包

使用Git或者直接從Releases中下載,這里我們下載 1.3.3.18 版本:https://github.com/yahoo/kafka-manager/releases

[admin@node21 software]$ wget https://github.com/yahoo/kafka-manager/archive/1.3.3.18.zip

2.解壓安裝包

復制代碼
[admin@node21 software]$ mv 1.3.3.18.zip kafka-manager-1.3.3.18.zip
[admin@node21 software]$ unzip kafka-manager-1.3.3.18.zip -d /opt/module/
[admin@node21 software]$ cd /opt/module/
[admin@node21 module]$ ll
drwxr-xr-x  9 admin admin   268 May 27 00:33 jdk1.8
drwxr-xr-x  7 admin admin   122 Jun 14 11:44 kafka_2.11-1.1.0
drwxrwxr-x  9 admin admin   189 Jul  7 04:44 kafka-manager-1.3.3.18
drwxr-xr-x 11 admin admin  4096 May 29 10:14 zookeeper-3.4.12
[admin@node21 module]$ ls kafka-manager-1.3.3.18/
app build.sbt conf img LICENCE project public README.md sbt src target test
復制代碼

3.sbt編譯

1)yum安裝sbt(因為kafka-manager需要sbt編譯)

[admin@node21 ~]$ curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rpm.repo
[admin@node21 ~]$ sudo mv bintray-sbt-rpm.repo /etc/yum.repos.d/
[admin@node21 ~]$ sudo yum install sbt

修改倉庫地址:(sbt 默認下載庫文件很慢, 還時不時被打斷),我們可以在用戶目錄下創建 touch ~/.sbt/repositories, 填上阿里雲的鏡像   # vi ~/.sbt/repositories  

復制代碼
[repositories] 
local
aliyun: http://maven.aliyun.com/nexus/content/groups/public/
typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
sonatype-oss-releases
maven-central
sonatype-oss-snapshots
復制代碼

驗證:檢查sbt是否安裝成功,查看命令輸出,發現已經成功可以從maven.aliyun.com/nexus下載到依賴即表示成功

[admin@node21 ~]$ sbt-version

2)編譯kafka-manager

[admin@node21 kafka-manager-1.3.3.18]$ ./sbt clean dist

看到打印這個消息 Getting org.scala-sbt sbt 0.13.9  (this may take some time)... 就慢慢等吧,可以到~/.sbt/boot/update.log 查看sbt更新日志。sbt更新好,就開始下載各種jar包,最后看到:Your package is ready in /opt/module/kafka-manager-1.3.3.18/target/universal/kafka-manager-1.3.3.18.zip  證明編譯好了。

4.安裝

環境准備:Java 8+     kafka集群搭建參考:CentOS7.5搭建Kafka2.11-1.1.0集群      

重新解壓編譯好的kafka-manager-1.3.3.18.zip

[admin@node21 kafka-manager-1.3.3.18]$ ls
bin  conf  lib  README.md  share

修改配置文件

復制代碼
[admin@node21 kafka-manager-1.3.3.18]$ pwd
/opt/module/kafka-manager-1.3.3.18
[admin@node21 kafka-manager-1.3.3.18]$ ls conf/
application.conf  consumer.properties  logback.xml  logger.xml  routes
[admin@node21 kafka-manager-1.3.3.18]$ sudo vi conf/application.conf 
修改kafka-manager.zkhosts列表為自己的zk節點
kafka-manager.zkhosts="node21:2181,node22:2181,node23:2181"
復制代碼

5.啟動服務

啟動zk集群,kafka集群,再啟動kafka-manager服務。

bin/kafka-manager 默認的端口是9000,可通過 -Dhttp.port,指定端口; -Dconfig.file=conf/application.conf指定配置文件:

[admin@node21 kafka-manager-1.3.3.18]$ nohup bin/kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port=8080 &

jps查看進程

6.編寫服務啟動腳本

chmod +x kafka-manager.sh

nohup /opt/module/kafka-manager-1.3.3.18/bin/kafka-manager -Dconfig.file=/opt/module/kafka-manager-1.3.3.18/conf/application.conf -Dhttp.port=8888 >/opt/module/kafka-ma
nager-1.3.3.18/kafka-manager.log 2>&1 &

WebUI查看:http://node21:8888/ 出現如下界面則啟動成功。

三.kafka-manager配置

1.新建Cluster

點擊【Cluster】>【Add Cluster】打開如下添加集群配置界面:輸入集群的名字(如Kafka-Cluster-1)和 Zookeeper 服務器地址(如localhost:2181),選擇最接近的Kafka版本

其他broker的配置可以根據自己需要進行配置,默認情況下,點擊【保存】時,會提示幾個默認值為1的配置錯誤,需要配置為>=2的值。提示如下。

新建完成后,保存運行界面如下:

四.kafka-manager管理

1.新建主題

Topic---Create

2.查看主題

Topic---list

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM