如何从命令提示符下检查ZooKeeper是否正在运行或启动?


77

我探索了几种设置kafka的方法,并且我知道Zookeeper必须启动并运行才能启动kafka。

我想知道如何找到以下内容。

1)我的zookeeper实例的主机名和端口---我检查了zoo.cfg,我只能找到ClientPort而不是主机名,主机名将是我的盒子的主机名吗?

2)检查ZooKeeper是否已启动并正在运行---我试图做一个ps -ef | grep "zoo"我什么都找不到的事情。可能是我使用了错误的关键字进行搜索??

任何帮助将非常感激?


您是指from the command prompt on zookeeper's node?还是from the client node's command prompt?
Jesse Chisholm

Answers:


78

检查Zookeeper是否可访问。一种方法是简单地telnet到正确的端口并执行stats命令。

root@host:~# telnet localhost 2181
Trying 127.0.0.1...
Connected to myhost.
Escape character is '^]'.
stats
Zookeeper version: 3.4.3-cdh4.0.1--1, built on 06/28/2012 23:59 GMT
Clients:

Latency min/avg/max: 0/0/677
Received: 4684478
Sent: 4687034
Outstanding: 0
Zxid: 0xb00187dd0
Mode: leader
Node count: 127182
Connection closed by foreign host.

4
telnet通常不可用/未安装在服务器上
Vijay Kumar

3
“统计信息”在我的Windows上不起作用。请尝试使用“ srvr”。
谢义

81

另一种方法是使用4个字母的命令来验证Zookeeper服务是否健康

echo stat | nc <zookeeper ip> 2181
echo mntr | nc <zookeeper ip> 2181
echo isro  | nc <zookeeper ip> 2181

https://zookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html#sc_zkCommands下面的文档链接的更多详细信息


8
echo ruok | nc <zookeeper ip> 2181如果可以的话,只返回“ imok”,所以这可能是最容易解析的。
米切尔·特雷西

nc可能并非在所有环境中都可用。
杰西·奇斯霍尔姆


19
echo stat | nc localhost 2181 | grep Mode
echo srvr | nc localhost 2181 | grep Mode #(From 3.3.0 onwards)

无论哪种模式运行Zookeeper(独立或嵌入式),以上方法均适用。

其他方式

如果zookeeper在独立模式下运行,则它是一个JVM进程。所以-

jps | grep Quorum

将显示jvm进程列表;对于具有进程ID的Zookeeper,类似这样

HQuorumPeer

15

我做了一些测试:

运行时:

$ /usr/lib/zookeeper/bin/zkServer.sh status
JMX enabled by default
Using config: /usr/lib/zookeeper/bin/../conf/zoo.cfg
Mode: follower

停止时:

$ zkServer status                                                                                                                                
JMX enabled by default
Using config: /usr/local/etc/zookeeper/zoo.cfg
Error contacting service. It is probably not running.

我不在同一台计算机上运行,​​但是您明白了。


7

输入以下命令以验证zookeeper是否正在运行:

echo "ruok" | nc localhost 2181 ; echo 

预期回应: imok


6

Zookeeper只是一个Java进程,当您启动Zookeeper实例时,它将运行一个org.apache.zookeeper.server.quorum.QuorumPeerMain类。因此,您可以像这样检查正在运行的Zookeeper:

jps -l | grep zookeeper

甚至像这样:

jps | grep Quorum

更新:

关于此:will hostname be the hostname of my box??-答案是肯定的。


3

我用:

  jps

根据您的安装,运行中的Zookeeper看起来像

  HQuorumPeer

或某物 动物园管理员的名字。


0

从Windows 10

  • 打开命令提示符,然后键入telnet localhost 2181,然后键入srvr OR
  • 在bin文件夹中,打开一个PowerShell窗口,然后键入 zkServer.sh status
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.