01.29 基於ZK的 Dubbo-admin 與 Dubbo-monitor 搭建

背景

最近項目中使用了 dubbo 在實現服務註冊和發現,需要實現對服務提供者和調用者的監控,之前有研究過基於 redis作為註冊中心的監控平臺,不過本文基於 zk 作為註冊中心,進行 dubbo-admin 和 dubbo-monitor 搭建。另外項目基於 dubbo 2.6.4版本,所以該監控版本調整為 dubbo2.6.4。


步驟

  1. GitHub
  2. 官方組件目前在重構,採用前後分離技術,尚未完成。本文采用的還是 master 分支的老版本 dubbo-admin
  3. git clone https://github.com/apache/incubator-dubbo-ops
  4. 將項目根目錄下的 pom.xml文件中的 dubbo 版本調整為2.6.4 <dubbo>2.6.4/<dubbo>
  5. 將 dubbo-admin 項目下的 pom.xml文件中的 dubbo版本進行調整,並且增加 netty 依賴
<code><dependency>
<groupid>com.alibaba/<groupid>
<artifactid>dubbo/<artifactid>
<version>2.6.4/<version>
/<dependency>
<dependency>
<groupid>io.netty/<groupid>
<artifactid>netty-all/<artifactid>
<version>4.1.30.Final/<version>
/<dependency>
/<code>
  1. 修改dubbo-admin 項目中 resources 目錄下的 applicatio.properties文件
<code>server.port=7001
spring.velocity.cache=false
spring.velocity.charset=UTF-8
spring.velocity.layout-url=/templates/default.vm
spring.messages.fallback-to-system-locale=false
spring.messages.basename=i18n/message
# root 用戶登錄賬戶和密碼

spring.root.password=root
# guest 用戶登錄賬戶和密碼
spring.guest.password=guest
# zk 註冊中心地址,可以配置單個或者多個
dubbo.registry.address=zookeeper://ip1:2181?backup=ip2:2181,ip3:2181
# 配置 zk 中根目錄文件夾,不配默認為 dubbo,並非生產者和消費的的分組
dubbo.registry.group=ad-dubbo

/<code>
  1. 修改dubbo-admin 項目中 resources 目錄下的 dubbo-admin.xml文件,如果沒有配置 group 可以不用加 group 配置
<code>
<registry>

/<code>
  1. 此條如果配置了 provider 和 consumer 的分組時採用,如果沒有則跳過。在 dubbo-admin 項目中創建com.alibaba.dubbo.common包,並新建 URL.java類,複製 dubbo2.6.4中的 URL.java,按照圖片修改


基於ZK的 Dubbo-admin 與 Dubbo-monitor 搭建


說明:如果不這樣修改,在管理後臺會有問題,官方 issue


基於ZK的 Dubbo-admin 與 Dubbo-monitor 搭建


  1. 在根目錄下執行mvn clean package
  2. 啟動 dubbo-admin,執行java -jar dubbo-admin/target/dubbo-admin-0.0.1-SNAPSHOT.jar
  3. 打開http://127.0.0.1:7071即可看到界面,登錄賬戶和密碼為 applicatio.properties中配置的默認root/root,guest/guest

dubbo-monitor搭建

1、修改 dubbo-monitor-simple 項目 resources/conf 目錄下的 dubbo.properties

<code>dubbo.container=log4j,spring,registry,jetty-monitor
dubbo.application.name=dubbo-admin-monitor
dubbo.application.owner=dubbo
# zk 註冊中心地址同 admin
dubbo.registry.address=zookeeper://1p1:2181?backup=ip2:2181,ip3:2181
dubbo.protocol.port=7070
dubbo.jetty.port=7002
dubbo.monitor.queue=1000
# 統計數據和圖表的生產路徑,需要手動提前創建
dubbo.jetty.directory=/opt/monitor
# charts 目錄,必須放到 dubbo.jetty.directory目錄下
dubbo.charts.directory=${dubbo.jetty.directory}/charts
# statistics 目錄,必須放到 dubbo.jetty.directory目錄下
dubbo.statistics.directory=${dubbo.jetty.directory}/statistics
dubbo.log4j.file=logs/dubbo-monitor-simple.log
dubbo.log4j.level=WARN
# zk 註冊中心的根目錄,不配置默認為 dubbo
dubbo.registry.group=ad-dubbo
/<code>

2、在根目錄下執行mvn clean package,在dubbo-monitor-simple/target目錄下的dubbo-monitor-simple-2.0.0-assembly.tar.gz拷貝到其他目錄,或者本目錄,解壓並啟動

<code>tar xzvf dubbo-monitor-simple-2.0.0-assembly.tar.gz 
cd dubbo-monitor-simple-2.0.0
./assembly.bin/server.sh start
/<code>

3、打開http://127.0.0.1:7002


基於ZK的 Dubbo-admin 與 Dubbo-monitor 搭建


配置生產者和消費者,進行調用就會顯示類似下面的圖,這裡的圖修改圖片生成的時間為1分鐘


基於ZK的 Dubbo-admin 與 Dubbo-monitor 搭建


4、注意事項

  • dubbo.monitor.queue:監測隊列大小,默認為100000
  • chart 圖片默認五分鐘根據統計目錄的數據生成一張 png 圖片,在SimpleMonitorService.java 中110行,可以修改自己需要的時間間隔,
  • dubbo.jetty.directory=/opt/monitor這個路徑必須自己手動提前創建,否則無法自動創建統計和圖片目錄,導致沒有圖片顯示
  • 如果沒有出現圖片,在生產者和消費者的配置中添加監控地址dubbo.monitor.address= 172.20.155.60:7070
<code># 配置文件
dubbo.registry.group = ad-dubbo
dubbo.monitor.address= 172.20.155.60:7070

# 基於 SpringBoot 增加配置
@Bean
public MonitorConfig monitorConfig() {
MonitorConfig config = new MonitorConfig();
config.setAddress(monitorAddress);
config.setProtocol("registry");
return config;
}
/<code>

小結

經過幾天的時間修改了部分源碼搭建起來的監控平臺,目前已經在生產上使用了。從目前的服務調用來看,效果還可以。前期搭建的過程中還是踩了不少坑的,由於 dubbo 的版本複雜,網上多種監控平臺各有各的特點, 權衡了很久才決定還是用官方的監控平臺。官方的監控平臺是使用人數最多的,既然是要上生產,就必須要有保障。但是可能由於年代久遠,不是很美觀,不過能用。網上還有其他版本的監控平臺比如開源工具 Dubbokeeper, 以及開源工具 DubboMonitor-x,這幾個在之前研究的時候採用 Redis 作為註冊中心的時候有研究過,但是後面選擇 zk 和官方的監控平臺就沒有折騰了。


分享到:


相關文章: