14. 监视ZooKeeper实例
ZooKeeper服务可以通过以下两种方式进行监控:
- 使用一组四个字母的单词命令来监视健康状态
- 使用ZooKeeper内置的Java管理扩展功能
四个字母的单词命令
ZooKeeper响应一组命令,每个命令由四个字母组成。这些命令可以通过telnet
或nc
在客户端端口发出。这些命令的主要目标是提供一个简单的机制来检查服务器的运行状况或诊断任何问题。
以下由ZooKeeper服务支持的四个字母的单词:
- conf:打印有关服务器配置参数(如clientPort,dataDir,tickTime等)的详细信息。
- cons:列出了连接到此服务器的所有客户端的完整连接/会话的详细信息。
- crst:重置所有连接/会话的统计信息。
- dump:列出未完成的会话和ephemeral节点。这只对领导者有效。
- envi:列出环境参数。
- ruok:检查服务器是否运行没有任何错误。如果
imok
正在运行,服务器将会响应。如果服务器处于某个错误状态,它将不响应此命令。 - srst:重置服务器统计信息。
- stat:提供有关服务器的当前状态和连接的客户端列表的信息。
- srvr:提供了与
stat
命令相同的信息,但连接的客户端列表除外。 - wchs:提供了服务器监视的简要信息。
- wchc:提供了服务器监视的详细信息,按会话(连接)排序,显示与之关联监视(路径)的会话列表。
- wchp:提供了服务器监视的详细信息,按路径(znode)排序。 显示关联会话的路径列表。
- mntr:输出可用于监视群集运行状况的变量列表。
运行这些四个字母命令来监视ZooKeeper服务器的当前状态的示例如下所示:
Java管理扩展
ZooKeeper为Java管理扩展(JMX)提供了广泛的监视和管理功能。我们将使用jconsole,一个带有JMX的简单管理控制台,来探索ZooKeeper的管理功能。
Tips
有关更多设置JMX进行监视和管理的详细信息,请访问https://docs.oracle.com/javase/7/docs/technotes/guides/management/agent.html。
现在,从ZooKeeper运行的同一系统上的命令行启动jconsole。在本例中,ZooKeeper服务在本地主机上运行。运行jconsole启动一个类似于以下屏幕截图中的窗口:
可以看到,jconsole发现了PID 4824的ZooKeeper进程。通过双击它来连接到这个进程。一旦jconsole连接到ZooKeeper进程,就会看到一个类似于下面的窗口,它有各种形式的系统统计信息,比如内存使用、线程、特定于jvm的信息等等。这些统计数据和系统计数器对于监视ZooKeeper服务器的状态非常重要,并有助于在生产集群中调试性能问题。
MBeans选项卡显示有关ZooKeeper内部状态的详细信息,如连接的客户端的详细信息以及有关在ZooKeeper名称空间中执行的操作的各种属性和详细信息。 Managed Beans(MBeans)是通过JMX公开ZooKeeper服务器上的内部信息的一种非常优雅和灵活的方式。
Tips
有关ZooKeeper管理和监视可用的各种MBeans的更多详细信息,请参阅https://zookeeper.apache.org/doc/trunk/zookeeperJMX.html。