非原创内容,转自眄眄的闺蜜
首先最简单的是监听服务端口,在zabbix界面直接添加监控项 item: zookeeper.status key: net.tcp.listen[2181] ZooKeeper监控要点:
内存使用量 ZooKeeper应当完全运行在内存中,不能使用到SWAP。JavaHeap大小不能超过可用内存。
Swap使用量 使用Swap会降低ZooKeeper的性能,设置vm.swappiness = 0
网络带宽占用 如果发现ZooKeeper性能降低关注下网络带宽占用情况和丢包情况,通常情况下ZooKeeper是20%写入80%读入
磁盘使用量 ZooKeeper数据目录使用情况需要注意
磁盘I/O ZooKeeper的磁盘写入是异步的,所以不会存在很大的I/O请求,如果ZooKeeper和其他I/O密集型服务公用应该关注下磁盘I/O情况
zk_avg/min/max_latency 响应一个客户端请求的时间,建议这个时间大于10个Tick就报警
zk_outstanding_requests 排队请求的数量,当ZooKeeper超过了它的处理能力时,这个值会增大,建议设置报警阀值为10
zk_packets_received 接收到客户端请求的包数量
zk_packets_sent 发送给客户单的包数量,主要是响应和通知
zk_max_file_descriptor_count 最大允许打开的文件数,由ulimit控制
zk_open_file_descriptor_count 打开文件数量,当这个值大于允许值得85%时报警
Mode 运行的角色,如果没有加入集群就是standalone,加入集群式follower或者leader
zk_followersleader角色才会有这个输出,集合中follower的个数。正常的值应该是集合成员的数量减1
zk_pending_syncs leader角色才会有这个输出,pending syncs的数量
zk_znode_countznodes的数量
zk_watch_countwatches的数量
Java Heap SizeZooKeeper Java进程的 在服务器端我们可以通过命令查看这些项目: [root@localhost ~]#echo ruok|nc 127.0.0.1 2181 imok [root@localhost ~]#echo mntr|nc 127.0.0.1 2181 zk_version 3.4.6-1569965, built on 02/20/ 09:09 GMT zk_avg_latency 0 zk_max_latency 1364 zk_min_latency 0 zk_packets_received 184218311 zk_packets_sent 184995960 zk_num_alive_connections 33 zk_outstanding_requests 0 zk_server_state leader zk_znode_count 821128 zk_watch_count 2346 zk_ephemerals_count 47 zk_approximate_data_size 62155934 zk_open_file_descriptor_count 62 zk_max_file_descriptor_count 4096 zk_followers 2 zk_synced_followers 2 zk_pending_syncs 0 [root@localhost ~]# echo srvr|nc 127.0.0.1 2181 Zookeeper version: 3.4.6-1569965, built on 02/20/ 09:09 GMT Latency min/avg/max: 0/0/1364 Received: 184218603 Sent: 184996253 Connections: 33 Outstanding: 0 Zxid: 0x40d1a259a Mode: leader Node count: 821136 接下来就是写一个监控脚本来输出这些参数的具体情况: cd /usr/local/zabbxi/share/script/ vi zookeeper_check1.sh #!/bin/bash echo mntr | nc 127.0.0.1 2181 | grep "$1" |awk '{print $2}' vi zookeeper_check2.sh #!/bin/bash echo srvr|nc 127.0.0.1 2181 | grep "$1" |awk '{print $2}' zabbix-f里面加入key: vi /usr/local/zabbix/etc/zabbix_agentd.conf UserParameter=zookeeper1[*],/bin/sh /usr/local/zabbix/share/script/zookeeper_check1.sh $1 UserParameter=zookeeper2[*],/bin/sh /usr/local/zabbix/share/script/zookeeper_check2.sh $1 重启zabbix客户端 然后在zabbix界面添加监控项 ------------------------------------------------------------------------------------------------ ztwl配置实例:
#!/bin/bashzk=`echo ruok|nc 127.0.0.1 2181`if [[ "$zk" == "imok" ]] ; thenecho 1elseecho 0fi
UserParameter=zookeeper.status,/bin/sh /etc/zabbix/zookeeper_check.sh