Zookeeper 监控原型开发

本文介绍了如何通过4 letter words命令开发Zookeeper监控原型,避免了修改Zookeeper服务器启动脚本以支持JMX的方式。设计中利用socket发送命令,接收并解析数据,提取出监控指标。已经完成了一个简单的Demo,提供了命令行和API两种使用方式,存储了13个监控指标。
摘要由CSDN通过智能技术生成

背景

最近正在想法做一个zookeeper监控的方案,首选第一步就是如何拿到可用于监控zookeeper的监控指标。目前从zookeeper的documentation上面了解到:The ZooKeeper service can be monitored in one of two primary ways; 1) the command port through the use of 4 letter words and 2) JMX. See the appropriate section for your environment/requirements.目前从上面的文档中得到的信息来看主要有两种方式,一种是哦那个过4 letter words的zookeeper commands的方式实现监控(又称为获取监控zookeeper的指标);另外一种则是通过JMX的接口实现监控。但是后一种JMX的方式需要修改所监控server的启动脚本zkServer.sh 的启动内容,让zookeeper原本支持本地JMX变为支持远程JMX连接,这样我们才可以通过JMX Client拿到相应的监控指标,而第一种监控方式似乎不需要做出这样的修改。所以最终我采用第一种方式实现zookeeper的监控原型。

设计

这里我采用socket的方式:
- 向指定ip和port 发送4 letter words commands
- 接收返回的数据信息
- 将返回的数据信息解析与划分(源数据信息是一堆信息)
- 将解析划分的带有一定格式的处理后的数据返回(这就是我们要的监控指标了)

监控指标

下面我们来梳理一下返回了哪些监控指标:

conf:
clientPort:客户端端口号 
dataDir:数据文件目录
dataLogDir:日志文件目录  
tickTime:间隔单位时间
maxClientCnxns:最大连接数  
minSessionTimeout:最小session超时
maxSessionTimeout:最大session超时  
serverId:id  
initLimit:初始化时间  
syncLimit:心跳时间间隔  
electionAlg:选举算法 默认3  
electionPort:选举端口  
quorumPort:法人端口  
peerType:未确认

cons:
ip=ip
port=端口
queued=所在队列
received=收包数
sent=发包数
sid=session id
lop=最后操作
est=连接时间戳
to=超时时间
lcxid=最后id(未确认具体id)
lzxid=最后id(状态变更id)
lresp=最后响应时间戳
llat=最后/最新 延时
minlat=最小延时
maxlat=最大延时
avglat=平均延时


crst:
重置所有连接


dump:
session id : znode path  (1对多   ,  处于队列中排队的session和临时节点)


envi:
zookeeper.version=版本
host.name=host信息
java.version=java版本
java.vendor=供应商
java.home=jdk目录
java.class.path=classpath
java.library.path=lib path
java.io.tmpdir=temp目录
java.compiler=
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值