环境:zabbix3.0.4、python2.6.6(系统自带)、centos6.7、zookeeper3.4.6

参考:https://github.com/zhujinhe/zookeeper-zabbix-template

相关:http://zookeeper.apache.org/doc/r3.4.6/zookeeperJMX.html


1.zabbix服务端配置,编辑zabbix_server配置文件,添加一行自定义脚本路径:(默认在zabbix安装目录的 share/zabbix/externalscripts/)

zabbix3]# vim /data/server/zabbix3/etc/zabbix_server.conf
ExternalScripts=/data/server/zabbix3/etc/zabbix_server.conf.d

zabbix监控zookeeper_第1张图片


2.将脚本getZookeeperInfo.py放在自定义的外部脚本目录目录下,注意一定要配置好脚本执行权限:

脚本链接: http://down.51cto.com/data/2334239

zabbix_agentd.conf.d]# chmod +x getZookeeperInfo.py
zabbix_server.conf.d]# mv getZookeeperInfo.py /data/server/zabbix3/etc/zabbix_server.conf.d


3.重启zabbix_server,导入模版,在web页面上的被监控主机添加模版

导入模版:(模版下载:http://down.51cto.com/data/2334239)

wKioL1mmsCWTk0raAAA5sbBUVc4219.png


添加模版:

zabbix监控zookeeper_第2张图片


4.稍后便可在最新数据中看到数据了:

zabbix监控zookeeper_第3张图片


5.手动执行查看信息:

使用方法:

Usage:
    getZookeeperInfo.py -h 127.0.0.1 -p 2181 -c  -k "
    getZookeeperInfo.py --host 127.0.0.1 --port 2181 --zkCommand  --zkKey 
    
zkCommand:mntr, zkKey:['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', 'zk_znode_count', 'zk_watch_count', 'zk_ephemerals_count', 'zk_approximate_data_size', 'zk_open_file_descriptor_count', 'zk_max_file_descriptor_count', 'zk_followers', 'zk_synced_followers', 'zk_pending_syncs']
zkCommand:ruok, zkKey:['state']
zkCommand:conf, zkKey:['clientPort', 'dataDir', 'dataLogDir', 'tickTime', 'maxClientCnxns', 'minSessionTimeout', 'maxSessionTimeout', 'serverId', 'initLimit', 'syncLimit', 'electionAlg', 'electionPort', 'quorumPort', 'peerType']


可选项--mntr/ruok/conf

可选项--如上后面的


例子:

python getZookeeperInfo.py --host 127.0.0.1 --port 2181 --zkCommand mntr --zkKey zk_synced_followers

wKioL1mmtKSD6DG1AAAQUx_ffuw950.png


5.注意

zk_followers、zk_synced_followers、zk_pending_syncs三个选项是leader上才能监控到,flower上没有;

被监控端要对zabbix_server开放zookeeper端口;


6.备注:

--zookeeper监控指标:

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=
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


ruok:
查看server是否正常
imok=正常


srst:
重置server状态


srvr:
Zookeeper version:版本
Latency min/avg/max: 延时
Received: 收包
Sent: 发包
Connections: 连接数
Outstanding: 堆积数
Zxid: 操作id
Mode: leader/follower
Node count: 节点数

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:
connectsions=连接数
watch-paths=watch节点数
watchers=watcher数量


wchc:
session id 对应 path

wchp:
path 对应 session id

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=最大文件描述符数量
zk_followers=follower数量
zk_synced_followers=同步的follower数量
zk_pending_syncs=准备同步数


7.以上是zabbix_server端执行命令来获取被监控端信息,需要开放端口,若想执行脚本在agent可参考:

http://yujianglei.blog.51cto.com/7215578/1773998


脚本和模版下载地址:http://down.51cto.com/data/2334239