zoukankan      html  css  js  c++  java
  • 基于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_all_version>2.6.4</dubbo_all_version>

    5. 将 dubbo-admin 项目下的 pom.xml文件中的 dubbo版本进行调整,并且增加 netty 依赖

    1. <dependency>

    2.  <groupId>com.alibaba</groupId>

    3.  <artifactId>dubbo</artifactId>

    4.  <version>2.6.4</version>

    5. </dependency>

    6. <dependency>

    7.  <groupId>io.netty</groupId>

    8.  <artifactId>netty-all</artifactId>

    9.  <version>4.1.30.Final</version>

    10. </dependency>

    1. 修改dubbo-admin 项目中 resources 目录下的 applicatio.properties文件

    1. server.port=7001

    2. spring.velocity.cache=false

    3. spring.velocity.charset=UTF-8

    4. spring.velocity.layout-url=/templates/default.vm

    5. spring.messages.fallback-to-system-locale=false

    6. spring.messages.basename=i18n/message

    7. # root 用户登录账户和密码

    8. spring.root.password=root

    9. # guest 用户登录账户和密码

    10. spring.guest.password=guest

    11. # zk 注册中心地址,可以配置单个或者多个

    12. dubbo.registry.address=zookeeper://ip1:2181?backup=ip2:2181,ip3:2181

    13. # 配置 zk 中根目录文件夹,不配默认为 dubbo,并非生产者和消费的的分组

    14. dubbo.registry.group=ad-dubbo

    1. 修改dubbo-admin 项目中 resources 目录下的 dubbo-admin.xml文件,如果没有配置 group 可以不用加 group 配置

    1. <dubbo:registry address="${dubbo.registry.address}" group="${dubbo.registry.group}" check="false" file="false"/>

    1. 此条如果配置了 provider 和 consumer 的分组时采用,如果没有则跳过。在 dubbo-admin 项目中创建 com.alibaba.dubbo.common包,并新建 URL.java类,复制 dubbo2.6.4中的 URL.java,按照图片修改

    说明:如果不这样修改,在管理后台会有问题,官方 issue

    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

    1. dubbo.container=log4j,spring,registry,jetty-monitor

    2. dubbo.application.name=dubbo-admin-monitor

    3. dubbo.application.owner=dubbo

    4. # zk 注册中心地址同 admin

    5. dubbo.registry.address=zookeeper://1p1:2181?backup=ip2:2181,ip3:2181

    6. dubbo.protocol.port=7070

    7. dubbo.jetty.port=7002

    8. dubbo.monitor.queue=1000

    9. # 统计数据和图表的生产路径,需要手动提前创建

    10. dubbo.jetty.directory=/opt/monitor

    11. # charts 目录,必须放到 dubbo.jetty.directory目录下

    12. dubbo.charts.directory=${dubbo.jetty.directory}/charts

    13. # statistics 目录,必须放到 dubbo.jetty.directory目录下

    14. dubbo.statistics.directory=${dubbo.jetty.directory}/statistics

    15. dubbo.log4j.file=logs/dubbo-monitor-simple.log

    16. dubbo.log4j.level=WARN

    17. # zk 注册中心的根目录,不配置默认为 dubbo

    18. dubbo.registry.group=ad-dubbo

    2、在根目录下执行 mvn clean package,在 dubbo-monitor-simple/target目录下的 dubbo-monitor-simple-2.0.0-assembly.tar.gz拷贝到其他目录,或者本目录,解压并启动

    1. tar xzvf dubbo-monitor-simple-2.0.0-assembly.tar.gz

    2. cd dubbo-monitor-simple-2.0.0

    3. ./assembly.bin/server.sh start

    3、打开http://127.0.0.1:7002

    配置生产者和消费者,进行调用就会显示类似下面的图,这里的图修改图片生成的时间为1分钟

    4、注意事项

    • dubbo.monitor.queue:监测队列大小,默认为100000

    • chart 图片默认五分钟根据统计目录的数据生成一张 png 图片,在SimpleMonitorService.java 中110行,可以修改自己需要的时间间隔,

    • dubbo.jetty.directory=/opt/monitor这个路径必须自己手动提前创建,否则无法自动创建统计和图片目录,导致没有图片显示

    • 如果没有出现图片,在生产者和消费者的配置中添加监控地址 dubbo.monitor.address= 172.20.155.60:7070

    1. # 配置文件

    2. dubbo.registry.group = ad-dubbo

    3. dubbo.monitor.address= 172.20.155.60:7070

    4. # 基于 SpringBoot 增加配置

    5. @Bean

    6. public MonitorConfig monitorConfig() {

    7.  MonitorConfig config = new MonitorConfig();

    8.  config.setAddress(monitorAddress);

    9.  config.setProtocol("registry");

    10.  return config;

    11. }

    小结

    经过几天的时间修改了部分源码搭建起来的监控平台,目前已经在生产上使用了。从目前的服务调用来看,效果还可以。前期搭建的过程中还是踩了不少坑的,由于 dubbo 的版本复杂,网上多种监控平台各有各的特点, 权衡了很久才决定还是用官方的监控平台。

    官方的监控平台是使用人数最多的,既然是要上生产,就必须要有保障。但是可能由于年代久远,不是很美观,不过能用。网上还有其他版本的监控平台比如开源工具 Dubbokeeper, 以及开源工具 DubboMonitor-x,这几个在之前研究的时候采用 Redis 作为注册中心的时候有研究过,但是后面选择 zk 和官方的监控平台就没有折腾了。


    Java 极客技术公众号,是由一群热爱 Java 开发的技术人组建成立,专注分享原创、高质量的 Java 文章。如果您觉得我们的文章还不错,请帮忙赞赏、在看、转发支持,鼓励我们分享出更好的文章。

    关注公众号,大家可以在公众号后台回复“博客园”,免费获得作者 Java 知识体系/面试必看资料。

  • 相关阅读:
    C++中整型变量的存储大小和范围
    A1038 Recover the Smallest Number (30 分)
    A1067 Sort with Swap(0, i) (25 分)
    A1037 Magic Coupon (25 分)
    A1033 To Fill or Not to Fill (25 分)
    A1070 Mooncake (25 分)
    js 获取控件
    C#代码对SQL数据库添加表或者视图
    JS 动态操作表格
    jQuery取得下拉框选择的文本与值
  • 原文地址:https://www.cnblogs.com/justdojava/p/11211517.html
Copyright © 2011-2022 走看看