zookeeper 监控指标

半兽人 发表于: 2017-11-28   最后更新时间: 2018-01-02 19:25:12  
{{totalSubscript}} 订阅, 6,170 游览

目前zookeeper获取监控指标已知的有两种方式:

  1. 通过zookeeper自带的 four letter words command 获取各种各样的监控指标
  2. 通过JMX Client连接zookeeer对外提供的MBean来 获取监控指标 (需要修改启动脚本,使其支持远程JMX连接)

上述两种方式获取的指标大体上是一致的。

通过下列命令来获取这些监控信息 echo commands | nc ip port,如:

echo conf | nc 192.168.144.110 2181  

现在把能获取到的监控大致列出来:

conf:

# 能够获取到zookeeper的配置信息,包括客户端端口
clientPort=2181

# 数据以及日志路径
dataDir=/data/zookeeper/data/version-2
dataLogDir=/data/zookeeper/logs/version-2

# 间隔单位时间
tickTime=2000

# 单台server与单个client端的连接数限制
maxClientCnxns=60

# 超时时间
minSessionTimeout=4000
maxSessionTimeout=40000

# serverId等等信息
serverId=3
initLimit=10
syncLimit=5
electionAlg=3
electionPort=3883
quorumPort=2882
peerType=0

Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在initLimit时间内完成这个工作。

在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。如果L发出心跳包在syncLimit之后,还没有从F那里收到响应,那么就认为这个F已经不在线了。

cons:

$ echo conf | nc 10.23.134.136 2181

clientPort=2181
dataDir=/data/zookeeper/data/version-2
dataLogDir=/data/zookeeper/logs/version-2
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=3
initLimit=10
syncLimit=5
electionAlg=3
electionPort=3883
quorumPort=2882
peerType=0
[root@10-23-134-136 zookeeper-3.4.9]# echo cons | nc 10.23.134.136 2181    
 /10.23.85.215:35330[1](queued=0,recved=182545,sent=182545,sid=0x35f04f1c5270134,lop=PING,est=1511928522848,to=30000,lcxid=0xb9,lzxid=0x200ee5e25,lresp=1513755154871,llat=0,minlat=0,avglat=0,maxlat=34)
 /10.23.82.55:34912[1](queued=0,recved=222210,sent=222210,sid=0x35f04f1c527014f,lop=PING,est=1511531568580,to=30000,lcxid=0x106,lzxid=0x200ee5e25,lresp=1513755155979,llat=0,minlat=0,avglat=0,maxlat=65)
 /10.23.219.193:60010[1](queued=0,recved=174375,sent=174632,sid=0x35f04f1c52701d5,lop=PING,est=1512031236706,to=30000,lcxid=0x846,lzxid=0x200ee5e2f,lresp=1513755161205,llat=0,minlat=0,avglat=0,maxlat=4)
 /10.23.235.137:59582[1](queued=0,recved=399,sent=399,sid=0x35f04f1c5270228,lop=PING,est=1513751396322,to=30000,lcxid=0x16,lzxid=0x200ee5e2f,lresp=1513755162695,llat=1,minlat=0,avglat=0,maxlat=1)
 /10.23.80.170:44620[1](queued=0,recved=8357,sent=8357,sid=0x35f04f1c5270220,lop=PING,est=1513674079298,to=30000,lcxid=0xfe,lzxid=0x200ee5e25,lresp=1513755155678,llat=1,minlat=0,avglat=0,maxlat=3)

只看最后的连接列表,其中一条的描述。

 /10.23.85.215:35330[1](queued=0,recved=182545,sent=182545,sid=0x35f04f1c5270134,lop=PING,est=1511928522848,to=30000,lcxid=0xb9,lzxid=0x200ee5e25,lresp=1513755154871,llat=0,minlat=0,avglat=0,maxlat=34)
参数描述:
  • 连接信息的总览,
  • 连接ip
  • 端口号
  • 该连接的发包数
  • 该连接的收包数
  • 连接的session Id
  • 最后操作方式/命令
  • 连接的时间戳
  • 超时时间(未确认)
  • 最后的zxid
  • 最后的响应时间戳
  • 连接的时间延时信息

crst:

重置连接状态,重置关于链接/session的统计信息,是一个execute操作 不是一个select操作,执行后返回一个状态信息:

$ echo crst|nc 10.0.21.56 2181

Connection stats reset.  

dump:

输出所有等待队列中的会话和临时节点的信息。

$ echo dump|nc 10.0.21.56 2181

0x24b3673bb140000:  
     /magpie/workerbeats/11011599  
0x14b36741ee41de4:  
     /phenix/servers/px0000000816  
     /phenix/myGroups/1  
0x14b049fe56b89e5:  
     /hbase/rs/hhz111,60021,1422454057830  
0x4b305d40f92989:  
     /hbase/rs/hhz115,60021,1422521527024  
0x14b36741ee41edc:  
     /magpie/workerbeats/3502573  
0x24b3673bb141dc6:  
     /magpie/workerbeats/3002570

envi:

$ echo envi|nc 10.0.21.56 2181

zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT  
host.name=hhz112  
java.version=1.7.0_60  
java.vendor=Oracle Corporation  
java.home=/export/servers/jdk1.7.0_60/jre  
java.class.path=/export/servers/zookeeper-3.4.6/bin/../build/classes:/export/servers/zookeeper-3.4.6/bin/../build/lib/*.jar:/export/servers/zookeeper-3.4.6/bin/../lib/slf4j-log4j12-1.6.1.jar:/export/servers/zookeeper-3.4.6/bin/../lib/slf4j-api-1.6.1.jar:/export/servers/zookeeper-3.4.6/bin/../lib/netty-3.7.0.Final.jar:/export/servers/zookeeper-3.4.6/bin/../lib/log4j-1.2.16.jar:/export/servers/zookeeper-3.4.6/bin/../lib/jline-0.9.94.jar:/export/servers/zookeeper-3.4.6/bin/../zookeeper-3.4.6.jar:/export/servers/zookeeper-3.4.6/bin/../src/java/lib/*.jar:/export/servers/zookeeper-3.4.6/bin/../conf:/export/servers/zookeeper-3.4.6/bin/../build/classes:/export/servers/zookeeper-3.4.6/bin/../build/lib/*.jar:/export/servers/zookeeper-3.4.6/bin/../lib/slf4j-log4j12-1.6.1.jar:/export/servers/zookeeper-3.4.6/bin/../lib/slf4j-api-1.6.1.jar:/export/servers/zookeeper-3.4.6/bin/../lib/netty-3.7.0.Final.jar:/export/servers/zookeeper-3.4.6/bin/../lib/log4j-1.2.16.jar:/export/servers/zookeeper-3.4.6/bin/../lib/jline-0.9.94.jar:/export/servers/zookeeper-3.4.6/bin/../zookeeper-3.4.6.jar:/export/servers/zookeeper-3.4.6/bin/../src/java/lib/*.jar:/export/servers/zookeeper-3.4.6/bin/../conf:.:/export/servers/jdk1.6.0_25/lib/dt.jar:/export/servers/jdk1.6.0_25/lib/tools.jar  
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=2.6.32-358.el6.x86_64  
user.name=hhz  
user.home=/home/hhz  
user.dir=/export/servers/zookeeper-3.4.6
参数描述
  • 当前server的环境信息:
  • 版本信息
  • 主机的host
  • jvm相关参数:version,classpath,lib等等
  • os相关参数:name,version等等
  • 当前host用户信息:name,dir等等

ruok:

查询当前server状态是否正常 若正常返回imok

imok  

srst:

同样是一个execute操作而不是select,重置server状态:

$ echo srst|nc 10.0.21.56 2181
Server stats reset.  

srvr:

$ echo srvr | nc 192.168.144.110 2181  

Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT  
Latency min/avg/max: 0/0/182  
Received: 97182  
Sent: 97153  
Connections: 22  
Outstanding: 8  
Zxid: 0x68000af381  
Mode: follower  
Node count: 101065
参数描述:
  • server的简要信息:
  • 版本
  • 延时
  • 收包数
  • 发包数
  • 连接数
  • 状态等信息

stat:

一些状态信息和连接信息,是前面一些信息的组合:

Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT  
Clients:  
 /192.168.147.102:56168[1](queued=0,recved=41,sent=41)  
 /192.168.144.102:34378[1](queued=0,recved=54,sent=54)  
 /192.168.162.16:43108[1](queued=0,recved=40,sent=40)  
 /192.168.144.107:39948[1](queued=0,recved=1421,sent=1421)  
 /192.168.162.16:43112[1](queued=0,recved=54,sent=54)  
 /192.168.162.16:43107[1](queued=0,recved=54,sent=54)  
 /192.168.162.16:43110[1](queued=0,recved=53,sent=53)  
 /192.168.144.98:34702[1](queued=0,recved=41,sent=41)  
 /192.168.144.98:34135[1](queued=0,recved=61,sent=65)  
 /192.168.162.16:43109[1](queued=0,recved=54,sent=54)  
 /192.168.147.102:56038[1](queued=0,recved=165313,sent=165314)  
 /192.168.147.102:56039[1](queued=0,recved=165526,sent=165527)  
 /192.168.147.101:44124[1](queued=0,recved=162811,sent=162812)  
 /192.168.147.102:39271[1](queued=0,recved=41,sent=41)  
 /192.168.144.107:45476[1](queued=0,recved=166422,sent=166423)  
 /192.168.144.103:45100[1](queued=0,recved=54,sent=54)  
 /192.168.162.16:43133[0](queued=0,recved=1,sent=0)  
 /192.168.144.107:39945[1](queued=0,recved=1825,sent=1825)  
 /192.168.144.107:39919[1](queued=0,recved=325,sent=325)  
 /192.168.144.106:47163[1](queued=0,recved=17891,sent=17891)  
 /192.168.144.107:45488[1](queued=0,recved=166554,sent=166555)  
 /172.17.36.11:32728[1](queued=0,recved=54,sent=54)  
 /192.168.162.16:43115[1](queued=0,recved=54,sent=54)  

Latency min/avg/max: 0/0/599  
Received: 224869  
Sent: 224817  
Connections: 23  
Outstanding: 0  
Zxid: 0x68000af707  
Mode: follower  
Node count: 101081

wchs:

有watch path的连接数 以及watch的path数 和 watcher数

13 connections watching 102 paths  
Total watches:172

wchc:

连接监听的所有path:(考虑吧cons命令 信息整合)

0x24b3673bb14001f  
    /hbase/root-region-server  
    /hbase/master  

wchp:

path被那些连接监听:(考虑把cons命令 信息整合)

/dubbo/FeedInterface/configurators  
    0x4b3673ce4a1a4d  
/dubbo/UserInterface/providers  
    0x14b36741ee41b17  
    0x4b3673ce4a1a4d  
    0x24b3673bb1401d2  
    0x4b3673ce4a1ab7

mntr

用于监控 zookeeper server 健康状态的各种指标:

$ echo mntr | nc 192.168.144.110 2181  

zk_version  3.4.6-1569965, built on 02/20/2014 09:09 GMT  
zk_avg_latency  0  
zk_max_latency  2155  
zk_min_latency  0  
zk_packets_received 64610660  
zk_packets_sent 64577070  
zk_num_alive_connections    42  
zk_outstanding_requests 0  
zk_server_state leader  
zk_znode_count  101125  
zk_watch_count  315  
zk_ephemerals_count 633  
zk_approximate_data_size    27753592  
zk_open_file_descriptor_count   72  
zk_max_file_descriptor_count    4096  
zk_followers    2  
zk_synced_followers 2  
zk_pending_syncs    0
参数描述:
  • 版本
  • 延时
  • 收包
  • 发包
  • 连接数
  • 未完成客户端请求数
  • leader/follower 状态
  • znode 数
  • watch 数
  • 临时节点数
  • 近似数据大小 应该是一个总和的值
  • 打开文件描述符 数
  • 最大文件描述符 数
  • fllower数
  • 等等

以上是基于3.4版本的zookeeper four letter words 能拿出的所有信息指标。

更新于 2018-01-02

查看zookeeper更多相关的文章或提一个关于zookeeper的问题,也可以与我们一起分享文章