ZooKeeper監控(taokeeper)

http://jm.taobao.org/?p=1450 java


        在公司內部,有很多應用已經強依賴zookeeper,zookeeper的工做狀態直接影響它們的正常工做。目前開源世界中暫沒有一個比較成熟的zookeeper-monitor, 因而開始zookeeper監控這塊工做。mysql

目前zookeeper-monitor能作哪些事情,講到這個,首先來看看哪些因素對zookeeper正常工做比較大的影響:git

  1. 用於zookeeper寫日誌的目錄要有足夠大小,而且強烈建議在單獨的磁盤(掛載點)上,這是影響ZK性能最大因素之一。github

  2. 鏈接數。web

  3. 註冊的Watcher數。sql

  4. ZNode是否可讀,可寫。數據庫

  5. ZK事件通知的延時是否過大。apache

圍繞以上幾點展開,完成了taokeeper一期的開發,目前主要完成如下方面的監控:(項目地址:https://github.com/alibaba/taokeepercentos

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集羣,點擊「加入監控」進行集羣添加。

wKiom1eZcM2haFL6AABPA2MAbpc647.png



1.2  配置zookeeper集羣信息(點擊查看大圖)


wKiom1eZcObDvRRvAABwfuermPk783.png


wKioL1cMpKHiS4_0AADmMEtjQbA519.png點擊狀態對應按鈕能夠查看當前服務器上全部訂閱者的詳細信息:

wKioL1cMpY-yItabAADIJW2k7l4680.pngZooKeeper監控報警設置

wKioL1cMpfHzfPtBAADLCgM7Zy4598.png


ZooKeeper集羣狀態趨勢圖

點擊 查看趨勢

wKiom1cMpfPgV7GIAAErFliUtH4496.png

相關文章
相關標籤/搜索