通过JMX监控Zookeeper

一、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数

通过JMX监控Zookeeper_第1张图片

你可能感兴趣的:(Java,zookeeper)