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