背景

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

基于ZK的 Dubbo-admin 与 Dubbo-monitor 搭建的更多相关文章

  1. zookeeper,dubbo,dubbo admin

    zookeeper 1. 分布式协调服务:我们的程序运行在不同的机器上,这些机器可能位于同一个机架,同一个机房又或不同的数据中心.在这样的环境中,我们要实现协调该怎么办?那么这就是分布式协调服务要干的 ...

  2. alibaba dubbo admin的安装

    一.下载地址 https://github.com/apache/incubator-dubbo-admin 然后把项目作为maven项目 前端部分 使用Vue.js作为javascript框架,Vu ...

  3. 基于JDK 8的Dubbo Admin

    在使用Dubbo  Admin的时候,一直报错,无法启动,因为Dubbo Admin使用的各种库相对是比较旧的,在JDK 8下,有些小问题 具体解决过程参考的以下链接 https://github.c ...

  4. dubbo admin详解

    运行 dubbo-admin的启动运行其实是一个比较简单的操作,但是由于它采用了前后端分离,前端又是使用的node.js,如果有不熟悉的同学会容易踩坑. 这里只简单介绍一下步骤: 1.从github下 ...

  5. Spring Boot 2.x (十五):Dubbo + Zookeeper + 新版Dubbo Admin

    Dubbo 简介 Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成. 它提供了三大核心能力: 面向接口的远程 ...

  6. 2. Dubbo原理解析-Dubbo内核实现之基于SPI思想Dubbo内核实现(转)

    转载自  斩秋的专栏  http://blog.csdn.net/quhongwei_zhanqiu/article/details/41577159 SPI接口定义 定义了@SPI注解 public ...

  7. Dubbo 生态添新兵,Dubbo Admin 发布 v0.1

    为了提升 Dubbo 里程碑版本2.7.0的使用体验,我们于去年年中启动了 Dubbo Admin 的重构计划,并作为Dubbo生态的子项目,于近期发布了v0.1,重构后的项目在结构上的变化如下: 将 ...

  8. (四)Dubbo Admin管理控制台

    Dubbo Admin管理控制台 在dubbo2.6.0往后的版本在dubbo发布包中就没有dubbo-admin了,而是在incubator-dubbo-ops(https://github.com ...

  9. 【Dubbo实战】 Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务(转)

    Dubbo与Zookeeper.Spring整合使用 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spri ...

  10. 【DUBBO】 Dubbo原理解析-Dubbo内核实现之基于SPI思想Dubbo内核实现

    转载:http://blog.csdn.net/quhongwei_zhanqiu/article/details/41577235 SPI接口定义 定义了@SPI注解 public @interfa ...

随机推荐

  1. MASM 命令行编译方法

    假设有一个t est.asm ,一个test.rc 可以在CMD里这么编译: ml /c /coff test.asm rc test.rc link /subsystem:windows test. ...

  2. wangjie.rocks的静态编译Qt,openssl,icu

    http://wangjie.rocks/2015/12/28/compile-qt/http://wangjie.rocks/2015/12/10/compile-icu/http://wangji ...

  3. 基于ASP.NET的新闻管理系统(二)效果展示

    5. 新闻管理系统开发与实现 5.1前台新闻页面 主页面 新闻栏展示新闻 搜索新闻 菜单栏链接新闻 后台登录界面 大管理员后台管理界面 小管理员后台管理界面 修改密码 增加新闻界面 栏目管理界面   ...

  4. 案例解析:springboot自动配置未生效问题定位(条件断点)

    Spring Boot在为开发人员提供更高层次的封装,进而提高开发效率的同时,也为出现问题时如何进行定位带来了一定复杂性与难度.但Spring Boot同时又提供了一些诊断工具来辅助开发与分析,如sp ...

  5. vuejs 项目引入微信jssdk

    一.导入依赖包 npm i -S weixin-js-sdk 二.前端页面使用 import wx from 'weixin-js-sdk' export default { created() { ...

  6. java代码块牛刀小试

    牛刀小试1. 试一把静态代码块.实例化代码块和构造函数的执行顺序 public class People { public static int num = 0;//静态变量初始化 String na ...

  7. JAVA8之lambda表达式详解

    原文:http://blog.csdn.net/jinzhencs/article/details/50748202 lambda表达式详解 一.问题 1.什么是lambda表达式? 2.lambda ...

  8. 使用wireshark捕获SSL/TLS包并分析

    原创博客,转载请注出处! TLS运作方式如下图:

  9. 基于SpringBoot从零构建博客网站 - 开发设置主页标识和修改个人信息功能

    由于守望博客系统中支持由用户自己设置个人主页的URL的后半段,所以必须要用户设置该标识的功能,而且是用户注册登录之后自动弹出的页面,如果用户没有设置该标识,其它的操作是不能够操作的,同时要求主页标识只 ...

  10. 【MM系列】SAP 采购订单的批量修改

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 采购订单的批量修改   前言 ...