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