JMX

ZooKeeper对JMX有额外的支持,允许你查看和管理Zk群集。

这个文档假设你对JMX有基本的了解。参考 Sun JMX Technology来对JMX进行入门。

关于安装一个本地和远端管理的VM实例的详细信息请参考JMX Management Guide 。默认包含的zkServer.sh 只支持本地管理 - 查看连接的文档来开启远程管理的支持(不在本文档的讨论范围之内)。

带着JMX启动ZK

org.apache.zookeeper.server.quorum.QuorumPeerMai将启动一个可用JMX管理的ZooKeeper服务。这个类在初始化的时候注册适当的MBeans来支持JMX监控和实例管理。参考bin/zkServer.sh关于使用QuorumPeerMai启动ZK的例子。

运行JMX控制台

有几个可用的JMX控制台可以连接到运行的服务端。对于这个例子,我们将使用Sun的jconsole.

Java JDK本身带着一个JMX控制台叫jconsole,这可以被用来连接ZK和查看运行的服务端。一旦你使用QuorumPeerMai启动了ZK,启动jconsole,它通常放在JDK_HOME/bin/jconsole

当通过本地进程连接或使用远程进程连接来显示一个新连接的窗口。

默认地"overview"标签被展示成VM的信息(这是一个了解VM的好方法)。选择"MBeans"标签。

你现在应该可以看到org.apache.ZooKeeperService在左手边。展开这个条目,根据你怎么启动的服务,你将可以监控和管理不现的服务端相关的特性。

同时注意Zk也将会注册log4jMbeans。在左边的同一区域你将会看到"log4j".展示它来通过JMX管理log4j。告别有趣的是可以动态改变日志级别。通过修改附加器(appender)和root阈值。

ZK MBean手册

这个表格详述了加入一个ZK集群的服务端的JMX。这是生产环境典型的案例。

MBeans,他们的名字和描述

MBean

MBean 对象名称

描述

Quorum

ReplicatedServer_id<#>

代表法定人数,或者集群 - 所有集群成员的父亲。注意对象名字包括你的JMX连接到的服务端的myid

LocalPeer|RemotePeer

replica.<#>

代表一个本地或远程的点(也就是群集的参与者)。注意对象名字包括服务端的myid

LeaderElection

LeaderElection

代表一个正在进行的ZK集群选举。提供了关于选举的信息,例如什么时候开始

Leader

Leader

表明父复制品是领导者并且提供属性/操作者为这个服务。注意领导者是ZooKeeperServer的子类,所有它提供所有关于ZooKeeperServer节点的信息。

Follower

Follower

表明父复制品是一个追随者并且提供属性/操作者为这个服务。注意追随者是ZooKeeperServer的子类,所有它提供所有关于ZooKeeperServer节点的信息。

DataTree

InMemoryDataTree

关于内存中的节点数据库的统计,和关于数据(例如临时节点数量)的访问操作的详细(更计算密集型)信息InMemoryDataTrees 是ZooKeeperServer节点的子类。

ServerCnxn

<session_id>

关于每一个客户端连接的和关于这些连接的操作的统计信息。注意对象名字是连接的会话id的16进制格式

这个表述详述了一个单机服务的JMX。通常单机服务只用于开发环境

MBeans,他们的名字和描述

MBean

MBean对象名字

描述

ZooKeeperServer

StandaloneServer_port<#>

有关于运行中的服务和重置这些属性的统计。注意对象名包括服务端的客户端端口

DataTree

InMemoryDataTree

有关于内存中znode数据库和关于这些数据的访问操作的详细统计。

ServerCnxn

<session_id>

关于每一个客户端连接的和关于这些连接的操作的统计信息。注意对象名字是连接的会话id的16进制格式