zookeeper
支持某些特定的四字命令与其的交互。它们大多数是查询命令,用来获取zookeeper
服务的当前状态及相关信息。用户再客户端可以通过telnet
或nc
向zookeeper
提交相应的命令。zookeeper
常用四字命令见下表所示:
命令 | 描述 |
---|---|
conf |
输出相关服务配置的详细信息。比如端口号、zk 数据以及日志配置路径、最大连接数,session 超时、serverId 等 |
cons |
列出所有连接到这台服务器的客户端连接/会话的详细信息。包括"接收/发送"的包数量、sessionId 、操作延迟、最后的操作执行等信息 |
crst |
重置当前这台服务器所有连接/会话的统计信息 |
dump |
列出未经处理的会话和临时节点,这仅适用于领导者 |
envi |
处理关于服务器的环境详细信息 |
ruok |
测试服务是否处于正确运行状态。如果正常返回"imok ",否则返回空 |
stat |
输出服务器的详细信息:接收/发送包数量、连接数、模式(leader/follower )、节点总数、延迟。所有客户端的列表 |
srst |
重置server 状态 |
wchs |
列出服务器watchers 的简洁信息:连接总数、watching 节点总数和watches 总数 |
wchc |
通过session分组,列出watch的所有节点,它的输出是一个与watch 相关的会话的节点信息,根据watch 数量的不同,此操作可能会很昂贵(即影响服务器性能),请小心使用 |
mntr |
列出集群的健康状态。包括"接收/发送"的包数量、操作延迟、当前服务模式(leader/follower )、节点总数、watch 总数、临时节点总数 |
进入到zookeeper的zoo.cfg中,如下图:
我们在zoo.cfg中添加如下一行代码并保存退出
#开启四字命令
4lw.commands.whitelist=*
然后我们进到zookeeper的bin目录进行重启zookeeper即可:
./zkServer.sh restart
yum install -y nc
测试:echo conf | nc 192.168.1.7 2181
命令:echo conf | nc 192.168.1.7 2181 (输出相关服务配置的详细信息 )
属性 | 含义 |
---|---|
clientPort |
客户端端口号 |
dataDir |
数据快照文件目录,默认情况下10w 次事务操作生成一次快照 |
dataLogDir |
事务日志文件目录,生产环节中放再独立的磁盘上 |
tickTime |
服务器之间或客户端与服务器之间维持心跳的时间间隔(以毫秒为单位) |
maxClientCnxns |
最大连接数 |
minSessionTimeout |
最小session 超时minSessionTimeout=tickTime*2 ,即使客户端连接设置了会话超时,也不能打破这个限制 |
maxSessionTimeout |
最大session 超时maxSessionTimeout=tickTime*20 ,即使客户端连接设置了会话超时,也不能打破这个限制 |
serverId |
服务器编号 |
initLimit |
集群中follower 服务器(F) 与leader 服务器(L) 之间初始连接时能容忍的最多心跳数,实际上以tickTime 为单位,换算为毫秒数 |
syncLimit |
集群中follower 服务器(F) 与leader 服务器(L) 之间请求和应答之间能容忍的最大心跳数,实际上以tickTime 为单位,换算为毫秒数 |
electionAlg |
0:基于UDP 的LeaderElection 1:基于UDP 的FastLeaderElection 2:基于UDP和认证的FastLeaderElection 3:基于TCP 的FastLeaderElection 在3.4.10 版本中,默认值为3,另外三种算法以及被弃用,并且有计划在之后的版本中将它们彻底删除且不再支持 |
electionPort |
选举端口 |
quorumPort |
数据通信端口 |
peerType |
是否为观察者 1为观察者 |
命令:echo cons | nc 192.168.1.7 2181 (列出所有连接到这台服务器的客户端连接/会话的详细信息 )
开启一个窗口用.zkCli.sh 进入zookeeper客户端。就会看见如下属性。
属性 | 含义 |
---|---|
ip |
IP地址 |
port |
端口号 |
queued |
等待被处理的请求数,请求缓存在队列中 |
received |
收到的包数 |
sent |
发送的包数 |
sid |
会话id |
lop |
最后的操作 GETD-读取数据 DELE-删除数据 CREA-创建数据 |
est |
连接时间戳 |
to |
超时时间 |
lcxid |
当前会话的操作id |
lzxid |
最大事务id |
lresp |
最后响应时间戳 |
llat |
最后/最新 延迟 |
minlat |
最小延时 |
maxlat |
最大延时 |
avglat |
平均延时 |
此命令用于重置当前这台服务器所有连接/会话的统计信息 。
命令:echo crst | nc 192.168.1.7 2181
列出未经处理的临时节点,适用于leader
命令:echo dump | nc 192.168.1.7 2181
输出关于服务器的环境详细信息
命令:echo envi | nc 192.168.1.7 2181
属性 | 含义 |
---|---|
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-1062.el7.x86_64 |
user.name |
zookeeper |
user.home |
/opt/zookeeper |
user.dir |
/opt/zookeeper/zookeeper2181/bin |
测试服务是否处于正确运行状态,如果目标正确运行会返回imok(are you ok | I'm ok)
命令:echo ruok | nc 192.168.1.7 2181
输出服务器的详细信息与srvr
相似(srvr
这里不举例了,官网有一点描述),但是多了每个连接的会话信息
命令:echo stat | nc 192.168.1.7 2181
属性 | 含义 |
---|---|
zookeeper version |
版本 |
Latency min/avg/max |
延时 |
Received |
收包 |
Sent |
发包 |
Connections |
当前服务器连接数 |
Outstanding |
服务器堆积的未处理请求数 |
Zxid |
最大事务id |
Mode |
服务器角色 |
Node count |
节点数 |
重置server
状态
命令:echo srst | nc 192.168.1.7 2181
列出服务器watches
的简洁信息
命令:echo wchs | nc 192.168.1.7 2181
属性 | 含义 |
---|---|
connectsions |
连接数 |
watch-paths |
watch 节点数 |
watchers |
watcher 数量 |
13、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}"
每一个客户端的连接的watcher
信息都会被收集起来,并且监控的路径都会被展示出来(代价高,消耗性能)
[root@localhost bin]# echo wchc | nc 192.168.133.133 2180
0x171be6c6faf0000
/node2
/node1
0x171be6c6faf0001
/node3
通过路径分组,列出所有的watch
的session id
信息
配置同wchc
列出服务器的健康状态
命令:echo mntr | nc 192.168.1.7 2181
属性 | 含义 |
---|---|
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 |
l临时节点(znode) |
zk_approximate_data_size |
数据大小 |
zk_open_file_descriptor_count |
打开的文件描述符数量 |
zk_max_file_descriptor_count |
最大文件描述符数量 |
下载:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
解压后进入目录ZooInspector\build
运行:java -jar zookeeper-dev-ZooInspector.jar (运行后,弹出后面窗口)
看见当前所有节点