背景

最近项目中使用了 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 知识体系/面试必看资料。

最新文章

  1. 每次更新obj和bin文件夹都生成nGB的文件
  2. webkit特有的css属性
  3. android92 aidl远程进程通信
  4. Day 3 @ RSA Conference Asia Pacific & Japan 2016 (morning)
  5. FirewallD 详解
  6. Find the minimum线段树成段更新
  7. bootstrap jQuery Ztree异步载入数据,check选择&amp;amp;可加入、改动、删除节点
  8. javaIO流实现读写txt文件
  9. 使用VS Code从零开始开发调试.NET Core 1.1
  10. [补] winpcap编程——EAPSOCKET实现校园网锐捷登录(mentohust)
  11. Spring配置文件的xsd知识点
  12. 六、Html头部和元信息
  13. TSC条码打印机C#例程(tsclib.dll调用) 【转】
  14. echo 1+2+"3+4+5“输出的结果是6
  15. excel表格中,怎么根据一列重复的数据求对应另一列总和
  16. textarea(多行文本域)
  17. 数据库类型总结对比(Java,Hibernate,SQLServer,MySQL,Oracle)
  18. iClap助力移动互联网企业实现规范化管理
  19. Java GC 标记/清除算法
  20. 【angularJS】Route路由

热门文章

  1. Oracle数据库备份和恢复的基本命令
  2. Linux虚拟机没有IP的解决办法
  3. vue复选框获取值的补充
  4. spring cloud 系列第2篇 —— eureka 高可用注册中心的搭建 (F版本)
  5. 使用事件注册器进行swoole代码封装
  6. WebGL概述
  7. logrotate切割nginx日志
  8. 学习 GitHub 有什么好处?
  9. Kafka集群部署指南
  10. python 中的__name__ == &quot;__main__&quot;(转)