JMX是对运行中的JAVA系统进行管控。目前ZK使用标准的JMX接口。


修改ZK的启动脚本

Zookeeper默认开启JMX,但是只能从本地连接无法从远程连接。

zkServer.sh这个启动脚本进行修改,第一句不是必须的,但是第二句是必须的

Zookeeper详解(五):通过JMX查看Zookeeper信息_第1张图片

在conf目录下新建java.env文件

Zookeeper详解(五):通过JMX查看Zookeeper信息_第2张图片

重新启动

Zookeeper详解(五):通过JMX查看Zookeeper信息_第3张图片

为什么要在conf里面建立一个java.env呢?其实你都写在zkServer.sh中也行,但是很不利于管理,其实这个脚本本身就考虑使用变量。至于为什么是java.env,那就要看bin目录下面的zkEnv.sh脚本了。根据变量你可以找到它加载zoo.cfg的路径,那么它这里有一个java.env,而且还进行了加载(.),因为默认没有,所以它这里有一个判断。那么你需要的JAVA变量比如调整JVM的参数还有JMX的参数都可以写在这里。之后需要做的就是在zkServer.sh里面使用变量就好了。这样也利于维护。

Zookeeper详解(五):通过JMX查看Zookeeper信息_第4张图片


通过Jconsole连接

Zookeeper详解(五):通过JMX查看Zookeeper信息_第5张图片

Zookeeper详解(五):通过JMX查看Zookeeper信息_第6张图片

这里说明我们当前连接的是id为3的那台服务器。

Zookeeper详解(五):通过JMX查看Zookeeper信息_第7张图片

查看ID为3的属性,这里它有一个Follower节点,说明当前我们连接的这台ZK是从服务器角色。如果出现的是Leader那么该节点就是主服务器。

通过JMX可以查看到当前ZK服务器所配置的所有参数以及当前运行状态。