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
|
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:2181
:spring
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-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
,就能看到管理控制檯的首頁了:
能夠在此頁面進行各類服務治理操做。更詳細的資料,請參考運維手冊。
運行如下命令刪除tomcat容器:
1
|
docker rm
-f tomcat
|
簡易監控中心和管理控制檯的頁面風格看起來還停留在上個世紀。韓都衣舍提供了一個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
|
除了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/