ZooKeeper JMX
JMX
Apache ZooKeeper 对 JMX 提供了广泛支持,使您能够查看和管理 ZooKeeper 服务集群。
本文档假设您已具备JMX的基础知识。如需了解JMX入门知识,请参阅Sun JMX技术页面。
有关设置虚拟机实例本地和远程管理的详细信息,请参阅JMX管理指南。默认情况下,内置的zkServer.sh仅支持本地管理 - 请查阅链接文档以启用远程管理支持(超出本文档范围)。
启用JMX启动ZooKeeper
类 org.apache.zookeeper.server.quorum.QuorumPeerMain 将启动一个支持JMX管理的ZooKeeper服务器。该类在初始化过程中会注册适当的MBean,以支持对该实例的JMX监控和管理。启动ZooKeeper使用QuorumPeerMain的示例可参考 bin/zkServer.sh。
运行JMX控制台
有许多JMX控制台可以连接到正在运行的服务器。在本示例中,我们将使用Sun公司的jconsole工具。
Java JDK自带一个名为jconsole的简单JMX控制台,可用于连接ZooKeeper并检查正在运行的服务器。当您使用QuorumPeerMain启动ZooKeeper后,即可启动jconsole,该工具通常位于JDK_HOME/bin/jconsole目录下
当显示"新建连接"窗口时,可以选择连接到本地进程(如果jconsole与服务器在同一主机上启动)或使用远程进程连接。
默认情况下会显示虚拟机的"概览"选项卡(这是了解虚拟机状态的好方法)。选择"MBeans"选项卡。
现在你应该能在左侧看到org.apache.ZooKeeperService。展开此项后,根据你启动服务器的方式,你将能够监控和管理各种与服务相关的功能。
Logback MBeans注册 (3.8.0新增)
自3.8.0版本起,Logback成为ZooKeeper的默认日志记录后端。通过在logback.xml中添加可配置其注册JMX MBeans。更多信息请参阅Logback的官网。
Log4j MBeans (已弃用)
还需注意的是,如果log4j1被配置为SLF4j的日志后端,ZooKeeper也会注册log4j的MBeans。在左侧同一区域您会看到"log4j"选项。展开该选项即可通过JMX管理log4j。特别有用的是能够通过编辑appender和root阈值来动态更改日志级别。通过在启动ZooKeeper时向JVM传递-Dzookeeper.jmx.log4j.disable=true参数可以禁用Log4j MBean注册。此外,我们还可以使用-Dzookeeper.jmx.log4j.mbean=log4j:hierarchy=default选项指定MBean的名称,以便在需要升级使用旧MBean名称(log4j:hierarchy = default)的集成系统时使用。
ZooKeeper MBean 参考文档
此表详细说明了参与ZooKeeper复制集群(即非独立模式)的服务器的JMX信息。这是生产环境中的典型情况。
MBeans、它们的名称和描述
| MBean | MBean 对象名称 | 描述 |
|---|---|---|
| Quorum | ReplicatedServer_id<#> | 代表Quorum(法定人数)或Ensemble(集群)——所有集群成员的父节点。注意对象名称包含您的JMX智能体所连接服务器的"myid"(名称后缀)。 |
| LocalPeer/RemotePeer | replica.<#> | 表示本地或远程对等节点(即参与集群的服务器)。注意对象名称包含服务器的"myid"(名称后缀)。 |
| LeaderElection | LeaderElection | 表示一个正在进行中的ZooKeeper集群领导者选举。提供有关选举的信息,例如选举开始时间。 |
| Leader | Leader | 表示父副本是领导者,并提供该服务器的属性/操作。注意Leader是ZooKeeperServer的子类,因此它提供了通常与ZooKeeperServer节点关联的所有信息。 |
| Follower | Follower | 表示父副本是一个跟随者,并提供该服务器的属性/操作。注意Follower是ZooKeeperServer的子类,因此它提供了通常与ZooKeeperServer节点关联的所有信息。 |
| DataTree | InMemoryDataTree | 内存中znode数据库的统计信息,以及访问数据更精细(计算量更大)统计信息(如临时节点计数)的操作。InMemoryDataTree是ZooKeeperServer节点的子节点。 |
| ServerCnxn | | 统计每个客户端连接的数据,以及对这些连接的操作(如终止)。注意对象名称是连接会话ID的十六进制形式。 |
此表详细说明了独立服务器的JMX信息。通常独立模式仅用于开发环境。
MBeans、它们的名称和描述
| MBean | MBean对象名称 | 描述 |
|---|---|---|
| ZooKeeperServer | StandaloneServer_port<#> | 运行服务器的统计信息,以及重置这些属性的操作。注意对象名称包含服务器的客户端端口(名称后缀)。 |
| DataTree | InMemoryDataTree | 内存中znode数据库的统计信息,以及访问数据更精细(计算量更大)统计信息(如临时节点计数)的操作。 |
| ServerCnxn | < session_id > | 统计每个客户端连接情况,以及对这些连接的操作(如终止)。注意对象名称是连接会话ID的十六进制形式。 |
