基于ZK的 Dubbo-admin 与 Dubbo-monitor 搭建
2019-08-16 11:10:07来源:博客园 阅读 ()
基于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
:监测队列大小,默认为100000 -
chart 图片默认五分钟根据统计目录的数据生成一张 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 知识体系/面试必看资料。
原文链接:https://www.cnblogs.com/justdojava/p/11211517.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文 2020-05-31
- 数据分析 | 基于智能标签,精准管理数据 2020-05-30
- 不用找了,基于 Redis 的分布式锁实战来了! 2020-05-26
- Spring02_基于XML的IOC 2020-05-24
- Spring 基于自动装配的依赖注入详解 [自动装配模式搞不懂? 2020-05-20
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash