zoukankan      html  css  js  c++  java
  • 监控与管理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-appsimple-monitor自己。可见simple-monitor也是一个dubbo服务,把自己注册到dubbo.properties里指定的配置中心里去。为了接收到监控数据,需要在dubbo服务端打开监控。在provider.xml文件里加入下面这行配置,然后重新启动dubbo服务:

    1
    <dubbo:monitor protocol="registry" />

    过一会儿就能看到监控的统计信息和图标了:

    而运行ls ~/monitor/也能看到简易监控中心所生成的文件夹chartsstatistics。如果迟迟没有生成这些信息,有一种可能是在多(虚拟)网卡的情况下,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账户的密码。默认即为rootguest。访问http://localhost:8080/dubbo-admin-2.5.4-SNAPSHOT/并输入rootroot,就能看到管理控制台的首页了:

    输入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/并输入adminadmin,就能看到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/

  • 相关阅读:
    Unity The Method Signature Matching Rule
    Unity The Property Matching Rule
    Unity The Type Matching Rule
    Unity The Custom Attribute Matching Rule
    Unity The Member Name Matching Rule
    Unity No Policies
    Unity The Return Type Matching Rule
    Unity The Parameter Type Matching Rule
    Unity The Namespace Matching Rule
    关于TSQL递归查询的(转)
  • 原文地址:https://www.cnblogs.com/softidea/p/6930401.html
Copyright © 2011-2022 走看看