zkdoctor是一个ZooKeeper服务的统计、监控报警以及自动化运维平台:监控ZooKeeper集群运行状态,做到有问题及时发现、及时解决,掌握ZooKeeper整体运行情况。
准备环境
jdk下载相应版本
安装jdk#rpm -ivh jdk-8u74-linux-x64.rpm
检查版本号# java -version
安装Mysql
安装MySQL的yum源
安装MySQL# yum -y install mysql mysql-devel mysql-server mysql-utilities
更改Mysql大小写敏感配置#vim /etc/my.conf
lower_case_table_names = 1
启动Mysql#systemctl start mysql
安装npm
找到对应版本下载npm文件https://nodejs.org/zh-cn/download/
解压npm文件#mkdir /usr/local/lib/nodejs
#tar -zxvf node-v10.15.0-linux-x64.tar.gz
#cd node-v10.15.0-linux-x64
#cp -r * /usr/local/lib/nodejs/
配置环境变量#vim .bash_profile
# Nodejs
exportNODEJS_HOME=/usr/local/lib/nodejs/bin
exportPATH=$NODEJS_HOME:$PATH
让配置环境变量生效#source .bash_profil
查看npm是否安装成功
创建软连接# ln -s /usr/local/lib/nodejs/node-$VERSION/bin/node /usr/bin/node
# ln -s /usr/local/lib/nodejs/node-$VERSION/bin/npm /usr/bin/npm
# ln -s /usr/local/lib/nodejs/node-$VERSION/bin/npx /usr/bin/npx
安装zkdoctor
到github下载zkdoctor包
将下载的包解压至/usr/local/zkdoctor目录
启动和停止脚本:位于/src/main/script目录下start.sh和stop.sh,将zkdoctor.war以及启动、停止脚本复制到对应目录(默认:/usr/local/zkdoctor目录)
1)部署目录配置在start.sh里,默认将war包放在/usr/local/zkdoctor目录
2)日志输出目录配置在logback.xml中,默认:/usr/local/zkdoctor/logs/,若该目录不存在,则需要创建该目录
PS:若运行脚本报错...syntax error near unexpected token...,可能由于windows下该文件被更改过,可以转化一下再运行,通过执行:dos2unix start.sh完成对应文件格式转化(若未安装dos2unix ,则yum install一下dos2unix即可 )
创建数据库#mysql -uroot
mysql> create database zkdoctor;
mysql>use zkdoctor
mysql> source /usr/local/zkdoctor/zkdoctor.sql;
安装前端#cd /usr/local/zkdoctor/src/main/webapp/src
#npm config set registry https://registry.npm.taobao.org
前端项目为React+TypeScript,需安装nodejs。代码位于webapp/src下,进入该目录后,分别执行npm install(如果一次install操作
没能把所有依赖全部下下来,请多执行几次,以防有部分依赖没能正确下载)npm run build
启动后端# /usr/local/zkdoctor/start.sh
启动前端#npm run start &
登陆后的界面
创建集群
在【集群管理】→ 【添加集群】中进行操作,填写信息要求:
集群信息
【集群管理】→ 【集群列表】中,监控开关控制集群信息统计。监控任务一分钟执行一次,通过ZooKeeper的四字命令mntr收集服务端的数据,完成数据处理和存储。统计数据详情可在【集群管理】→ 【集群列表】的【监控统计】中进行查看,示例如下:
其他功能自行研究
使用官方的war包启动,添加Zk集群,有些Zk无法显示数据,显示为异常,如图:
是因为有些监控项无法找到,将无法找到的监控项注掉,需要重新编译成war包,替换掉老的war包,重新启动就OK
当然,也可以用我生成好的docker镜像包#docker pull 564239555/zkdoctor
启动脚本#docker run --privileged --cap-add SYS_ADMIN -e container=docker -it --name zkdoctor -v /data/zkdoctor:/var/lib/mysql -p 8080:8080 -d --restart=always 564239555/zkdoctor /usr/sbin/init
启动docker后,需要进入到容器里,创建数据库和启动服务等操作,具体操作如上步骤!
参考文档:https://github.com/ucarGroup/zkdoctor/wiki/01.zkdoctor%E8%AE%BE%E8%AE%A1%E6%96%87%E6%A1%A3