ZooKeeper JMX

JMX

Apache ZooKeeper 对 JMX 具有广泛的支持,使您可以查看和 ManagementZooKeeper 服务集合。

本文档假定您具有 JMX 的基本知识。请参阅Sun JMX 技术页以开始使用 JMX。

有关设置 VM 实例的本地和远程 Management 的详细信息,请参见JMXManagement 指南。默认情况下,随附的* zkServer.sh *仅支持本地 Management-查看链接的文档以启用对远程 Management 的支持(超出本文档的范围)。

在启用 JMX 的情况下启动 ZooKeeper

  • org.apache.zookeeper.server.quorum.QuorumPeerMain 类将启动 JMX 可 Management 的 ZooKeeper 服务器。此类在初始化期间注册正确的 MBean,以支持实例的 JMX 监视和 Management。有关使用 QuorumPeerMain 启动 ZooKeeper 的示例,请参见 bin/zkServer.sh *。

运行 JMX 控制台

有许多 JMX 控制台可以连接到正在运行的服务器。在此示例中,我们将使用 Sun 的* jconsole *。

Java JDK 附带了一个名为jconsole的简单 JMX 控制台,该控制台可用于连接到 ZooKeeper 并检查正在运行的服务器。使用 QuorumPeerMain 启动 ZooKeeper 之后,请启动* jconsole ,它通常位于 JDK_HOME/bin/jconsole *中。

显示“新连接”窗口时,请连接到本地进程(如果 jconsole 与服务器在同一主机上启动)或使用远程进程连接。

默认情况下,将显示 VM 的“概述”选项卡(这是深入了解 VM 的好方法)。选择“ MBeans”选项卡。

现在您应该在左侧看到* org.apache.ZooKeeperService *。展开此项,然后根据您启动服务器的方式,可以监视和 Management 与服务相关的各种功能。

还要注意,ZooKeeper 也将注册 log4j MBean。在左侧的同一部分,您将看到“ log4j”。扩展它以通过 JMXManagementlog4j。特别令人感兴趣的是能够通过编辑附加程序和根阈值来动态更改使用的日志记录级别的功能。可以通过在启动 ZooKeeper 时向 JVM 传递* -Dzookeeper.jmx.log4j.disable = true 来禁用 Log4j MBean 注册。此外,如果需要使用旧的 MBean 名称(log4j:hiearchy = default)升级集成系统,则可以使用 -Dzookeeper.jmx.log4j.mbean = log4j:hierarchy = default *选项指定 MBean 的名称。

ZooKeeper MBean 参考

下表详细说明了参与复制的 ZooKeeper 集成(即非独立)的服务器的 JMX。这是生产环境的典型情况。

MBean,它们的名称和描述

MBeanMBean 对象名称Description
QuorumReplicatedServer_id<#>表示法定人数,即所有群集成员的父代。请注意,对象名称包括 JMX 代理已连接到的服务器的“ myid”(名称后缀)。
LocalPeer/RemotePeerreplica.<#>表示本地或远程对等方(即,参与集合的服务器)。请注意,对象名称包括服务器的“ myid”(名称后缀)。
LeaderElectionLeaderElection代表正在进行的 ZooKeeper 集群领导者选举。提供有关选举的信息,例如何时开始。
LeaderLeader指示父副本是领导者,并提供该服务器的属性/操作。请注意,Leader 是 ZooKeeperServer 的子类,因此它提供了通常与 ZooKeeperServer 节点关联的所有信息。
FollowerFollower指示父副本是跟随者,并提供该服务器的属性/操作。请注意,Follower 是 ZooKeeperServer 的子类,因此它提供了通常与 ZooKeeperServer 节点关联的所有信息。
DataTreeInMemoryDataTree内存 znode 数据库中的统计信息,还用于访问数据的更精细(且计算量更大)的统计信息(例如临时计数)的操作。 InMemoryDataTrees 是 ZooKeeperServer 节点的子级。
ServerCnxn<session_id>每个 Client 端连接的统计信息,以及这些连接上的操作(例如终止)。请注意,对象名称是十六进制形式的连接的会话 ID。

下表详细介绍了独立服务器的 JMX。通常,独立版本仅在开发情况下使用。

MBean,它们的名称和描述

MBeanMBean 对象名称Description
ZooKeeperServerStandaloneServer_port<#>正在运行的服务器上的统计信息,还包括用于重置这些属性的操作。请注意,对象名称包括服务器的 Client 端端口(名称后缀)。
DataTreeInMemoryDataTree内存 znode 数据库中的统计信息,还用于访问数据的更精细(且计算量更大)的统计信息(例如临时计数)的操作。
ServerCnxn\ < session_id >每个 Client 端连接的统计信息,以及这些连接上的操作(例如终止)。请注意,对象名称是十六进制形式的连接的会话 ID。