基于ZK的 Dubbo-admin 与 Dubbo-monitor 搭建
背景
最近项目中使用了 dubbo 在实现服务注册和发现,需要实现对服务提供者和调用者的监控,之前有研究过基于 redis作为注册中心的监控平台,不过本文基于 zk 作为注册中心,进行 dubbo-admin 和 dubbo-monitor 搭建。另外项目基于 dubbo 2.6.4版本,所以该监控版本调整为 dubbo2.6.4。
步骤
GitHub
官方组件目前在重构,采用前后分离技术,尚未完成。本文采用的还是 master 分支的老版本 dubbo-admin
git clone https://github.com/apache/incubator-dubbo-ops
将项目根目录下的 pom.xml文件中的 dubbo 版本调整为2.6.4
<dubbo_all_version>2.6.4</dubbo_all_version>
将 dubbo-admin 项目下的 pom.xml文件中的 dubbo版本进行调整,并且增加 netty 依赖
<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>
修改dubbo-admin 项目中 resources 目录下的 applicatio.properties文件
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
修改dubbo-admin 项目中 resources 目录下的 dubbo-admin.xml文件,如果没有配置 group 可以不用加 group 配置
<dubbo:registry address="${dubbo.registry.address}" group="${dubbo.registry.group}" check="false" file="false"/>
此条如果配置了 provider 和 consumer 的分组时采用,如果没有则跳过。在 dubbo-admin 项目中创建
com.alibaba.dubbo.common
包,并新建URL.java
类,复制 dubbo2.6.4中的 URL.java,按照图片修改
说明:如果不这样修改,在管理后台会有问题,官方 issue
在根目录下执行
mvn clean package
启动 dubbo-admin,执行
java -jar dubbo-admin/target/dubbo-admin-0.0.1-SNAPSHOT.jar
打开http://127.0.0.1:7071即可看到界面,登录账户和密码为 applicatio.properties中配置的默认root/root,guest/guest
dubbo-monitor搭建
1、修改 dubbo-monitor-simple 项目 resources/conf 目录下的 dubbo.properties
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
2、在根目录下执行 mvn clean package
,在 dubbo-monitor-simple/target
目录下的 dubbo-monitor-simple-2.0.0-assembly.tar.gz
拷贝到其他目录,或者本目录,解压并启动
tar xzvf dubbo-monitor-simple-2.0.0-assembly.tar.gz
cd dubbo-monitor-simple-2.0.0
./assembly.bin/server.sh start
3、打开http://127.0.0.1:7002
配置生产者和消费者,进行调用就会显示类似下面的图,这里的图修改图片生成的时间为1分钟
4、注意事项
dubbo.monitor.queue
:监测队列大小,默认为100000chart 图片默认五分钟根据统计目录的数据生成一张 png 图片,在SimpleMonitorService.java 中110行,可以修改自己需要的时间间隔,
dubbo.jetty.directory=/opt/monitor
这个路径必须自己手动提前创建,否则无法自动创建统计和图片目录,导致没有图片显示如果没有出现图片,在生产者和消费者的配置中添加监控地址
dubbo.monitor.address= 172.20.155.60:7070
# 配置文件
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;
}
小结
经过几天的时间修改了部分源码搭建起来的监控平台,目前已经在生产上使用了。从目前的服务调用来看,效果还可以。前期搭建的过程中还是踩了不少坑的,由于 dubbo 的版本复杂,网上多种监控平台各有各的特点, 权衡了很久才决定还是用官方的监控平台。
官方的监控平台是使用人数最多的,既然是要上生产,就必须要有保障。但是可能由于年代久远,不是很美观,不过能用。网上还有其他版本的监控平台比如开源工具 Dubbokeeper, 以及开源工具 DubboMonitor-x,这几个在之前研究的时候采用 Redis 作为注册中心的时候有研究过,但是后面选择 zk 和官方的监控平台就没有折腾了。
Java 极客技术公众号,是由一群热爱 Java 开发的技术人组建成立,专注分享原创、高质量的 Java 文章。如果您觉得我们的文章还不错,请帮忙赞赏、在看、转发支持,鼓励我们分享出更好的文章。
关注公众号,大家可以在公众号后台回复“博客园”,免费获得作者 Java 知识体系/面试必看资料。
基于ZK的 Dubbo-admin 与 Dubbo-monitor 搭建的更多相关文章
- zookeeper,dubbo,dubbo admin
zookeeper 1. 分布式协调服务:我们的程序运行在不同的机器上,这些机器可能位于同一个机架,同一个机房又或不同的数据中心.在这样的环境中,我们要实现协调该怎么办?那么这就是分布式协调服务要干的 ...
- alibaba dubbo admin的安装
一.下载地址 https://github.com/apache/incubator-dubbo-admin 然后把项目作为maven项目 前端部分 使用Vue.js作为javascript框架,Vu ...
- 基于JDK 8的Dubbo Admin
在使用Dubbo Admin的时候,一直报错,无法启动,因为Dubbo Admin使用的各种库相对是比较旧的,在JDK 8下,有些小问题 具体解决过程参考的以下链接 https://github.c ...
- dubbo admin详解
运行 dubbo-admin的启动运行其实是一个比较简单的操作,但是由于它采用了前后端分离,前端又是使用的node.js,如果有不熟悉的同学会容易踩坑. 这里只简单介绍一下步骤: 1.从github下 ...
- Spring Boot 2.x (十五):Dubbo + Zookeeper + 新版Dubbo Admin
Dubbo 简介 Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成. 它提供了三大核心能力: 面向接口的远程 ...
- 2. Dubbo原理解析-Dubbo内核实现之基于SPI思想Dubbo内核实现(转)
转载自 斩秋的专栏 http://blog.csdn.net/quhongwei_zhanqiu/article/details/41577159 SPI接口定义 定义了@SPI注解 public ...
- Dubbo 生态添新兵,Dubbo Admin 发布 v0.1
为了提升 Dubbo 里程碑版本2.7.0的使用体验,我们于去年年中启动了 Dubbo Admin 的重构计划,并作为Dubbo生态的子项目,于近期发布了v0.1,重构后的项目在结构上的变化如下: 将 ...
- (四)Dubbo Admin管理控制台
Dubbo Admin管理控制台 在dubbo2.6.0往后的版本在dubbo发布包中就没有dubbo-admin了,而是在incubator-dubbo-ops(https://github.com ...
- 【Dubbo实战】 Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务(转)
Dubbo与Zookeeper.Spring整合使用 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spri ...
- 【DUBBO】 Dubbo原理解析-Dubbo内核实现之基于SPI思想Dubbo内核实现
转载:http://blog.csdn.net/quhongwei_zhanqiu/article/details/41577235 SPI接口定义 定义了@SPI注解 public @interfa ...
随机推荐
- 在mac上尝试docker-swarm
声明:本博客欢迎转发,但请保留原作者信息!新浪微博:@Lingxian_kong;博客地址:孔令贤的博客;内容系本人学习.研究和总结,如有雷同,实属荣幸! 安装docker-machine 我的安装环 ...
- QTableView中加入Check列实现,无需Delegate(使用::data(),Qt原生支持)
通过Delegate创建QCheckBox来实现的Check列,只有在该列进入编辑模式时才能够Check/Uncheck.这显然不是我们想要的,网上翻来翻去,在一个国外论坛中看到了无需Delegate ...
- Spring之基于注解的注入
对于DI使用注解,将不再需要在Spring配置文件中声明Bean实例.Spring中使用注解,需要在原有Spring运行环境基础上再做一些改变,完成以下三个步骤. (1)导入AOP的Jar包.因为注解 ...
- 如何使用Vue.js来搭建一个后台管理系统
目录 使用的技术 基础但不好版 1.初始化项目 2.实现初始页内容自定义 3.使用路由 原始代码 自建页面 修改路由 4.测试路由跳转 补充 子路由版 嵌套router-view 定义子路由 修改菜单 ...
- jvm异常记录
1.如果出现java.lang.OutOfMemoryError: Java heap space异常.原因:Java虚拟机的堆内存不够. 具体如下: a.Java虚拟机 ...
- Java 自定义异常(转载)
1.异常的分类 1. 非运行时异常(Checked Exception) Java中凡是继承自Exception但不是继承自RuntimeException的类都是非运行时异常. 2. 运行时异常(R ...
- 异常:Parameter 'username' not found. Available parameters are [arg1, arg0, param1, param2]
内容中包含 base64string 图片造成字符过多,拒绝显示
- spring源码深度解析— IOC 之 循环依赖处理
什么是循环依赖 循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环.比如A依赖于B,B依赖于C,C又依赖于A.如下图所示: 注意,这里不是函数的循环调用,是对象的相互 ...
- 1. VMware搭建Linux环境,安装配置centos6.5
1. 安装VMware,后新建虚拟机 2. 为我们的虚拟机挂载操作系统 3.开启我们的虚拟机,为我们的虚拟机进行安装操作系统 4.配置虚拟机连接网络 修改linux的mac地址 修改mac地址配置文件 ...
- FireFox下Canvas使用图像合成绘制SVG的Bug
本文适合适合对canvas绘制.图形学.前端可视化感兴趣的读者阅读. 楔子 所有的事情都会有一个起因.最近产品上需要做一个这样的功能:给一些图形进行染色处理.想想这还不是顺手拈来的事情,早就研究过图形 ...