ZABBIX开发Zookeeper中间件服务性能监控

脚本内容:

#!/bin/sh

###################################################
# Used to obtain Zookeeper middleware service performance information
# script by shell
# writed by Deliver
# huchangxi 2022/11/15
###################################################
# 脚本运行超时处理
source /usr/local/zabbix-agent/etc/scripts/zabbixtimeout.sh
##########################################################################

#获取Zookeeper中间件性能信息,再根据选项获取相应值
zk_port=$1
zk_mntr=$2

case $zk_mntr in

#版本
zk_version)
version=`(echo mntr;sleep 2) |telnet localhost $zk_port 2>/dev/null | grep zk_version |grep awk '{print $2}'`
if [ -n "version" ];then
echo $version
else
echo NO
fi
;;

#平均延时
zk_avg_latency)
avg_latency=`(echo mntr;sleep 2) |telnet localhost $zk_port 2>/dev/null | grep zk_avg_latency |grep awk '{print $2}'`
if [ -n "avg_latency" ];then
echo $avg_latency
else
echo 0
fi
;;

#最大延时
zk_max_latency)
max_latency=`(echo mntr;sleep 2) |telnet localhost $zk_port 2>/dev/null | grep zk_max_latency |grep awk '{print $2}'`
if [ -n "max_latency" ];then
echo $max_latency
else
echo 0
fi
;;

#最小延时
zk_min_latency)
min_latency=`(echo mntr;sleep 2) |telnet localhost $zk_port 2>/dev/null | grep zk_min_latency |grep awk '{print $2}'`
if [ -n "min_latency" ];then
echo $min_latency
else
echo 0
fi
;;

#收包数
zk_packets_received)
packets_received=`(echo mntr;sleep 2) |telnet localhost $zk_port 2>/dev/null | grep zk_packets_received |grep awk '{print $2}'`
if [ -n "packets_received" ];then
echo $packets_received
else
echo 0
fi
;;

#发包数
zk_packets_sent)
packets_sent=`(echo mntr;sleep 2) |telnet localhost $zk_port 2>/dev/null | grep zk_packets_sent |grep awk '{print $2}'`
if [ -n "packets_sent" ];then
echo $packets_sent
else
echo 0
fi
;;

#连接数
zk_num_alive_connections)
num_alive_connections=`(echo mntr;sleep 2) |telnet localhost $zk_port 2>/dev/null | grep zk_num_alive_connections |grep awk '{print $2}'`
if [ -n "num_alive_connections" ];then
echo $num_alive_connections
else
echo 0
fi
;;

#堆积请求数
zk_outstanding_requests)
outstanding_requests=`(echo mntr;sleep 2) |telnet localhost $zk_port 2>/dev/null | grep zk_outstanding_requests |grep awk '{print $2}'`
if [ -n "outstanding_requests" ];then
echo $outstanding_requests
else
echo 0
fi
;;

#节点状态
zk_server_state)
server_state=`(echo mntr;sleep 2) |telnet localhost $zk_port 2>/dev/null | grep zk_server_state |grep awk '{print $2}'`
if [ -n "server_state" ];then
echo $server_state
else
echo NO
fi
;;

#znode数量
zk_znode_count)
znode_count=`(echo mntr;sleep 2) |telnet localhost $zk_port 2>/dev/null | grep zk_znode_count |grep awk '{print $2}'`
if [ -n "znode_count" ];then
echo $znode_count
else
echo 0
fi
;;

#watch数量
zk_watch_count)
watch_count=`(echo mntr;sleep 2) |telnet localhost $zk_port 2>/dev/null | grep zk_watch_count |grep awk '{print $2}'`
if [ -n "watch_count" ];then
echo $watch_count
else
echo 0
fi
;;

#临时节点(znode)
zk_ephemerals_count)
ephemerals_count=`(echo mntr;sleep 2) |telnet localhost $zk_port 2>/dev/null | zk_ephemerals_count |grep awk '{print $2}'`
if [ -n "ephemerals_count" ];then
echo $ephemerals_count
else
echo 0
fi
;;

#数据大小
zk_approximate_data_size)
approximate_data_size=`(echo mntr;sleep 2) |telnet localhost $zk_port 2>/dev/null | zk_approximate_data_size |grep awk '{print $2}'`
if [ -n "approximate_data_size" ];then
echo $approximate_data_size
else
echo 0
fi
;;

#打开的文件描述符数量
zk_open_file_descriptor_count)
open_file_descriptor_count=`(echo mntr;sleep 2) |telnet localhost $zk_port 2>/dev/null | zk_open_file_descriptor_count |grep awk '{print $2}'`
if [ -n "open_file_descriptor_count" ];then
echo $open_file_descriptor_count
else
echo 0
fi
;;

#最大文件描述符数量
zk_max_file_descriptor_count)
max_file_descriptor_count=`(echo mntr;sleep 2) |telnet localhost $zk_port 2>/dev/null | zk_max_file_descriptor_count |grep awk '{print $2}'`
if [ -n "max_file_descriptor_count" ];then
echo $max_file_descriptor_count
else
echo 0
fi
;;

#通配规则
*)
echo -e "\e[033mUsage: $0 {zk_port|zk_mntr} \e[0m"

esac

posted @ 2022-11-19 00:26  呼长喜  阅读(185)  评论(0编辑  收藏  举报