moniter在整個dubbo架構中的角色:
使用的1.0.1版本:
## 1.0.1版本變動內容
dubbokeeper在1.0.1版本對監控數據存儲模塊抽離出來,做為單獨的應用部署,而不是和1.0.0版本和前端展示集成在一個應用里面
在1.0.0版本中暫時提供了mysql以及1.0.0中已有的lucene存儲
這樣做的目的是使得dubbokeeper的監控數據收集端能夠集群部署(使用lucene,將不支持集群部署,如果使用lucene存儲,需要jdk1.7+)
所以1.0.1以后的版本,對dubbokeeper的部署將包含兩部分,一部分是監控數據存儲端以及另一部分是監控數據展示的部署
部署流程:
## 部署過程:
> 1、下載源碼
`git clone https://github.com/dubboclub/dubbokeeper.git `
> 2、編譯打包
由於監控數據的存儲和展示顯示進行了分離,那么打包有所變動。在下載源碼的根目錄會發現install-xxx.bat(sh),這個可以根據你想要的不同存儲執行對應的腳本。
執行完之后在`target`目錄下面會發現`xxx-dubbokeeper-ui`,`xxx-dubbokeeper-server`以及`xxx-dubbokeeper-server.tar.gz`
其中`xxx-dubbokeeper-ui`下會有一個war包,將該war包部署到tomcat或者jetty里面(或者其他servlet容器),那么就部署好了監控展示應用了
> 3、監控數據暫時端調整配置
對上面的war包解壓出來后對其中`WEB-INF/classes/dubbo.properties`文件中的配置項進行調整。
```xml
#monitor的應用名,可根據自己情況自定義
dubbo.application.name=monitor-ui
#應用的擁有者
dubbo.application.owner=bieber
#連接的dubbo注冊中心地址,保持部署監控數據存儲的zk地址一樣
dubbo.registry.address=zookeeper://localhost:2181
#use netty4
dubbo.reference.client=netty4
#peeper config
#監控的zookeeper連接列表,多個通過‘,’(英文逗號)隔開。
peeper.zookeepers=localhost:2181
#監控的zookeeper連接會話超時時間
peeper.zookeeper.session.timeout=60000
#被監控端同步監控數據周期時間,可不配置,默認是一分鍾同步一次
monitor.collect.interval=60000
#logger
#dubbokeeper的日志目錄
monitor.log.home=/usr/dev/op_disk/monitor-log
```
> 4、監控數據存儲端配置調整以及啟動
通過上面編譯后會得到`xxx-dubbokeeper-server`目錄,在改名了的`xxx-server`下面包含三個子目錄`bin`,`conf`以及`lib`。
`bin`:啟動存儲端的腳本,實行`start-xx.sh(bat)`則啟動該應用
`conf`:存儲端的相關配置,具體配置下面會介紹
`lib`:應用依賴的相關jar包
下面列出不同存儲的對配置的相關描述
[lucene存儲配置介紹](doc/storage/lucene/doc.md)
[mysql存儲配置介紹](doc/storage/mysql/doc.md)
[mongodb存儲配置介紹](doc/storage/mongodb/doc.md)
按照上面對應存儲配置完畢之后,執行`start-xx.sh(bat)`,便啟動了dk的存儲
其中mysql相關其他步驟:
CREATE TABLE `application` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL DEFAULT '',
`type` varchar(50) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE KEY `應用名詞索引` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
遇到的問題:
1.統一dubbo版本和netty的版本:
業務微服務業務代碼中的版本是2.8.4和moniter的版本不一致
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.8.4</version>
<exclusions>
dubbokeeper源碼中pom文件
從2.5.3升級到2.8.4
從netty4降至netty,否則序列化總是不成功
調整js中的依賴(具體不是很懂)
var libs = {
default: [
'log4j/log4j/1.2.17',
'commons-logging/commons-logging/1.2',
'com.alibaba/dubbo/2.8.4',
'org.javassist/javassist/3.15.0-GA',
'io.netty/netty/3.7.0.Final',
'org.slf4j/slf4j-api/1.7.7',
'org.slf4j/org.slf4j/slf4j-log4j12/1.7.7',
'org.springframework/spring-core/2.5.6.SEC03',
'com.101tec/zkclient/0.4',
'org.apache.zookeeper/zookeeper/3.4.6'
],
jsonrpc : [
'com.github.briandilley.jsonrpc4j/jsonrpc4j/1.1',
'com.ofpay/dubbo-rpc-jsonrpc/1.0.1'
]
}
2.補充缺少依賴(可能是2.8.4版本dubbo導致的):
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty</artifactId>
<version>3.7.0.Final</version>
</dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.12.0.GA</version>
</dependency>
3.修改ui和moniter的配置文件
conf/dubbo-mysql.properties
dubbo.properties
主要包括zookeeper地址和mysql連接配置
4.在業務微服務中開啟moniter配置
@Bean
public MonitorConfig monitorConfig(){
MonitorConfig monitorConfig = new MonitorConfig();
monitorConfig.setProtocol("registry");
return monitorConfig;
}
到此,大功告成