当前位置: 首页 > news >正文

dubbo monitor mysql_dubbox 的各种管理和监管

dubbo官方自带了dubbo-admin及dubbo-simple/dubbo-monitor-simple二个子项目用于服务治理及服务监控。

一、dubbo-admin的部署

这个比较简单,编译打包成功后,将dubbo-admin/target/dubbo-admin-2.8.xxx.war 复制到jetty、tomcat下的webapps就算完成部署了(当然,也可以部署到其它兼容的servlet容器,比如jboss、weblogic)

然后浏览:http://localhost:8080/dubbo-admin/ 会提示登陆用户名、密码,这是在配置文件里写死的,配置文件的路径为:

dubbo-admin/src/main/webapp/WEB-INF/dubbo.properties

dubbo.registry.address=zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183

dubbo.admin.root.password=root

dubbo.admin.guest.password=guest

即用户名、密码均为root,登录成功后,刷新下页面,如果提示404之类的,退回到http://localhost:8080/浏览(这个跟部署的contextPath有关,如果contextPath设置为/dubbo-admin,刷新下就可以了,如果contextPath设置成/,则登录后要退回/浏览)

dubbo的服务治理是其特色之一,管理界面如下:

e5ae995e1d7211f7496752bd5fef4d78.png

二、dubbo-monitor-simple 部署

打包后,目录dubbo-simple/dubbo-monitor-simple/target中会生成dubbo-monitor-simple-xxx-assembly.tar.gz,用tar -zxvf *.gz 解压,解压后有三个子目录bin、conf、lib ,conf里面是配置文件:

dubbo.container=log4j,spring,registry,jetty

dubbo.application.name=simple-monitor

dubbo.application.owner=

dubbo.registry.address=zookeeper://127.0.0.1:2181

dubbo.protocol.port=7070

dubbo.jetty.port=8180

dubbo.jetty.directory=/data/dubbo/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

参考上面改,然后bin下有一个start.sh脚本,启动即可,访问后浏览http://localhost:8180 (端口号要跟配置里一致)

这是调用次数的统计

4f6f1c3c6640cb33e13b8410f4fad855.png

这是图表统计

c9b90943b43adc285ae617cf430556a2.png

这是服务之间的依赖关系

8b2519162d2401300dbda037f7eef0ab.png

注:官网的监控是把所有监控数据(主要是统计数据和表图数据)保存到服务器磁盘上的,运行时间久了,硬盘可能会撑满,要注意及时清理(就是配置文件里面配置的3个目录下)。监控数据也并非实时统计的,所以第1次部署成功后马上去看统计数据,可能没有,随便跑一个service provider/service consumer的用例,然后等一会儿就行了。

三、dubbo-monitor-x

oschina有一个开源项目:http://git.oschina.net/handu/dubbo-monitor (为了与dubbox里的dubbo-monitor子项目名称上分开,我在后面加了-x),其中的开发者『马金凯』,也是dubbox的作者之一。

不过,这个版本好象有点bug,charts上图表展示时会报错,我跟了下代码,是sql的问题,已经在个人fork的分支上修复,有兴趣的可以参考。

b0057b20ce54de09c8a2d0d67d2e5b15.png

5942fb41026abc437b524bc062f89bee.png

注:与官网的监控存储方案不同,dubbo-monitor-x是把数据保存在mysql里的,参考README.md很容易搞定部署。

此外,该版本还有一个mongodb的分支,见:dubbo-monitor-mongo (推荐使用)

四、dubbo keeper

这是托管在git上的项目,地址为:https://github.com/dubboclub/dubbokeeper,从github用户信息上的邮箱后缀看,可能是阿里云的人发起的,与前面的项目不同,这个项目把管理+监控集成在一起了,而且存储方案除了mysql,还支持mongodb,lucene,不过好象项目没做完,只覆盖了dubbo-admin官方功能的90%左右(比如:添加路由功能就没有),如果这个项目逐渐完善了,个人觉得最有前途。

该项目部署略复杂:

4.1 如果决定用mysql存储,先执行根目录下的install-mysql.sh

4.2 然后在target目录下,dubbokeeper/target/mysql-dubbokeeper-server/mysql-server/conf 修改这里面的配置

dubbo.application.name=mysql-monitor

dubbo.application.owner=bieber

dubbo.registry.address=zookeeper://localhost:2181

dubbo.protocol.name=dubbo

dubbo.protocol.port=20884

monitor.collect.interval=100

#usered netty4

dubbo.provider.transporter=netty4

#mysql

dubbo.monitor.mysql.url=jdbc:mysql://default:3306/dubbokeeper

dubbo.monitor.mysql.username=root

dubbo.monitor.mysql.password=123456

dubbo.monitor.mysql.pool.max=10

dubbo.monitor.mysql.pool.min=10

主要是zk及mysql的连接信息,以及端口号,然后执行上一级目录../bin下的start-mysql.sh 启动监控数据的存储服务(即:mysql-dubbokeeper-server本身就是一个dubbo服务,用于保存监控数据)

4.3 dubbokeeper/target/mysql-dubbokeeper-ui这个下面的war包扔到tomcat或jetty部署即可(这个才是真正的管理+监控 UI),如果启动失败,检查

dubbokeeper/dubbokeeper-ui/src/main/resources/dubbo.properties 配置是否正确,如果不对,改正确了,再重新打包部署。

这个项目可以很方便的看各项目的依赖关系图。

6af40dfd0fc1659e96871916aaefdb1f.png

以及每个服务的调用次数等信息,可惜没有关键的QPS数据

412f19a8afa29ea3bacbbcae62377aca.png

问题:这几套方案统计出来的数据,对于同样的用例,都不一样,也是醉了,不知道哪家的更准,看个人喜好吧。

下面推荐几种搭配:

a: 官方的dubbo-admin + 韩都的dubbo-monitor-x

b: 全官方的dubbo-admin + dubbo-monitor-simple

c: dubbokeeper 一套

监控服务,如果同时起多个dubbo-admin里会有警告,而且监控数据存多份也没必要,所以不管怎么搭配,不要将dubbo-monitor-simple、dubbo-monitor-x、dubbokeeper同时部署在一个ZK注册中心。

相关文章:

  • mysql传入Bean_mysql 表映射为java bean 手动生成。
  • mysql数据库程序员_大神程序员养成之路-Mysql数据库基础
  • mac svn客户端_SmartSVN 12 for Mac(SVN客户端)
  • mysql随机数据插入_mysql随机数据生成并插入
  • asp 备份 mysql数据库_用Asp备份与恢复SQL Server 数据库_数据库相关_脚本
  • mysql rds数据库优势_云数据库RDS基础版的优势及适用场景
  • mysql写下拉树_PHP+mysql实现从数据库获取下拉树功能的方法
  • host mysql server_mysql远程连接 Host * is not allowed to connect to this MySQL server
  • python 迭代对象必须实现的方法_关于python的可迭代对象、迭代器、生成器的理解...
  • python上手度_(国内首发)最新python初学者上手练习
  • mysql中引号的作用是什么_mysql单引号和双引号的用法
  • mysql 存储过程 光标_MYSQL 存储过程及游标
  • php封装一个mysql的类_PHP封装的一个单例模式Mysql操作类
  • java 字符串查找_Java-006 Java字符串查找
  • java类和对象的区别_java中的对象和类之间有什么区别
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • cookie和session
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • docker python 配置
  • ECMAScript6(0):ES6简明参考手册
  • gcc介绍及安装
  • HTTP请求重发
  • Java 最常见的 200+ 面试题:面试必备
  • JDK 6和JDK 7中的substring()方法
  • scala基础语法(二)
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • 从PHP迁移至Golang - 基础篇
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 前端技术周刊 2019-02-11 Serverless
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 深度学习入门:10门免费线上课程推荐
  • 使用API自动生成工具优化前端工作流
  • 微信小程序开发问题汇总
  • 为视图添加丝滑的水波纹
  • 移动端 h5开发相关内容总结(三)
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​插件化DPI在商用WIFI中的价值
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #162 (Div. 2)
  • #stm32驱动外设模块总结w5500模块
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (转)c++ std::pair 与 std::make
  • (转)JAVA中的堆栈
  • (转)linux 命令大全
  • (转)winform之ListView
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .naturalWidth 和naturalHeight属性,
  • .NET CF命令行调试器MDbg入门(一)
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET Micro Framework初体验(二)
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .net对接阿里云CSB服务