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进制格式 |