Zookeeper监控之四字监控

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: Zookeeper监控之四字监控

介绍

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

常用四字命令

四字命令 说明
echo conf \ nc 192.168.74.128 2181 conf输出zookeeper相关服务的详细配置信息,如客户端端口、数据存储路径、最大连接数、日志路径、数据同步端口、主节点推举端口、session超时时间等
echo cons \ nc 192.168.74.128 2181 cons命令会用于输出当前这台服务器上所有客户端连接的详细信息,包括队列、数据接收量、数据发送量、sessionID、操作延时、最后的操作信息等
echo crst \ nc 192.168.74.128 2181 crst命令是一个功能性命令,用于重置所有的客户端连接统计信息。
echo dump \ nc 192.168.74.128 2181 dump命令用于输出当前集群的所有会话信息,包括会话的sessionID,以及每个会话创建的临时节点等信息。如果在Leader服务器上执行该命令的话,我们还能够看到每个会话的超时时间。
echo envi \ nc 192.168.74.128 2181 envi命令用于输出Zookeeper所在服务器运行时的环境信息。包括os.version, java.version, user.home等。
echo ruok \ nc 192.168.74.128 2181 ruok命令用于输出当前Zookeeper服务器是否在运行如果在运行返回imok,否则返回空
echo stat \ nc 192.168.74.128 2181 stat命令用于获取Zookeeper服务器的运行时状态信息,包括基本的Zookeeper版本,打包信息,运行时角色,集群数据节点个数等信息,另外还会将当前服务器的客户端连接信息打出来。另外,stat命令还会输出一些服务器的统计信息,包括延迟情况,收到的请求数和返回的响应数等。这些信息可以通过srst命令进行重置。
echo srvr \ nc 192.168.74.128 2181 srvr命令和stat命令的功能一致,唯一的区别是srvr不会将客户端的链接情况输出,仅仅输出服务器端的自身信息。
echo srst \ nc 192.168.74.128 2181 srst命令是一个功能性命令,用于重置所有服务器的统计信息。
echo wchs \ nc 192.168.74.128 2181 wchs命令用于输出当前服务器上管理的watcher的概要信息。
echo wchc \ nc 192.168.74.128 2181 wchc命令用于输出当前服务器上管理的watcher的详细信息,以会话为单位进行归组,同时列出被该会话信息注册了watcher的节点路径。
echo wchp \ nc 192.168.74.128 2181 wchp命令和wchc命令非常类似,也是用于输出当前服务器上管理的watcher的详细信息,不同点在于wchp命令的输出信息是以节点路径为单位进行归组。
echo mntr \ nc 192.168.74.128 2181 mntr命令用于输出比stat命令更为详尽的服务器统计信息,列出集群的关键性能数据,包括zk的版本、最大/平均/最小延迟数、数据包接收/发送量、连接数、zk角色(Leader/Follower)、node数量、watch数量、临时节点数。在输出结果中,每一行都是一个key-value键值对。

开启四字命令

在zoo.cfg中添加如下一行代码并保存退出

# 开启四字命令
4lw.commands.whitelist=*

重启zookeeper

Linux安装nc命令

yum install -y nc

命令详解

conf命令 相关服务配置的详细信息

命令:echo conf | nc 172.16.24.195 2181

返回结果:

clientPort=2181
secureClientPort=-1
dataDir=/data/zookeeper/data/version-2
dataDirSize=270064305
dataLogDir=/data/zookeeper/data/version-2
dataLogSize=270064305
tickTime=6000
maxClientCnxns=5000
minSessionTimeout=12000
maxSessionTimeout=120000
clientPortListenBacklog=-1
serverId=653691
initLimit=100
syncLimit=50
electionAlg=3
electionPort=2183
quorumPort=2182
peerType=0
membership: 
server.653691=10.16.0.16:2182:2183:participant
server.653693=10.16.0.11:2182:2183:participant
server.653692=10.16.0.14:2182:2183:participant

返回结果说明:

属性 含义
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为观察者)

cons命令 客户端连接/会话的详细信息

命令:echo cons | nc 172.16.24.195 2181

返回结果:

 /172.16.24.190:10712[1](queued=0,recved=345000,sent=345000,sid=0x2860204cdc40053,lop=GETC,est=1676251467641,to=30000,lcxid=0x4fa5c,lzxid=0x500213600,lresp=1676439102013,llat=0,minlat=0,avglat=0,maxlat=32)
 /172.16.24.194:35604[1](queued=0,recved=77361,sent=77361,sid=0x2860204cdc40021,lop=PING,est=1675665041173,to=30000,lcxid=0x10,lzxid=0xffffffffffffffff,lresp=1676439094031,llat=1,minlat=0,avglat=0,maxlat=606)
 /172.16.24.194:35602[1](queued=0,recved=77361,sent=77361,sid=0x2860204cdc40020,lop=PING,est=1675665041090,to=30000,lcxid=0x10,lzxid=0xffffffffffffffff,lresp=1676439094885,llat=0,minlat=0,avglat=0,maxlat=690)
 /172.16.24.196:2361[0](queued=0,recved=1,sent=0)
 /172.16.24.195:2803[1](queued=0,recved=95783,sent=95783,sid=0x3859fb197540021,lop=PING,est=1675071115180,to=60000,lcxid=0xe7e2,lzxid=0xffffffffffffffff,lresp=1676439098069,llat=0,minlat=0,avglat=0,maxlat=556)
 /172.16.24.194:35626[1](queued=0,recved=77346,sent=77346,sid=0x2860204cdc40023,lop=PING,est=1675665041329,to=30000,lcxid=0x0,lzxid=0xffffffffffffffff,lresp=1676439098729,llat=1,minlat=0,avglat=0,maxlat=865)
 /172.16.24.195:2801[1](queued=0,recved=68354,sent=68354,sid=0x3859fb197540020,lop=PING,est=1675071115073,to=60000,lcxid=0x11,lzxid=0xffffffffffffffff,lresp=1676439096237,llat=1,minlat=0,avglat=0,maxlat=657)
 /172.16.24.194:35628[1](queued=0,recved=77346,sent=77346,sid=0x2860204cdc40024,lop=PING,est=1675665041340,to=30000,lcxid=0x0,lzxid=0xffffffffffffffff,lresp=1676439099120,llat=1,minlat=0,avglat=0,maxlat=799)
 /172.16.24.194:35608[1](queued=0,recved=77351,sent=77351,sid=0x2860204cdc40022,lop=PING,est=1675665041208,to=30000,lcxid=0x5,lzxid=0xffffffffffffffff,lresp=1676439098239,llat=1,minlat=0,avglat=0,maxlat=904)

返回结果说明:

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

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

命令:echo crst | nc 172.16.24.195 2181

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

命令:echo dump | nc 172.16.24.195 2181

返回结果:

SessionTracker dump:
Session Sets (19):
0 expire at Wed Feb 15 13:38:03 CST 2023:
0 expire at Wed Feb 15 13:38:06 CST 2023:
0 expire at Wed Feb 15 13:38:09 CST 2023:
1 expire at Wed Feb 15 13:38:12 CST 2023:
        0x3860204cdd70018
0 expire at Wed Feb 15 13:38:15 CST 2023:
1 expire at Wed Feb 15 13:38:18 CST 2023:
        0x1860204cdc1036b
0 expire at Wed Feb 15 13:38:21 CST 2023:
1 expire at Wed Feb 15 13:38:24 CST 2023:
        0x1860204cdc10068
4 expire at Wed Feb 15 13:38:27 CST 2023:
        0x2860204cdc40020
        0x2860204cdc40021
        0x3860204cdd70015
        0x1860204cdc1000f
9 expire at Wed Feb 15 13:38:30 CST 2023:
        0x2860204cdc40024
        0x1860204cdc10010
        0x3860204cdd70030
        0x1860204cdc10067
        0x2860204cdc40022
        0x3860204cdd70061
        0x1860204cdc10069
        0x2860204cdc40023
        0x3860204cdd70031
8 expire at Wed Feb 15 13:38:33 CST 2023:
        0x1860204cdc10066
        0x1860204cdc10064
        0x3860204cdd70062
        0x3860204cdd70033
        0x1860204cdc10065
        0x3860204cdd70034
        0x2860204cdc40053
        0x3860204cdd70032
0 expire at Wed Feb 15 13:38:36 CST 2023:
0 expire at Wed Feb 15 13:38:39 CST 2023:
0 expire at Wed Feb 15 13:38:42 CST 2023:
2 expire at Wed Feb 15 13:38:45 CST 2023:
        0x3860204cdd70019
        0x3859fb197540021
2 expire at Wed Feb 15 13:38:48 CST 2023:
        0x1859fb197570015
        0x1859fb197570017
2 expire at Wed Feb 15 13:38:57 CST 2023:
        0x3859fb19754001f
        0x3859fb197540020
1 expire at Wed Feb 15 13:39:00 CST 2023:
        0x1859fb197570018
1 expire at Wed Feb 15 13:39:03 CST 2023:
        0x1859fb197570016
ephemeral nodes dump:
Sessions with Ephemerals (12):
0x3859fb197540020:
        /hiveserver2-leader/privilege_synchonizer/_c_64eb1667-7c13-4d27-adf2-f4abaf8c8a4e-latch-0000000002
0x3860204cdd70015:
        /controller
        /brokers/ids/1002
0x3859fb197540021:
        /hbase-unsecure/master
0x1860204cdc1000f:
        /brokers/ids/1001
0x1860204cdc10010:
        /brokers/ids/1003
0x1859fb197570017:
        /hbase-unsecure/rs/bigdata-24-196,16020,1673486638880
0x3860204cdd70061:
        /clickhouse/tables/ads_user_profile/01/leader_election/leader_election-0000000002
        /clickhouse/tables/ads_user_profile/01/replicas/rep_1/is_active
0x1859fb197570016:
        /hbase-unsecure/rs/bigdata-24-195,16020,1673486403861
0x2860204cdc40053:
        /clickhouse/tables/ads_user_profile/03/replicas/rep_3/is_active
        /clickhouse/tables/ads_user_profile/03/leader_election/leader_election-0000000002
0x3860204cdd70062:
        /clickhouse/tables/ads_user_profile/02/leader_election/leader_election-0000000002
        /clickhouse/tables/ads_user_profile/02/replicas/rep_2/is_active
0x1859fb197570018:
        /hbase-unsecure/rs/bigdata-24-197,16020,1673486647419
0x3859fb19754001f:
        /hiveserver2/serverUri=bigdata-24-195:10000;version=3.1.0.3.1.5.0-152;sequence=0000000000

返回结果说明:

Sessions with Ephemerals (12): 临时节点

envi命令 输出关于服务器的环境详细信息

使用命令:echo envi | nc 172.16.24.196 2181

返回结果:

Environment:
zookeeper.version=3.4.6-152--1, built on 12/12/2019 19:36 GMT
host.name=bigdata-24-196
java.version=1.8.0_151
java.vendor=Oracle Corporation
java.home=/opt/jdk1.8.0_151/jre
java.class.path=/usr/hdp/current/zookeeper-server/bin/../build/classes:/usr/hdp/current/zookeeper-server/bin/../build/lib/*.jar:/usr/hdp/current/zookeeper-server/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/hdp/current/zookeeper-server/bin/../lib/slf4j-api-1.6.1.jar:/usr/hdp/current/zookeeper-server/bin/../lib/netty-3.10.5.Final.jar:/usr/hdp/current/zookeeper-server/bin/../lib/log4j-1.2.16.jar:/usr/hdp/current/zookeeper-server/bin/../lib/jline-0.9.94.jar:/usr/hdp/current/zookeeper-server/bin/../zookeeper-3.4.6.3.1.5.0-152.jar:/usr/hdp/current/zookeeper-server/bin/../src/java/lib/*.jar:/usr/hdp/current/zookeeper-server/conf::/usr/share/zookeeper/*:/usr/share/zookeeper/*
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.81.1.el7.x86_64
user.name=zookeeper
user.home=/home/zookeeper
user.dir=/home/zookeeper

返回结果说明:

属性 含义
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

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

测试服务是否处于正确运行状态,如果目标正确运行会返回imok.(are you ok | I’m ok)

使用命令: echo ruok | nc 172.16.24.196 2181

返回结果:

imok

stat命令 输出服务器的详细信息

使用命令:echo stat | nc 172.16.24.196 2181

返回结果:

Zookeeper version: 3.4.6-152--1, built on 12/12/2019 19:36 GMT
Clients:
 /172.16.24.194:62109[1](queued=0,recved=77431,sent=77431)
 /172.16.24.194:62119[1](queued=0,recved=77431,sent=77431)
 /172.16.24.194:62095[1](queued=0,recved=77439,sent=77439)
 /172.16.24.195:44558[1](queued=0,recved=73005,sent=73005)
 /172.16.24.194:62117[1](queued=0,recved=77430,sent=77430)
 /172.16.24.189:21228[1](queued=0,recved=3862468,sent=4002626)
 /172.16.24.194:28637[1](queued=0,recved=60085,sent=60085)
 /172.16.24.194:23991[1](queued=0,recved=361331,sent=361331)
 /172.16.24.188:5384[1](queued=0,recved=362727,sent=362729)
 /172.16.24.196:31543[0](queued=0,recved=1,sent=0)
 /172.16.24.194:62101[1](queued=0,recved=77431,sent=77431)
 /172.16.24.195:32835[1](queued=0,recved=120894,sent=120901)

Latency min/avg/max: 0/2/1628
Received: 7053942
Sent: 7194140
Connections: 12
Outstanding: 0
Zxid: 0x50021360f
Mode: leader
Node count: 917

返回结果说明:

属性 含义
zookeeper version 版本
Latency min/avg/max 延时
Received 收包
Sent 发包
Connections 当前服务器连接数
Outstanding 服务器堆积的未处理请求数
Zxid 最大事务id
Mode 服务器角色
Node count 节点数

srst命令 重置server状态

重置server状态

命令:echo srst | nc 192.168.74.138 2181

wchs命令 列出服务器watches的简洁信息

使用命令:echo wchs | nc 172.16.24.196 2181

2 connections watching 2 paths
Total watches:2

wchc命令 列出watch详细信息

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

命令:echo wchc | nc 10.16.0.16 2181

返回结果:

0x7b0000052401f65b
        /hiveserver2/leader/_c_9976606a-f614-48af-9ac7-0ccd52cbf9f0-latch-0000000061
0x7b0000052401f03c
        /hadoop-ha/HDFS8000154/ActiveStandbyElectorLock

wchp命令 列出watch详细信息

通过路径分组,列出所有的watchsession id 信息

命令:echo wchp | nc 10.16.0.16 2181

返回结果:

/hiveserver2/leader/_c_9976606a-f614-48af-9ac7-0ccd52cbf9f0-latch-0000000061
        0x7b0000052401f65b
/hadoop-ha/HDFS8000154/ActiveStandbyElectorLock
        0x7b0000052401f03c

wchp 与 wchc 统计维度不同

mntr命令

列出服务器的健康状态

命令:echo mntr | nc 172.16.24.196 2181

返回结果:

zk_version      3.4.6-152--1, built on 12/12/2019 19:36 GMT
zk_avg_latency  2
zk_max_latency  1628
zk_min_latency  0
zk_packets_received     7056217
zk_packets_sent 7196415
zk_num_alive_connections        12
zk_outstanding_requests 0
zk_server_state leader
zk_znode_count  917
zk_watch_count  28
zk_ephemerals_count     16
zk_approximate_data_size        393028
zk_open_file_descriptor_count   44
zk_max_file_descriptor_count    65535
zk_fsync_threshold_exceed_count 35
zk_followers    2
zk_synced_followers     2
zk_pending_syncs        0

返回结果说明:

属性 含义
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://blog.csdn.net/qq_39280718/article/details/126836894

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
2月前
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
144 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
|
4月前
|
监控 API
【zookeeper 第四篇章】监控 Watcher
ZooKeeper通过Watcher机制实现了数据的发布/订阅功能。多个订阅者可以监听同一主题对象,一旦该对象状态变化,如节点内容或子节点列表变动,ZooKeeper会实时通知所有订阅者。Watcher架构包括ZooKeeper服务端、客户端及其Watcher管理器。客户端向服务端注册Watcher并保存至本地管理器中;当状态变化时,服务端通知客户端,触发相关Watcher回调处理逻辑。
87 2
|
7月前
|
Shell
ZooKeeper【基础 02】zookeeper-3.6.0 常用Shell命令(节点增删改查+监听器+四字指令)
ZooKeeper【基础 02】zookeeper-3.6.0 常用Shell命令(节点增删改查+监听器+四字指令)
89 0
|
监控 Java Apache
Apache ZooKeeper - JMX监控 ZooKeeper 的运行状态
Apache ZooKeeper - JMX监控 ZooKeeper 的运行状态
171 0
|
监控 Java 网络安全
JMX监控zookeeper
JMX监控zookeeper
7214 0
|
监控 Java
Java实现ZooKeeper的zNode监控
Java实现ZooKeeper的zNode监控1 场景设计目的是体验ZooKeeper的Watcher功能。程序监控ZooKeeper的/watcher节点数据变化,当创建或修改数据时,控制台打印当前的数据内容和版本号;当/watcher被删除时,程序退出。
1045 0
|
监控 Dubbo Java
zookeeper 安装配置监控等
尽管zookeeper在编程上有很多的阱陷,API也非常的难用,但zookeeper服务本身可以说是很牢靠的了,所以在网上貌似关于运维的文章比较少。 但省心并不代表不会出麻烦,下面总结下zookeeper运维相关的东东。
1057 0
|
监控 关系型数据库 Java
使用zkui做zookeeper监控
克隆项目 https://github.com/DeemOpen/zkui.git 编译项目 mvn clean install 修改配置 zkServer=192.
2216 0