基于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 依赖
<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>
  1. 修改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

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

<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,按照图片修改
image

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

image
  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

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

image

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

[图片上传失败...(image-21b8a1-1555688090773)]

4、注意事项

  • dubbo.monitor.queue:监测队列大小,默认为100000
  • chart 图片默认五分钟根据统计目录的数据生成一张 png 图片,在SimpleMonitorService.java 中110行,可以修改自己需要的时间间隔,


    image
  • 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 和官方的监控平台就没有折腾了。


题外话

一个理工男程序员,除了敲代码之外,还喜欢看书听音乐写写东西。
如果大家喜欢我的文章的话,欢迎大家转发评论点赞,你们的喜欢是对我最大的鼓励。

公众号:沙漏洒洒,主要用来分享技术和成长感悟,如果喜欢欢迎关注
博~~客:个人网站

分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!点击浏览教程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • Dubbo是什么 Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式...
    Coselding阅读 17,129评论 3 196
  • 很多时候当下的离别是为了更好的遇见。 最近群里很多人的日更都变成了水更,而这一切是为了不断更。在半个月前已经停笔的...
    仰墨而白阅读 260评论 2 1
  • 就是这样 什么也不说 什么都藏在心里 越是在意的越是表现的漫不经心 越是迷茫越表现很淡定的样子 习惯了一个...
    乐水遥阅读 174评论 0 0
  • 今天下午参加了“共享经济下的人才战略”峰会,见证了这一场活动从思维碰撞到现场完成的整个过程,今天有300+的...
    胡永群阅读 527评论 1 48
  • 我是一个在学某些事一开始很有兴趣,但是遇到平台期或者回落期就是退缩,甚至转其他的。所以发现自己到目前为止,没有专长...
    有个欧宝阅读 214评论 0 0