四字监控命令

zookeeper支持某些特定的四字命令与其的交互。它们大多是查询命令,用来获取zookeeper服务的当前状态及相关信息。用户在客户端可以用过telnetnc向zookeeper提交相应的命令。

zookeeper常用的四字命令见下表所示:

命令描述
conf输出相关服务配置的详情信息。如:端口、zk数据及日志配置路径、最大连接数,session超时时间、serverID等。
cons列出所有连接到这台服务器的客户端连接/会话的详细信息。包括“接受/发送"的包数量、sessionID、操作延迟、最后的操作执行等信息。
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 nc.x86_64

# 查看集群的健康状态
echo mntr | nc localhost 2181

nc命令在执行时会创建一个会话。

0. 官方文档

https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_4lw

在这里插入图片描述

1. conf命令

输出相关服务配置的详细信息

echo conf | nc 127.0.0.1 2181
属性含义
clientPort客户端端口号
dataDir数据快照文件目录 默认情况下10万吃事务操作生成一次快照
dataLogDir事务日志文件目录,生产环境中放在独立的磁盘上
tickTime服务器之间或客户端与服务器之间维持心跳的时间间隔(ms)
maxClientCnxns最大连接数
minSessionTimeout最小session超时 minSessionTimeout=tickTime*2
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.14版本中,默认是3
electionPort选举端口
quorumPort数据通信端口
peerType是否为观察者,1为观察者

2. cons命令

列出所有连接到这台服务器的客户端连接/会话的详细信息

echo cons | nc 127.0.0.1 2181
属性含义
ipip地址
port端口号
queued等待被处理的请求数,请求缓存在队列中
received收到的包数
sent发送的包数
sid会话ID
lop最后的操作 GETD-读数据 DELE-删除数据 CREA-创建数据
est连续时间戳
to超时时间
lcxid当前会话的操作id 每次操作+1
lzxid最大事务id
lresp最后响应时间戳
llat最后/最新 延时
minlat最小延时
maxlat最大延时
平均延时

3. crst命令

重置当前这台服务器所有连接/会话的统计信息

echo crst | nc 127.0.0.1 2181

4. dump命令

列出未经处理的会话和临时节点

echo dump | nc 127.0.0.1 2181
属性含义
session idznode path(1对多,处于队列中排队的session和临时节点)

5. envi命令

输出关于服务器的环境配置信息

echo envi | nc 127.0.0.1 2181
属性含义
zookeeper.verison版本
host.namehost信息
java.versionjava版本
java.vendor供应商
java.home运行环境所在目录
java.class.pathclasspath
java.libraray.path第三方库指定非java类包的位置(如:dll,so)
java.io.tempdir默认的临时文件路径
java.compilerJIT编译器的名称
os.nameLinux
os.archamd
os.version3.10.0-1062.el7.x86_64
user.nameroot
user.home/root
user.dir/software/Zookeeper/group/zookeeper2181/bin

6. ruok命令

测试服务是否处于正确运行状态

echo ruok | nc 127.0.0.1 2181

7. stat命令

输出服务器的详细信息与srvr相似,但是多了每个连接的会话信息

echo stat | nc 127.0.0.1 2181
属性含义
Zookeeper version版本
Latency min/avg/max延时
Received接收到的包数
Sent发送的包数
Connections连接数
Outstanding堆积数
Zxid最大事务ID
Mode服务器角色
Node count节点数

8. srst命令

重置server状态

echo srst | nc 127.0.0.1 2181

9. wchs命令

列出服务器watches的简洁信息

echo wchs | nc 127.0.0.1 2181
属性含义
connections连接数
watch-pathswatch节点数
watcherswatcher数量

10. wchc命令(一般不用)

通过session分组,列出watch的所有节点,它输出的是一个与watch相关的会话的节点列表。

echo wchc | nc 127.0.0.1 2181

问题:

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}"

11. wchp命令(一般不用)

通过路径分组,列出所有的watch的session id信息。

echo wchp | nc 127.0.0.1 2181

问题:

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}"

12. mntr命令

列出服务器的健康状态

echo mntr | nc localhost 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_stateleader/follower状态
zk_znode_countznode数量
zk_watch_countwatch数量
zk_ephemerals_count临时节点(znode)
zk_approximate_data_size数据大小
zk_open_file_descriptor_count打开的文件描述符数量
zk_max_file_descriptor_count最大文件描述符数量
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐