http://jm.taobao.org/?p=1450 java
在公司內部,有很多應用已經強依賴zookeeper,zookeeper的工做狀態直接影響它們的正常工做。目前開源世界中暫沒有一個比較成熟的zookeeper-monitor, 因而開始zookeeper監控這塊工做。mysql
目前zookeeper-monitor能作哪些事情,講到這個,首先來看看哪些因素對zookeeper正常工做比較大的影響:git
用於zookeeper寫日誌的目錄要有足夠大小,而且強烈建議在單獨的磁盤(掛載點)上,這是影響ZK性能最大因素之一。github
鏈接數。web
註冊的Watcher數。sql
ZNode是否可讀,可寫。數據庫
ZK事件通知的延時是否過大。apache
圍繞以上幾點展開,完成了taokeeper一期的開發,目前主要完成如下方面的監控:(項目地址:https://github.com/alibaba/taokeeper)centos
l CPU/MEM/LOAD的監控tomcat
l ZK日誌目錄所在磁盤剩餘空間監控
l 單機鏈接數的峯值報警
l 單機 Watcher數的峯值報警
l 節點自檢:是指對集羣中每一個IP所在ZK節點上的PATH: /YINSHI.MONITOR.ALIVE.CHECK 按期進行三次以下流程 : 節點鏈接 - 數據發佈 - 修改通知 - 獲取數據 - 數據對比, 在指定的延時內,三次流程均成功視爲該節點處於正常狀態。
1、安裝
環境:jdk + tomcat + mysql + taokeeper
直接部署
先安裝好java jkd及tomcat環境(支持高版本jdk及tomcat,這裏使用的jdk 1.8.0_77, apache-tomcat-8.0.33, tomcat 6 7 8都支持)
下載jdk bin包,tomcat bin包,添加環境變量
如:
## JAVA
export JAVA_HOME=/usr/local/java/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
## TOMcat
export CATALINA_HOME=/usr/local/apache-tomcat
## PATH
export PATH=$JAVA_HOME/bin:/usr/local/apache-tomcat/bin
下載地址:http://pan.baidu.com/s/1kVet0rX
1.1 下載taokeeper.sql,初始化數據庫(Mysql).
1.2 下載taokeeper-monitor.war文件,解壓到tomcat的webapps目前下,確保最後目錄結構以下: %TOMCAT_HOME%\webapps\taokeeper-monitor.war
1.3 每一個zookeeper服務器上新建用戶一個用戶,如zk 密碼 zk
1.4 每一個zookeeper服務器上安裝nc軟件,yum -y install nc # 不安裝nc會致使zookeeper監控信息出不來,zk的角色、鏈接婁等信息就是經過SSH遠程執行nc命令,如nc 10.100.11.13 2181
1.5 下載 taokeeper-monitor-config.properties文件,存放到一個指定目錄,好比
/usr/local/taokeeper/taokeeper-monitor-config.properties, 其中內容以下,根據須要本身修改下。
##-------------------------------------
#Daily-TB
systemInfo.envName=DAILY-TB
#DBCP
dbcp.driverClassName=com.mysql.jdbc.Driver
dbcp.dbJDBCUrl=jdbc:mysql://localhost:3306/taokeeper
dbcp.characterEncoding=GBK
dbcp.username=root
dbcp.password=admin
dbcp.maxActive=30
dbcp.maxIdle=10
dbcp.maxWait=10000
#SystemConstant
#SystemConstent.dataStoreBasePath=/home/admin/taokeeper-monitor/datastore/
SystemConstent.dataStoreBasePath=/var/lib/taokeeper
# ssh用戶
SystemConstant.userNameOfSSH=zk
# ssh用戶密碼
SystemConstant.passwordOfSSH=zk
# ssh端口
SystemConstant.portOfSSH=22
#Optional
SystemConstant.configOfMsgCenter=
##-------------------------------------
1.6 在tomcat啓動腳本中添加JAVA_OPTS
head /usr/local/apache-tomcat/bin/catalina.sh
#!/bin/sh
# description: Start and stop tomcat
# chkconfig: - 21 79
JAVA_HOME=/usr/local/java/jdk
CATALINA_HOME=/usr/local/apache-tomcat
JAVA_OPTS=-DconfigFilePath="/usr/local/taokeeper/taokeeper-monitor-config.properties"
CATALINA_PID="$CATALINA_HOME/tomcat.pid"
ps:能夠把 /usr/local/tomcat/bin/catalina.sh 複製到 /etc/init.d/tomcat
centos 7啓動腳本(centos 7中沒有測試成功):
/usr/lib/systemd/system/tomcat.service
#####
[Unit]
Description=Tomcat
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/apache-tomcat/tomcat.pid
ExecStart=/usr/local/apache-tomcat/bin/catalina.sh start
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
#####
1.7 關閉tomcat日誌,要否則 $CATALINA_HOME/logs/catalina.out 文件很容易就寫得很大,直到空間用完
修改/etc/init.d/tomcat啓動腳本 和 $CATALINA_HOME/bin/catalina.sh
把CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out 替換爲 CATALINA_OUT=/dev/null
把 webapps下taokeeper-monitor/WEB-INF/classes/log4j.properties
全部 INFO 改爲 OFF
log4j.appender.ROLLINGFILE.File=/home/admin/taokeeper-monitor/logs/taokeeper-monitor.log 改爲
log4j.appender.ROLLINGFILE.File=/dev/null
log4j.appender.CHECKDATAFILE.File=/home/admin/taokeeper-monitor/logs/taokeeper-check-data.log 改爲
log4j.appender.CHECKDATAFILE.File=/dev/null
1.8 tomcat 設置http BASIC認證
1.8.1 設置tomcat角色與、用戶、密碼
編輯 tomcat根目錄下的 conf/tomcat-users.xml,在<tomcat-users></tomcat-users>內添加下面內容
<role rolename="tomcat"/>
<role rolename="role1"/>
<user name="admin1" password="admin1" roles="tomcat,role1" />
<user name="admin2" password="admin2" roles="tomcat,role1" />
1.8.2
webapps下taokeeper-monitor/WEB-INF/web.xml 在<web-app></web-app>內添加以下內容
#############
<security-constraint>
<web-resource-collection>
<web-resource-name>
TaoKeeper
</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>tomcat</role-name>
<role-name>role1</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>TaoKeeper</realm-name>
</login-config>
#############
1.8.3 重啓tomcat服務便可
2、 使用:
1.1 taokeeper-monitor啓動後,尚未配置任何zookeeper集羣,點擊「加入監控」進行集羣添加。
1.2 配置zookeeper集羣信息(點擊查看大圖)
ZooKeeper集羣狀態趨勢圖
點擊 查看趨勢