目录

程序员子悠 · 好记性不如烂笔头

技术人生 X 人生技术

X

基于 Redis 注册中心的 Dubbo 监控平台搭建

背景

本文描述的 Dubbo 监控系统都是基于 Redis 作为注册中心的
无需同时部署多个监控中心

官方 Dubbo-admin 和 Dubbo-monitor 搭建

  1. GitHub
  2. 官方组件目前在重构,采用前后分离技术,尚未完成。本文采用的还是 master 分支的老版本 dubbo-admin
  3. 搭建步骤
    1. git clone https://github.com/apache/incubator-dubbo-ops
    2. 在 dubbo-admin 项目的 pom.xml 中增加 Redis 依赖,因为我们这里用的是 Redis 作为注册中心
        <dependency>
        	<groupId>redis.clients</groupId>
        	<artifactId>jedis</artifactId>
        	<version>2.9.0</version>
        	</dependency>
        <dependency>
        	<groupId>commons-io</groupId>
        	<artifactId>commons-io</artifactId>
        	<version>2.4</version>
        </dependency>
    
    1. 修改 dubbo-admin 项目 resources 中的 application.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
      spring.root.password=root
      spring.guest.password=guest
      
      #dubbo.registry.address=zookeeper://127.0.0.1:2181
      dubbo.registry.address=redis://username:password@127.0.0.1:6379
      
      
    2. 修改 dubbo-monitor-simple 项目 pom.xml 文件中加入 Redis 依赖
      <dependency>
          <groupId>redis.clients</groupId>
          <artifactId>jedis</artifactId>
          <version>2.9.0</version>
      </dependency>
      <dependency>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
          <version>2.4</version>
      </dependency>
      
    3. 修改 dubbo-monitor-simple 项目 resources/dubbo.properties 文件
      dubbo.container=log4j,spring,registry,jetty-monitor
      dubbo.application.name=dubbo-admin-monitor
      dubbo.application.owner=dubbo
      #dubbo.registry.address=multicast://224.5.6.7:1234
      #dubbo.registry.address=zookeeper://127.0.0.1:2181
      dubbo.registry.address=redis://username:password@127.0.0.1:6379
      #dubbo.registry.address=dubbo://127.0.0.1:9090
      dubbo.protocol.port=7070
      dubbo.jetty.port=7002
      dubbo.jetty.directory=/opt/monitor
      dubbo.charts.directory=${dubbo.jetty.directory}/charts
      dubbo.statistics.directory=${user.home}/monitor/statistics
      dubbo.log4j.file=logs/dubbo-monitor-simple.log
      dubbo.log4j.level=WARN
      
    4. 在项目根目录下执行mvn clean package -Dmaven.test.skip=true,在dubbo-admin/target目录下生成dubbo-admin-0.0.1-SNAPSHOT.jar,在dubbo-monitor-simple/target目录下生成dubbo-monitor-simple-2.0.0-assembly.tar.gz
    5. 将两个 jar 复制到/opt/dubbo 目录下,通过java -jar dubbo-admin-0.0.1-SNAPSHOT.jar启动 admin,打开http://127.0.0.1:7001 ,输入账号和密码,root/root 或者 guest/guest,根据配置文件里面的配置输入。
      admin
    6. 通过tar xzvf dubbo-monitor-simple-2.0.0-assembly.tar.gz解压,进入解压后的目录,通过./assembly.bin/start.sh 启动 monitor 访问http://127.0.0.1:7002
      monitor

开源工具 Dubbokeeper 搭建

  1. GitHub
  2. dubbokeeper是一个开源版本基于spring mvc开发的社区版dubboadmin,同时修复了官方admin存在的一些问题,以及添加了一下必要的功能 例如服务统计,依赖关系等图表展示功能,当前dubbokeeper还属于开发阶段。最终dubbokeeper会集成服务管理以及服务监控一体的DUBBO服务管理系统
  3. 搭建步骤
    1. git clone https://github.com/dubboclub/dubbokeeper.git
    2. 在项目 dubbokeeper-ui,和 dubbokeeper-server的 pom.xml 中添加 Redis 相关依赖
      <dependency>
          <groupId>redis.clients</groupId>
          <artifactId>jedis</artifactId>
          <version>2.9.0</version>
      </dependency>
      <dependency>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
          <version>2.4</version>
      </dependency>
      
    3. 修改 dubbokeeper-ui 项目 resource 中的dubbo.properties 文件
      dubbo.application.name=dubbokeeper-ui
      dubbo.application.owner=dubbokeeper
      dubbo.registry.address=redis://127.0.0.1:6379
      dubbo.registry.username=username
      dubbo.registry.password=passwor
      #spring.dubbo.registry.address=redis://username:password@127.0.0.1:6379
      
      #use netty4
      dubbo.reference.client=netty4
      
      #peeper config
      peeper.zookeepers=localhost:2181
      peeper.zookeeper.session.timeout=60000
      
      #logger
      monitor.log.home=/opt/monitor-log
      monitor.collect.interval=6000
      #监控数据持久化周期,默认是一分钟,单位是秒
      monitor.write.interval=60
      
    4. 项目根目录的 pom.xml中升级 dubbo 版本升级 <dubbo.version>2.6.0</dubbo.version>,默认2.5.3,不升级会有一系列问题
    5. 修改跟目录下 conf/ 下面对应存储位置的配置文件,这里用 mysql
      dubbo.application.name=dubbokeeper-mysql-monitor
      dubbo.application.owner=dubbokeeper
      #dubbo.registry.address=zookeeper://localhost:2181
      dubbo.registry.address=redis://127.0.0.1:6379
      dubbo.registry.username=username
      dubbo.registry.password=password
      dubbo.protocol.name=dubbo
      dubbo.protocol.port=20884
      
      monitor.collect.interval=10000
      #use netty4
      dubbo.provider.transporter=netty4
      #\u76D1\u63A7\u6570\u636E\u6301\u4E45\u5316\u5468\u671F,\u9ED8\u8BA4\u662F\u4E00\u5206\u949F,\u5355\u4F4D\u662F\u79D2
      monitor.write.interval=60
      #mysql
      dubbo.monitor.mysql.url=jdbc:mysql://127.0.0.1:3306/dubbo-keeper
      dubbo.monitor.mysql.username=root
      dubbo.monitor.mysql.password=123456
      dubbo.monitor.mysql.pool.max=10
      dubbo.monitor.mysql.pool.min=10
      
      
    6. 在本地数据库中创建dubbo-keeper数据库并执行初始化语句
      CREATE TABLE `application` (
        `id` int(11) NOT NULL AUTO_INCREMENT,
        `name` varchar(100) NOT NULL DEFAULT '',
        `type` varchar(50) NOT NULL DEFAULT '',
        PRIMARY KEY (`id`),
        UNIQUE KEY `应用名词索引` (`name`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
      
    7. 执行根目录下的 install-mysql.sh 生成dubbokeeper-ui-1.0.1.war和mysql-dubbokeeper-server.tar.gz,将 war 放到 tomcat 的 webapp 目录下,更改名称为 ROOT.war,启动 tomcat,访问http://127.0.0.1:8080
      monitor
    8. 解压mysql-dubbokeeper-server.tar.gz,启动./bin/start-mysql.sh,如果不能执行,检查是否有执行权限。

开源工具 DubboMonitor-x 搭建

额。。。这款工具,官方提供的源码并不能运行起来,后续研究。Github 上面的各个版本都试过了。。还没有成功的。

参数文档

http://qinghua.github.io/dubbo-3/

Share

Sharing

常用算法笔记——持续更新

One more thing


标题:基于 Redis 注册中心的 Dubbo 监控平台搭建
作者:zhuSilence
地址:https://home.zxsilence.cn/articles/2018/11/23/1570340347829.html