zooKeeper支持某些特定的四字命令与其的交互。它们大多是查询命令,用来获取 zooKeeper服务的当前状态及相关信息。用户在客户端可以通过 telnet 或 nc 向zooKeeper提交相应的命令。 zooKeeper常用四字命令见下表 所示:
命令 | 描述 |
---|---|
conf | 输出相关服务配置的详细信息。比如端口、zk数据及日志配置路径、最大连接数,session超时时间、serverId等 |
cons | 列出所有连接到这台服务器的客户端连接/会话的详细信息。包括“接受/发送”的包数量、session id 、操作延迟、最后的操作执行等信息 |
crst | 重置当前这台服务器所有连接/会话的统计信息 |
dump | 列出未经处理的会话和临时节点 |
envi | 输出关于服务器的环境详细信息 |
ruok | 测试服务是否处于正确运行状态。如果正常返回"imok",否则返回空 |
stat | 输出服务器的详细信息:接收/发送包数量、连接数、模式(leader/follower)、节点总数、延迟。 所有客户端的列表 |
srst | 重置server状态 |
wchs | 列出服务器watches的简洁信息:连接总数、watching节点总数和watches总数 |
wchc | 通过session分组,列出watch的所有节点,它的输出是一个与 watch 相关的会话的节点列表 |
mntr | 列出集群的健康状态。包括“接受/发送”的包数量、操作延迟、当前服务模式(leader/follower)、节点总数、watch总数、临时节点总数 |
nc命令工具安装:
#root用户安装 #下载安装包 wget http://vault.centos.org/6.6/os/x86_64/Packages/nc-1.84-22.el6.x86_64.rpm #rpm安装 rpm -iUv nc-1.84-22.el6.x86_64.rpm
使用方式,在shell终端输入:echo mntr | nc localhost 2181
1、conf命令
conf:输出相关服务配置的详细信息
shell终端输入:echo conf| nc localhost 2181
[root@zk01 ~]# echo conf| nc localhost 2181 clientPort=2181 dataDir=/opt/zookeeper/data/version-2 dataLogDir=/opt/zookeeper/logs/version-2 tickTime=2000 maxClientCnxns=60 minSessionTimeout=4000 maxSessionTimeout=40000 serverId=1 initLimit=10 syncLimit=5 electionAlg=3 electionPort=3888 quorumPort=2888 peerType=0
属性 | 含义 |
---|---|
clientPort | 客户端端口号 |
dataDir | 数据快照文件目录 默认情况下100000次事务操作生成一次快照 |
dataLogDir | 事物日志文件目录,生产环境中放在独立的磁盘上 |
tickTime | 服务器之间或客户端与服务器之间维持心跳的时间间隔(以毫秒为单位) |
maxClientCnxns | 最大连接数 |
minSessionTimeout | 最小session超时 minSessionTimeout=tickTime* 2 |
maxSessionTimeout | maxSessionTimeout 最大session超时 maxSessionTimeout=tickTime * 20 |
serverId | 服务器编号 |
initLimit | 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数 |
syncLimit | 集群中的follower服务器(F)与leader服务器(L)之间 请求和应答之间能容忍的最多心跳数 |
electionAlg | 0:基于UDP的LeaderElection 1:基于UDP的 FastLeaderElection 2:基于UDP和认证的FastLeaderElection 3:基于TCP的FastLeaderElection 在3.4.10版本中,默认值为3另外三种算法已经被弃用,并且有计划在之后的版本中将它们彻底删除而不再支持 |
electionPort | 选举端口 |
quorumPort | 数据通信端口 |
peerType | 是否为观察者 1为观察者 |
cons:列出所有连接到这台服务器的客户端连接/会话的详细信息
shell终端输入:echo cons| nc localhost 2181
[root@zk01 ~]# echo cons| nc localhost 2181
/0:0:0:0:0:0:0:1:33648[0](queued=0,recved=1,sent=0)
/0:0:0:0:0:0:0:1:33644[1](queued=0,recved=697,sent=697,sid=0x179c0b2dee2000c,lop=PING,est=1622455608147,to=30000,lcxid=0x2b,lzxid=0xffffffffffffffff,lresp=1622462271027,llat=1,minlat=0,avglat=0,maxlat=48)
属性 | 含义 |
---|---|
ip | ip地址 |
port | 端口号 |
queued | 等待被处理的请求数,请求缓存在队列中 |
received | 收到的包数 |
sent | 发送的包数 |
sid | 会话id |
lop | 最后的操作 GETD-读取数据 DELE-删除数据 CREA-创建数据 |
est | 连接时间戳 |
to | 超时时间 |
lcxid | 当前会话的操作id |
lzxid | 最大事务id |
lresp | 最后响应时间戳 |
llat | 最后/最新 延时 |
minlat | 最小延时 |
maxlat | 最大延时 |
avglat | 平均延时 |
crst:重置当前这台服务器所有连接/会话的统计信息
shell终端输入:echo crst| nc localhost 2181
dump:列出未经处理的会话和临时节点
shell终端输入:echo dump| nc localhost 2181
属性 | 含义 |
---|---|
session id | znode path(1对多 , 处于队列中排队的session和临时节点) |
envi:输出关于服务器的环境配置信息
shell终端输入:echo envi| nc localhost 2181
[root@zk03 ~]# echo envi| nc localhost 2181 Environment: zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT host.name=zk03 java.version=1.8.0_251 java.vendor=Oracle Corporation java.home=/usr/local/jdk8/jre java.class.path=/usr/local/zookeeper/bin/../build/classes:/usr/local/zookeeper/bin/../build/lib/*.jar:/usr/local/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper/bin/../lib/netty-3.10.5.Final.jar:/usr/local/zookeeper/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper/bin/../zookeeper-3.4.10.jar:/usr/local/zookeeper/bin/../src/java/lib/*.jar:/usr/local/zookeeper/bin/../conf: java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib java.io.tmpdir=/tmp java.compiler=<NA> os.name=Linux os.arch=amd64 os.version=3.10.0-1160.11.1.el7.x86_64 user.name=root user.home=/root user.dir=/
属性 | 含义 |
---|---|
zookeeper.version | 版本 |
host.name | host信息 |
java.version | java版本 |
java.vendor | 供应商 |
java.home | 运行环境所在目录 |
java.class.path | classpath |
java.library.path | 第三方库指定非java类包的位置(如:dll,so) |
java.io.tmpdir | 默认的临时文件路径 |
java.compiler | JIT 编译器的名称 |
os.name | Linux |
os.arch | amd64 |
os.version | 3.10.0-514.el7.x86_64 |
user.name | zookeeper |
user.home | /home/zookeeper |
user.dir | /home/zookeeper/zookeeper2181/bin |
stat:输出服务器的详细信息与srvr相似,但是多了每个连接的会话信息
shell终端输入:echo stat| nc localhost 2181
-
Zookeeper version 版本
-
Latency min/avg/max 延时
-
Received 收包
-
Sent 发包
-
Connections 连接数
-
Outstanding 堆积数
-
Zxid 最大事物id
-
Mode 服务器角色
-
Node count 节点数
8、srst命令
srst:重置server状态
shell终端输入:echo srst| nc localhost 2181
wchs:列出服务器watches的简洁信息
shell终端输入:echo wchs| nc localhost 2181
-
connectsions 连接数
-
watch-paths watch节点数
-
watchers watcher数量
10、wchc命令
wchc:通过session分组,列出watch的所有节点,它的输出的是一个与 watch 相关的会话的节点列表
问题:
wchc is not executed because it is not in the whitelist.
解决方法:
# 修改启动指令 zkServer.sh # 注意找到这个信息 else echo "JMX disabled by user request" >&2 ZOOMAIN="org.apache.zookeeper.server.quorum.QuorumPeerMain" fi # 下面添加如下信息 ZOOMAIN="-Dzookeeper.4lw.commands.whitelist=* ${ZOOMAIN}"
shell终端输入:echo wchc| nc localhost 2181
wchp:通过路径分组,列出所有的 watch 的session id信息
问题:
wchp is not executed because it is not in the whitelist.
解决方法:
# 修改启动指令 zkServer.sh # 注意找到这个信息 else echo "JMX disabled by user request" >&2 ZOOMAIN="org.apache.zookeeper.server.quorum.QuorumPeerMain" fi # 下面添加如下信息 ZOOMAIN="-Dzookeeper.4lw.commands.whitelist=* ${ZOOMAIN}"
shell终端输入:echo wchp| nc localhost 2181
12、mntr命令
mntr:列出服务器的健康状态
-
-
zk_version 版本
-
zk_avg_latency 平均延时
-
zk_max_latency 最大延时
-
zk_min_latency 最小延时
-
zk_packets_received 收包数
-
zk_packets_sent 发包数
-
zk_num_alive_connections 连接数
-
zk_outstanding_requests 堆积请求数
-
zk_server_state leader/follower 状态
-
zk_znode_count znode数量
-
zk_watch_count watch数量
-
zk_ephemerals_count 临时节点(znode)
-
zk_approximate_data_size 数据大小
-
zk_open_file_descriptor_count 打开的文件描述符数量
-
zk_max_file_descriptor_count 最大文件描述符数量
-
shell终端输入:echo mntr| nc localhost 2181