監控與管理dubbo服務

Dubbo是阿里多年前開源的一套服務治理框架,在衆多互聯網企業裏應用普遍。本文介紹了一些如何監控與管理dubbo服務。使用的工具與《dubbox 的各類管理和監管》大體相同,本文更側重於命令細節與實踐。
html

首先參考《服務治理框架dubbo上手指南》,實現本身的HelloService服務。在此基礎上運行Provider.java啓動服務,接下來就能夠開始管理工做啦。讓咱們來下載dubbo的源碼並安裝:java

1
2
3
git clone https://github.com/alibaba/dubbo.git dubbo
cd ~/dubbo
mvn clean install -Dmaven.test.skip

 

telnet

Dubbo支持使用telnet來查看服務狀態。下面讓咱們來試一下:mysql

1
telnet localhost 19880

 

敲下回車便能看到dubbo>的提示符了。如下命令能夠看到服務列表、服務的方法詳細信息列表和服務地址列表:linux

1
2
3
ls
ls -l org.ggg.hello.service.HelloService
ps -l

 

如下命令能夠跟蹤服務方法的調用狀況:git

1
trace org.ggg.hello.service.HelloService

 

這時會看見光標中止住了。運行Consumer.java來消費服務,就能夠看到跟蹤結果啦。詳細的命令能夠參考Telnet命令參考手冊。如果服務端沒有開啓監控,使用telnet命令對查看甚至配置服務來講,是依賴最少最簡便的方式。github

簡易監控中心

先前安裝過的dubbo項目裏包含了dubbo-monitor-simple的包,解壓之:web

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:2181spring

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啓動簡易監控中心:sql

1
2
mkdir ~/monitor
dubbo-monitor-simple-2.5.4-SNAPSHOT/bin/start.sh

 

訪問http://localhost:8080/便能看到簡易監控中心的首頁了:
docker

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/

相關文章
相關標籤/搜索