一、概述
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用户下执行如下命令即可:
yum install -y nc
三、四字监控命令的使用
【a】conf命令
输出相关服务配置的详细信息。比如端口、zk数据及日志配置路径、最大连接数,session超时时间、serverId等。
[root@localhost bin]# echo conf| nc 192.168.179.133 2181
clientPort=2181 #客户端端口号
dataDir=/zookeeper/data/version-2 #数据快照文件目录 默认情况下100000次事务操作生成一次
快照
dataLogDir=/zookeeper/log/version-2 #事务日志文件目录,生产环境中放在独立的磁盘上
tickTime=2000 #服务器之间或客户端与服务器之间维持心跳的时间间隔(以
毫秒为单位)
maxClientCnxns=60 #最大连接数
minSessionTimeout=4000 #最小session过期时间 minSessionTimeout=tickTime*2
maxSessionTimeout=40000 #最大session过期时间 maxSessionTimeout=tickTime*20
serverId=3 #服务器编号
initLimit=10 #集群中的follower服务器(F)与leader服务器(L)之间初始连接
时能容忍的最多心跳数
syncLimit=5 #集群中的follower服务器(F)与leader服务器(L)之间 请求和
应答之间能容忍的最多心跳数
electionAlg=3 #选举算法
electionPort=3888 #选举端口
quorumPort=2888 #数据通信端口
peerType=0 #是否为观察者 1为观察者
【b】cons命令
列出所有连接到这台服务器的客户端连接/会话的详细信息。包括“接受/发送”的包数量、session id 、操作延迟、最后的操作执行等信息。
[root@localhost bin]# echo cons | nc 192.168.179.133 2181
/127.0.0.1:43816[1](queued=0,recved=3,sent=3,sid=0x3000004c3f0000a,lop=CREA,est=1609234625852,to=30000,lcxid=0x1,lzxid=0x50000005b,lresp=24339919,llat=2,minlat=0,avglat=3,maxlat=7)
/192.168.179.133:59288[0](queued=0,recved=1,sent=0)
属性说明:
- ip:ip地址
- port:端口号
- queued:等待被处理的请求数,请求缓存在队列中
- received:收到的包数
- sent:发送的包数
- sid:会话id
- lop:最后的操作 GETD-读取数据 DELE-删除数据 CREA-创建数据
- est:连接时间戳
- to:超时时间
- lcxid:当前会话的操作id
- lzxid:最大事务id
- lresp:最后响应时间戳
- llat:最后/最新 延时
- minlat:最小延时
- maxlat:最大延时
- avglat:平均延时
【c】crst命令
重置当前这台服务器所有连接/会话的统计信息。
[root@localhost bin]# echo cons | nc 192.168.179.133 2181
/192.168.179.133:59290[0](queued=0,recved=1,sent=0)
/127.0.0.1:43816[1](queued=0,recved=16,sent=16,sid=0x3000004c3f0000a,lop=PING,est=1609234625852,to=30000,lcxid=0x1,lzxid=0xffffffffffffffff,lresp=24470010,llat=0,minlat=0,avglat=0,maxlat=7)
[root@localhost bin]# echo crst | nc 192.168.179.133 2181
Connection stats reset.
[root@localhost bin]# echo cons | nc 192.168.179.133 2181 #再次统计客户端连接/会话的详细信息
/127.0.0.1:43816[1](queued=0,recved=1,sent=1,sid=0x3000004c3f0000a,lop=PING,est=1609234625852,to=30000,lzxid=0xffffffffffffffff,lresp=24490016,llat=0,minlat=0,avglat=0,maxlat=0)
/192.168.179.133:59294[0](queued=0,recved=1,sent=0)
如上可见,服务器的所有连接以及会话统计信息都重置成功。
【d】dump命令
列出未经处理的会话和临时节点。
[zk: localhost:2181(CONNECTED) 3] create -e /node11 "node11" #创建一个临时节点
Created /node11
[root@localhost bin]# echo dump | nc 192.168.179.133 2181
SessionTracker dump:
org.apache.zookeeper.server.quorum.LearnerSessionTracker@5c2461e9
ephemeral nodes dump:
Sessions with Ephemerals (1):
0x3000004c3f0000a: #会话ID
/node11 #临时节点路径
【e】envi命令
输出关于服务器的环境详细信息。
[root@localhost bin]# echo envi | nc 192.168.179.133 2181
Environment:
zookeeper.version=3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT
host.name=localhost
java.version=1.8.0_161
java.vendor=Oracle Corporation
java.home=/usr/local/java/jdk1.8.0_161/jre
java.class.path=/usr/local/zookeeper-3.4.14/bin/../zookeeper-server/target/classes:/usr/local/zookeeper-3.4.14/bin/../build/classes:/usr/local/zookeeper-3.4.14/bin/../zookeeper-server/target/lib/*.jar:/usr/local/zookeeper-3.4.14/bin/../build/lib/*.jar:/usr/local/zookeeper-3.4.14/bin/../lib/slf4j-log4j12-1.7.25.jar:/usr/local/zookeeper-3.4.14/bin/../lib/slf4j-api-1.7.25.jar:/usr/local/zookeeper-3.4.14/bin/../lib/netty-3.10.6.Final.jar:/usr/local/zookeeper-3.4.14/bin/../lib/log4j-1.2.17.jar:/usr/local/zookeeper-3.4.14/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper-3.4.14/bin/../lib/audience-annotations-0.5.0.jar:/usr/local/zookeeper-3.4.14/bin/../zookeeper-3.4.14.jar:/usr/local/zookeeper-3.4.14/bin/../zookeeper-server/src/main/resources/lib/*.jar:/usr/local/zookeeper-3.4.14/bin/../conf:.:/usr/local/java/jdk1.8.0_161/lib:/usr/local/java/jdk1.8.0_161/jre/lib
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-862.el7.x86_64
user.name=root
user.home=/root
user.dir=/usr/local/zookeeper-3.4.14/bin
属性说明如下:
- 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
【f】ruok命令
【are you ok?】测试服务是否处于正确运行状态。如果正常返回"imok",否则返回空。
[root@localhost bin]# echo ruok | nc 192.168.179.133 2181
imok
【g】stat命令
输出服务器的详细信息:接收/发送包数量、连接数、模式(leader/follower)、节点总数、延迟。 所有客户端的列表。
[root@localhost bin]# echo stat | nc 192.168.179.133 2181
Zookeeper version: 3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT #版本
Clients: #每个连接客户端的会话信息
/127.0.0.1:43816[1](queued=0,recved=42,sent=42)
/192.168.179.133:59304[0](queued=0,recved=1,sent=0)
Latency min/avg/max: 0/0/11 #延时
Received: 2368 #收到的包
Sent: 2367 #发送的包
Connections: 2 #当前连接数
Outstanding: 0 #当前请求堆积数
Zxid: 0x50000005c #最大事务ID
Mode: follower #当前节点在集群中的角色
Node count: 29 #节点数
【h】srst命令
重置server状态。
[root@localhost bin]# echo stat | nc 192.168.179.133 2181 #重置前
Zookeeper version: 3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT
Clients:
/127.0.0.1:43816[1](queued=0,recved=42,sent=42)
/192.168.179.133:59304[0](queued=0,recved=1,sent=0)
Latency min/avg/max: 0/0/11
Received: 2368
Sent: 2367
Connections: 2
Outstanding: 0
Zxid: 0x50000005c
Mode: follower
Node count: 29
[root@localhost bin]# echo srst | nc 192.168.179.133 2181 #重置后
Server stats reset.
[root@localhost bin]# echo stat | nc 192.168.179.133 2181
Zookeeper version: 3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT
Clients:
/127.0.0.1:43816[1](queued=0,recved=56,sent=56)
/192.168.179.133:59308[0](queued=0,recved=1,sent=0)
Latency min/avg/max: 0/0/0
Received: 1
Sent: 1
Connections: 2
Outstanding: 0
Zxid: 0x50000005c
Mode: follower
Node count: 29
如上可见,重置完成功后,服务器相关的延时等信息都重置了。
【i】wchs命令
列出服务器watches的简洁信息:连接总数、watching节点总数和watches总数。
[zk: localhost:2181(CONNECTED) 11] get /node1 watch #注册一个watcher监听
[root@localhost bin]# echo wchs | nc 192.168.179.133 2181
1 connections watching 1 paths
Total watches:1
属性说明:
- connectsions:连接数
- watch-paths:watch节点数
- watchers:watcher数量
【j】mntr命令
列出集群的健康状态。包括“接受/发送”的包数量、操作延迟、当前服务模式(leader/follower)、节点总数、watch总数、临时节点总数。
[root@localhost bin]# echo mntr | nc 192.168.179.133 2181
zk_version 3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT #zk版本号
zk_avg_latency 0 #平均延时
zk_max_latency 3 #最大延时
zk_min_latency 0 #最小延迟
zk_packets_received 48 #收到的包数
zk_packets_sent 48 #发送的包数
zk_num_alive_connections 2 #连接数
zk_outstanding_requests 0 #堆积请求数
zk_server_state follower #leader/follower 状态
zk_znode_count 29 #节点数量
zk_watch_count 2 #当前注册的watcher数量
zk_ephemerals_count 1 #临时节点个数(znode)
zk_approximate_data_size 482 #数据长度
zk_open_file_descriptor_count 33 #打开的文件描述符数量
zk_max_file_descriptor_count 65536 #最大文件描述符数量
zk_fsync_threshold_exceed_count 0 #
以上就是关于常见zookeeper中四字命令的使用总结。