监控与管理dubbo服务
Dubbo是阿里多年前开源的一套服务治理框架,在众多互联网企业里应用广泛。本文介绍了一些如何监控与管理dubbo服务。使用的工具与《dubbox 的各种管理和监管》大致相同,本文更侧重于命令细节与实践。
首先参考《服务治理框架dubbo上手指南》,实现自己的HelloService服务。在此基础上运行Provider.java启动服务,接下来就可以开始管理工作啦。让我们来下载dubbo的源码并安装:
|
1
2
3
|
git clone https://github.com/alibaba/dubbo.git dubbo
cd ~/dubbo
mvn clean install -Dmaven.test.skip
|
telnet
Dubbo支持使用telnet来查看服务状态。下面让我们来试一下:
|
1
|
telnet localhost 19880
|
敲下回车便能看到dubbo>的提示符了。以下命令可以看到服务列表、服务的方法详细信息列表和服务地址列表:
|
1
2
3
|
ls
ls -l org.ggg.hello.service.HelloService
ps -l
|
以下命令可以跟踪服务方法的调用情况:
|
1
|
trace org.ggg.hello.service.HelloService
|
这时会看见光标停止住了。运行Consumer.java来消费服务,就可以看到跟踪结果啦。详细的命令可以参考Telnet命令参考手册。若是服务端没有开启监控,使用telnet命令对查看甚至配置服务来说,是依赖最少最简便的方式。
简易监控中心
先前安装过的dubbo项目里包含了dubbo-monitor-simple的包,解压之:
|
1
|
tar zxvf dubbo-simple/dubbo-monitor-simple/target/dubbo-monitor-simple-2.5.4-SNAPSHOT-assembly.tar.gz
|
配置dubbo.properties为自己的zk服务地址:192.168.33.88:2181:
|
1
2
3
4
|
# 操作系统是Linux的话
sed -i "s/multicast:\/\/224.5.6.7:1234/zookeeper:\/\/192.168.33.88:2181/" dubbo-monitor-simple-2.5.4-SNAPSHOT/conf/dubbo.properties
# 操作系统是OS X的话(接下来的sed命令以OS X为例)
sed -i "" "s/multicast:\/\/224.5.6.7:1234/zookeeper:\/\/192.168.33.88:2181/" dubbo-monitor-simple-2.5.4-SNAPSHOT/conf/dubbo.properties
|
简易监控中心以文件的方式记录监控数据。创建基本文件夹并运行start.sh启动简易监控中心:
|
1
2
|
mkdir ~/monitor
dubbo-monitor-simple-2.5.4-SNAPSHOT/bin/start.sh
|
访问http://localhost:8080/便能看到简易监控中心的首页了:
在Applications里可以看到我们先前启动的hello-world-app和simple-monitor自己。可见simple-monitor也是一个dubbo服务,把自己注册到dubbo.properties里指定的配置中心里去。为了接收到监控数据,需要在dubbo服务端打开监控。在provider.xml文件里加入下面这行配置,然后重新启动dubbo服务:
|
1
|
<dubbo:monitor protocol="registry" />
|
过一会儿就能看到监控的统计信息和图标了:
而运行ls ~/monitor/也能看到简易监控中心所生成的文件夹charts和statistics。如果迟迟没有生成这些信息,有一种可能是在多(虚拟)网卡的情况下,simple-monitor绑定到了错误的IP地址去了。万一真是如此,在dubbo.properties里增加一行dubbo.protocol.host的配置即可。
运行stop.sh停止简易监控中心服务:
|
1
|
dubbo-monitor-simple-2.5.4-SNAPSHOT/bin/stop.sh
|
管理控制台
Dubbo为服务治理提供了管理控制台。这是一个webapp,可以很轻松地运行在web容器中。经由源代码安装后便会生成dubbo-admin-2.5.4-SNAPSHOT.war文件,将其部署在tomcat容器中即可。这里用docker启动一个tomcat 7:
|
1
2
3
4
|
docker run -d -p 8080:8080 --name=tomcat tomcat:7
docker cp dubbo-admin/target/dubbo-admin-2.5.4-SNAPSHOT.war tomcat:/usr/local/tomcat/webapps/
docker exec tomcat sed -i "s/127.0.0.1/192.168.33.88/" /usr/local/tomcat/webapps/dubbo-admin-2.5.4-SNAPSHOT/WEB-INF/dubbo.properties
docker restart tomcat
|
文件dubbo.properties里配置了zookeep的地址,所以用sed将其替换为自己的zk服务地址:192.168.33.88。里面还配置了root账户和guest账户的密码。默认即为root和guest。访问http://localhost:8080/dubbo-admin-2.5.4-SNAPSHOT/并输入root和root,就能看到管理控制台的首页了:
输入hello进行查询,便能看到我们的服务了:
可以在此页面进行各种服务治理操作。更详细的资料,请参考运维手册。
运行以下命令删除tomcat容器:
|
1
|
docker rm -f tomcat
|
dubbo-monitor
简易监控中心和管理控制台的页面风格看起来还停留在上个世纪。韩都衣舍提供了一个dubbo-monitor,除了更加现代化的页面,还用数据库代替了简易监控中心写文件的方式。除了mysql,还支持mongo。那我们先来下载代码:
|
1
2
3
|
cd ..
git clone https://github.com/handuyishe/dubbo-monitor
cd dubbo-monitor
|
然后启动一个mysql数据库实例:
|
1
2
|
docker run -d --name=mysql -e MYSQL_ROOT_PASSWORD=raycool -v `pwd`/sql/create.sql:/create.sql mysql:5.7.12
docker exec -it mysql mysql -uroot -praycool
|
创建数据库和表(可能需要等数据库启动一小会儿之后才能连上去):
|
1
2
3
4
5
|
CREATE DATABASE dubbokeeper DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
USE dubbokeeper;
SOURCE /create.sql;
SHOW TABLES;
exit
|
修改配置文件application.properties并打包(目前版本中spring的引用有问题,所以也需要修改pom.xml):
|
1
2
3
4
|
MYSQL_IP=`docker exec -it mysql hostname -i | sed 's/.$//'`
sed -i "" -e "s/dubbo.registry.address.*/dubbo.registry.address=zookeeper:\/\/192.168.33.88:2181/" -e "s/default/${MYSQL_IP}/" src/main/resources/application.properties
sed -i "" s/4.1.6.RELEASE/3.2.9.RELEASE/" pom.xml
mvn clean package
|
启动dubbo-monitor:
|
1
|
docker run -d -p 8080:8080 -v `pwd`/target/dubbo-monitor-x.war:/usr/local/tomcat/webapps/dubbo-monitor-x.war --name=tomcat tomcat:7
|
访问http://localhost:8080/dubbo-monitor-x/并输入admin和admin,就能看到dubbo-monitor的首页了:
可以在dubbo-monitor提供的页面上监控各种数据,但由于笔者是mac配docker版tomcat的方式,监控的dubbo服务只能绑定在docker内部IP上,导致监控数据过不去(com.alibaba.dubbo.remoting.RemotingException: message can not send, because channel is closed)。真正运行的时候还是使用linux+docker(配合net=host)或是mac+原生tomcat的方式吧。运行以下命令删除mysql和tomcat容器:
|
1
|
docker rm -f mysql tomcat
|
DubboKeeper
除了dubbo-monitor以外,github里还有一个社区版的DubboKeeper,功能最为强大。既提供监控功能,又提供服务治理功能。监控数据的持久化除了支持mysql和mongo,还支持lucene。现在下载代码并打包。Dubbokeeper的打包方式略有些不同,需要执行根目录里的install-xxx.sh脚本。这里还是以mysql为例:
|
1
2
3
4
|
cd ..
git clone https://github.com/dubboclub/dubbokeeper
cd dubbokeeper
./install-mysql.sh
|
首先启动DubboKeeper的UI:
|
1
2
3
|
docker run -d -p 8080:8080 -v `pwd`/target/mysql-dubbokeeper-ui/dubbokeeper-ui-1.0.1.war:/usr/local/tomcat/webapps/dubbokeeper-ui-1.0.1.war --name=tomcat tomcat:7
docker exec tomcat sed -i "s/localhost/192.168.33.88/" /usr/local/tomcat/webapps/dubbokeeper-ui-1.0.1/WEB-INF/classes/dubbo.properties
docker restart tomcat
|
访问http://localhost:8080/dubbokeeper-ui-1.0.1/index.htm#/statistics,就能看到DubboKeeper的首页了:
很显然在这些UI里,DubboKeeper的逼格是最高的。第二个tab就是Admin(管理):
接下来就是Monitor(监控),不过只有启动过监控数据存储端才能使用,现在点击会报后端系统出现异常,请稍后再试的错。接下来启动数据库:
|
1
2
|
docker run -d --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=19890314 -v `pwd`/doc/storage/mysql/sql/application.sql:/create.sql mysql:5.7.12
docker exec -it mysql mysql -uroot -p19890314
|
初始化数据库:
|
1
2
3
4
5
|
CREATE DATABASE dubbokeeper;
USE dubbokeeper;
SOURCE /create.sql;
SHOW TABLES;
exit
|
修改监控数据存储端的配置并启动之:
|
1
2
3
|
sed -i "" -e "s/localhost:2181/192.168.33.88:2181/" -e "s/dubbo-monitor/dubbokeeper/" target/mysql-dubbokeeper-server/conf/dubbo-mysql.properties
chmod +x target/mysql-dubbokeeper-server/bin/start-mysql.sh
target/mysql-dubbokeeper-server/bin/start-mysql.sh
|
现在就可以顺利打开监控页面了:
DubboKeeper甚至还提供了ZooKeeper的窥视版ZooPeeper:
最后收尾,Ctrl+C掉监控数据存储端,并删除各个容器:
|
1
|
docker rm -f mysql tomcat
|
http://qinghua.github.io/dubbo-3/
监控与管理dubbo服务的更多相关文章
- 企业数据总线(ESB)和注册服务管理(dubbo)的区别
企业数据总线(ESB)和注册服务管理(dubbo)的区别 转载 2015年11月04日 09:05:14 7607 企业数据总线(ESB)和注册服务管理(dubbo)的区别 2015-03-09 0 ...
- Dubbo中的监控和管理
一.Dubbo中的监控 1.原理 原理:服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心. 2.搭建监控服务 3.修改配置文件 修改注册中心的地址: 注意:这个 ...
- WCF 项目应用连载[3] - 双向通信 实例管理与服务端监控
WCF 项目应用连载[1] - 索引 - 轻量级的Log系统 - Lig Sample -序 第二节我们已经创建了Lig项目,并且能稳定工作了.现在我们来改进ILigAgent接口,实现WCF的双向通 ...
- Spring Boot (27) actuator服务监控与管理
actuaotr是spring boot项目中非常强大的一个功能,有助于对应用程序进行监控和管理,通过restful api请求来监管.审计.收集应用的运行情况,针对微服务而言它是必不可少的一个环节. ...
- dubbo服务调试管理实用命令
公司如果分项目组开发的,各个项目组调用各项目组的接口,有时候需要在联调环境调试对方的接口,可以直接telnet到dubbo的服务通过命令查看已经布的接口和方法,并能直接invoke具体的方法,我们可以 ...
- dubbo服务治理框架设计
dubbo.JSF作为使用最广泛的服务端框治理架,其设计和实现思想值得进行学习研究. 整个服务管理框架核心的原理基于反射以及socket调用实现,服务管理框架包含服务的注册管理 服务的索引管理以及服务 ...
- dubbo服务治理框架
Dubbo的概述 1.1. Dubbo的背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. ...
- K8S(09)交付实战-通过流水线构建dubbo服务
k8s交付实战-流水线构建dubbo服务 目录 k8s交付实战-流水线构建dubbo服务 1 jenkins流水线准备工作 1.1 参数构建要点 1.2 创建流水线 1.2.1 创建流水线 1.2.2 ...
- springboot如何通过apollo动态去注册dubbo服务
参考相关文章: apollo官方文档: https://dubbo.apache.org/zh/docs/v2.7/user/configuration/configuration-load-pro ...
随机推荐
- C/C++中关键字static的用法及作用
本文将主要从static在C和C++共有的作用及C++特有的作用两个方面进行解析. 在C和C++中共有的作用 隐藏(对变量.函数均可) 当同时编译多个文件时,所有未加static前缀的全局变量或全局函 ...
- 【编程练习】快速select算法的实现
代码来自: http://blog.csdn.net/v_JULY_v 算法思想: // Quick_select.cpp : 定义控制台应用程序的入口点. // #include "std ...
- 数据准备<2>:数据质量检查-实战篇
上一篇文章:<数据质量检查-理论篇>主要介绍了数据质量检查的基本思路与方法,本文作为补充,从Python实战角度,提供具体的实现方法. 承接上文,仍然从重复值检查.缺失值检查.数据倾斜问题 ...
- 修改input属性placeholder的样式
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JSON 的含义?
JSON 的全称是 JavaScript Object Notation,是一种轻量级的数据交换格式.JS ON 与 XML 具有相同的特性,例如易于人编写和阅读,易于机器生成和解析.但是 JSON ...
- JAVA 综合面试题
JAVA 综合面试题 2007-08-12 目录 TOC \o "1-3" \h \z \u Java面试题整理 9 Java面向对象 9 1. super()与this()的区别 ...
- J2SE-程序执行与内存图
全局程序运行内存图 基础数据类型:byte,short,int,long(整数) float,double(浮点) -- 数值 char ...
- SpringBoot配置拦截器
[配置步骤] 1.为类添加注解@Configuration,配置拦截器 2.继承WebMvcConfigurerAdapter类 3.重写addInterceptors方法,添加需要拦截的请求 @Co ...
- Day3_函数
为啥要用到函数: 复杂度增大 组织结构不清晰 可读性差 工具就是具备某一种功能的物件,就是程序中函数的概念. 事先准备工具的过程称为函数的定义 遇到特定的场景拿来用就称为函数的调用 函数的分类: 内置 ...
- Nginx接收的host值会影响alias的规则匹配
一般内网接收的HTTP请求都是内网唯一的网关传过来的,nginx的alias匹配会直接使用网关穿过的host值,而不是从URL解析出来的,从而导致的问题是,容器的alias相关Server_name规 ...