滴滴開源了其Kafka 監控與管控平臺 Logi-KafkaManager,之前有使用過kafka-manager,kafka-eagle,kafka-mirrorkaker的使用經驗,如果有工具能夠整合這幾個工具的優點於一身,對於生產環境中kafka集羣的管理、監控、資源分配是非常好的,所以在研究kafka源碼的同時研究一下Logi-KafkaManager的源碼和使用,滴滴提供了體驗地址:http://117.51.150.133:8080/kafka ,賬戶admin/admin。
參考資料:
一、源碼解讀
1、前端調試環境
github克隆比較慢gitee很快,採取前後端分離架構(springboot+reactJS+Typescript),代碼包含了幾個模塊common,console,core,dao,extends,task,web,其中web中有MainApplication這個項目的啓動類,其他都是依賴,console模塊是基於recat+typescript的前端界面(技術棧選型還是很超前的),本地分別對前後端運行查看源碼,這裏把console單獨放在VScode中運行;
# react跟vue一樣基於node,所以npm相關依賴引入和配置啓動
npm config set registry https://registry.npm.taobao.org
npm config list #查看npm當前配置
npm install
# 啓動react項目
npm start
console前端模塊啓動運行:
pom.xml需要註釋掉對於console前端模塊的引用:
2、後調試環境
依賴Maven 3.5+(後端打包),node v12+(前端打包),Java 8+(運行環境需要),MySQL 5.7(數據存儲),node因爲放在vscode了所以不需要,在mysql創建kafka_manager庫,並且運行sql初始化語句,同時修改springboot中的mysql配置;
mysql --default-character-set=utf8 -uroot -p123456 -P3306 -D kafka_manager < create_mysql_table.sql
將web模塊的MainApplication.java配置成應用主類即可啓動;
2021-01-25 19:33:22.642 INFO 18000 --- [ main] c.x.kafka.manager.web.MainApplication : MainApplication started
由於是本地運行,console模塊的proxy的target需要修改:
proxy: {
'/api/v1/': {
target: 'http://127.0.0.1:8080',
//target: 'http://10.179.37.199:8008',
// target: 'http://99.11.45.164:8888',
changeOrigin: true,
}
以上,本地獨立運行了基於前後端分離的調試環境;可以看見前端讀取的是mysql庫中kafka集羣配置;
3、後端模塊架構
引用官方提供的應用架構圖分析代碼架構;
+----------------------------+
| Tables_in_kafka_manager |
+----------------------------+
| account |
| app |
| authority |
| broker |
| broker_metrics |
| cluster |
| cluster_metrics |
| cluster_tasks |
| config |
| controller |
| gateway_config |
| heartbeat |
| kafka_acl |
| kafka_bill |
| kafka_file |
| kafka_user |
| logical_cluster |
| monitor_rule |
| operate_record |
| reassign_task |
| region |
| topic |
| topic_app_metrics |
| topic_connections |
| topic_expired |
| topic_metrics |
| topic_report |
| topic_request_time_metrics |
| topic_statistics |
| topic_throttled_metrics |
| work_order |
+----------------------------+
31 rows in set (0.01 sec)
二、工具理解
三、部署驗證