cixiren 发表于 2015-11-21 15:59:49

通过JMX监控Zookeeper


一、zookeeper监控方式


根据官网介绍主要有两种监控方式,

1:使用ssh建立远程连接,然后使用"echo stat \| nc ip port"命令返回结果。开源项目代表taokeeper。

2:使用JMX监控,文档

我们考虑使用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 deploy149 Aug6 13:44 jmxremote.access
-rw-------1 deploy deploy   40 Aug6 13:46 jmxremote.password
$ pwd
/data/zookeeper/conf
$ cat jmxremote.access
monitorRole   readonly
controlRole   readwrite \
create javax.management.monitor.*,javax.management.timer.* \
unregister
$ cat jmxremote.password
monitorRole1234567
controlRole1234567
$
关于权限文件内容的设置可以参考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数



页: [1]
查看完整版本: 通过JMX监控Zookeeper