一、zookeeper监控方式
根据官网介绍主要有两种监控方式,
1:使用ssh建立远程连接,然后使用"echo stat \| nc ip port"命令返回结果。开源项目代表taokeeper。
2:使用JMX监控,文档[http://zookeeper.apache.org/doc/r3.4.6/zookeeperJMX.html]
我们考虑使用JMX监控是因为运维不希望在服务器之间配置ssh连接,或者openSSH,服务器太多难以管理用户密码和公钥,容易混乱。
二、zookeeper服务开启JMX监控
修改zookeeper的启动脚本vim zkServer.sh。找到启动参数ZOOMAIN,修改为下面值。
其中local.only=false,设为false才能在远程建立连接。
ZOOMAIN="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false
-Djava.rmi.server.hostname=127.0.0.1
-Dcom.sun.management.jmxremote.port=9991
-Dcom.sun.management.jmxremote.ssl=true
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.access.file=/data/zookeeper/conf/jmxremote.access
-Dcom.sun.management.jmxremote.password.file=/data/zookeeper/conf/jmxremote.password
-Dzookeeper.jmx.log4j.disable=true
org.apache.zookeeper.server.quorum.QuorumPeerMain"
在/data/zookeeper/conf目录下建立2个访问授权文件, 修改文件权限chmod 600 jmxremote.*
-rw------- 1 deploy deploy 149 Aug 6 13:44 jmxremote.access
-rw------- 1 deploy deploy 40 Aug 6 13:46 jmxremote.password
[deploy@liutp conf]$ pwd
/data/zookeeper/conf
[deploy@liutp conf]$ cat jmxremote.access
monitorRole readonly
controlRole readwrite \
create javax.management.monitor.*,javax.management.timer.* \
unregister
[deploy@liutp conf]$ cat jmxremote.password
monitorRole 1234567
controlRole 1234567
[deploy@liutp conf]$
关于权限文件内容的设置可以参考jdk里的文件:C:\Java\jdk1.7.0_79\jre\lib\management\jmxremote.password.template
重启zk服务 :zkServer.sh restart /data/zookeeper/conf/zk1.cfg
三、使用Java自带的JConsole
在命令行输入JConsole,再回车。
在弹出的界面选择“远程进程”,输入“服务器IP:9991”(zookeeper服务器的IP和端口)
用户名:controlRole密码:1234567就能查看节点数,连接数,watch数