四字监控命令
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
| 属性 | 含义 |
|---|---|
| clientPort | 客户端连接 Zookeeper 的端口号。 |
| dataDir | 数据快照文件目录,Zookeeper 会默认每进行 100,000 次事务操作生成一次快照,保存在该目录中。 |
| dataLogDir | 事务日志文件目录,建议在生产环境中将其配置为独立磁盘,提高性能与可靠性。 |
| tickTime | Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔(单位:毫秒)。 |
| maxClientCnxns | 同一台客户端主机允许的最大连接数。超过该限制的连接会被拒绝。 |
| minSessionTimeout | 会话的最小超时时间,默认值为 tickTime * 2。 |
| maxSessionTimeout | 会话的最大超时时间,默认值为 tickTime * 20。 |
| serverId | 当前服务器在集群中的唯一标识编号。 |
| initLimit | follower 在初始连接 leader 时允许的最大心跳数,超过后认为连接失败。 |
| syncLimit | follower 在请求和接收 leader 响应之间容忍的最大心跳数,超过后认为同步失败。 |
| electionAlg | 选举算法类型:0 - 基于 UDP 的 LeaderElection(已弃用)1 - 基于 UDP 的 FastLeaderElection(已弃用)2 - 基于 UDP + 认证的 FastLeaderElection(已弃用)3 - 基于 TCP 的 FastLeaderElection(默认,推荐)⚠️ 除算法 3 外,其余已废弃,未来版本将不再支持。 |
| electionPort | 节点间用于 Leader 选举的通信端口。 |
| quorumPort | 节点间用于数据同步和状态通信的端口。 |
| peerType | 节点角色类型:1 表示观察者(Observer),其余为参与者(Participant)。 |
# 2、cons命令
cons:列出所有连接到这台服务器的客户端连接/会话的详细信息
shell终端输入:echo cons| nc localhost 2181
| 属性 | 含义 |
|---|---|
| ip | ip地址 |
| port | 端口号 |
| queued | 等待被处理的请求数,请求缓存在队列中 |
| received | 收到的包数 |
| sent | 发送的包数 |
| sid | 会话id |
| lop | 最后的操作,如 GETD(读取数据)、DELE(删除数据)、CREA(创建数据) |
| est | 连接时间戳 |
| to | 超时时间 |
| lcxid | 当前会话的操作id |
| lzxid | 最大事务id |
| lresp | 最后响应时间戳 |
| llat | 最后/最新延时 |
| minlat | 最小延时 |
| maxlat | 最大延时 |
| avglat | 平均延时 |
# 3、crst命令
crst:重置当前这台服务器所有连接/会话的统计信息
shell终端输入:echo crst| nc localhost 2181
# 4、dump命令
dump:列出未经处理的会话和临时节点
shell终端输入:echo dump| nc localhost 2181
| 属性 | 含义 |
|---|---|
| session id | znode path(一对多,处于队列中排队的 session 和临时节点的映射关系) |
# 5、envi命令
envi:输出关于服务器的环境配置信息
shell终端输入:echo envi| nc localhost 2181
# 6、ruok命令
ruok:测试服务是否处于正确运行状态
shell终端输入:echo ruok| nc localhost 2181
# 7、stat命令
stat:输出服务器的详细信息与srvr相似,但是多了每个连接的会话信息
shell终端输入:echo stat| nc localhost 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-514.el7.x86_64 |
| user.name | zookeeper |
| user.home | /home/zookeeper |
| user.dir | /home/zookeeper/zookeeper2181/bin |
# 8、srst命令
srst:重置server状态
shell终端输入:echo srst| nc localhost 2181
# 9、wchs命令
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
# 11、wchp命令
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