在公司内部,有不少应用已经强依赖zookeeper,zookeeper的工作状态直接影响它们的正常工作。目前开源世界中暂没有一个比较成熟的zookeeper-monitor, 于是开始zookeeper监控这块工作。
目前zookeeper-monitor能做哪些事情,讲到这个,首先来看看哪些因素对zookeeper正常工作比较大的影响:
-
用于zookeeper写日志的目录要有足够大小,并且强烈建议在单独的磁盘(挂载点)上,这是影响ZK性能最大因素之一。
-
连接数。
-
注册的Watcher数。
-
ZNode是否可读,可写。
-
ZK事件通知的延时是否过大。
围绕以上几点展开,完成了taokeeper一期的开发,目前主要完成以下方面的监控:(项目地址:https://github.com/alibaba/taokeeper)
- CPU/MEM/LOAD的监控
- ZK日志目录所在磁盘剩余空间监控
- 单机连接数的峰值报警
- 单机 Watcher数的峰值报警
- 节点自检:是指对集群中每个IP所在ZK节点上的PATH: /YINSHI.MONITOR.ALIVE.CHECK 定期进行三次如下流程 : 节点连接 - 数据发布 - 修改通知 - >获取数据 - 数据对比, 在指定的延时内,三次流程均成功视为该节点处于正常状态。
一、环境
[taokeeper@node3 ~]$ java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
[taokeeper@node3 ~]$ apache-tomcat-7.0.85/bin/catalina.sh version
Using CATALINA_BASE: /home/taokeeper/apache-tomcat-7.0.85
Using CATALINA_HOME: /home/taokeeper/apache-tomcat-7.0.85
Using CATALINA_TMPDIR: /home/taokeeper/apache-tomcat-7.0.85/temp
Using JRE_HOME: /home/taokeeper/jdk1.7.0_79
Using CLASSPATH: /home/taokeeper/apache-tomcat-7.0.85/bin/bootstrap.jar:/home/taokeeper/apache-tomcat-7.0.85/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.85
Server built: Feb 7 2018 18:52:33 UTC
Server number: 7.0.85.0
OS Name: Linux
OS Version: 3.10.0-862.el7.x86_64
Architecture: amd64
JVM Version: 1.7.0_79-b15
JVM Vendor: Oracle Corporation
root@[ 9.11.11.50 ]@znhjkdbs:/root# mysql -V
mysql Ver 14.14 Distrib 5.6.40, for linux-glibc2.12 (x86_64) using EditLine wrapper
2、安装
1、初始化数据库 taokeeper.sql
2、下载taokeeper-monitor.tar.gz 到tomcat的webapps 下
3、修改taokeeper-monitor-config.properties
#Daily
systemInfo.envName=DAILY
#DBCP
dbcp.driverClassName=com.mysql.jdbc.Driver
dbcp.dbJDBCUrl=jdbc:mysql://9.11.11.50:3306/taokeeper #MySQL
dbcp.characterEncoding=GBK
dbcp.username=aa 用户名密码
dbcp.password=bb
dbcp.maxActive=30
dbcp.maxIdle=10
dbcp.maxWait=10000
#SystemConstant
SystemConstent.dataStoreBasePath=/home/yinshi.nc/taokeeper-monitor/
SystemConstant.userNameOfSSH=root #远程连接zookeeper服务器账号
SystemConstant.passwordOfSSH=123456 #密码
#Optional
SystemConstant.portOfSSH=22
每个zookeeper服务器上安装nc软件,yum -y install nc # 不安装nc会导致zookeeper监控信息出不来,zk的角色、连接娄等信息就是通过SSH远程执行nc命令,如nc 9.11.11.50 2181
3、修改tomcat启动脚本
添加
JAVA_OPTS=-DconfigFilePath="/home/taokeeper/apache-tomcat-7.0.85/webapps/taokeeper-monitor-config.properties"
4、关闭tomcat日志
关闭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
5、如图
6、软件包下载
链接:https://pan.baidu.com/s/15K7sIEPpPXKCecjsUq10qw
提取码:zpiw