|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!公司有几个办事器开着多个memcached历程,除要监控他们是不是一般telnet通,实例是不是存在外还要监控他们的缓存射中率。针对他们的缓存射中率举行报警。
网上有个perl写的,必要编译装置。有个python写的,贴过去运转下,发明python库版本不合错误。这么复杂的剧本弄得这么费力,利市动写了个。
越写就越以为shell处置数据,函数,字符串数组这方面太弱势了。
还好,对付用吧。这个剧本对照复杂,经由过程check_tcp剧本猎取memcached的stats信息。然后将该信息格局化成一个字符串,然后将get_hits比上cmd_gets就可以失掉缓存射中率。基本道理对照复杂。可是还要完成nagios的报警格局,和功能数据的输入,撑持pnp画图。
为了伸手党们便利些,将之前的函数间接按需拔出到该剧本中,应当是复制粘贴运转就行。
假如有bug请反应!- #!/bin/bash################################反省memcached的射中率#加载nagios自带utils.sh###############################source/usr/local/nagios/libexec/utils.shprint_usage(){echo"check_memcached-HIP-Pport-wwarning-ccritical"}####################猎取下令行实行参数###################whiletest-n"$1";docase"$1"in-H)host=$2shift;;-P)port=$2shift;;-w)warning=$2shift;;-c)critical=$2shift;;*)echo"Unknownargument:$1"print_usageexit$STATE_UNKNOWN;;esacshiftdone#########################functiondiv_f()#反省参数,前往两个数字比########################functiondiv_f(){ref=`awk-vnum_a=$1-vnum_b=$2BEGIN{printf"%0.2f
- ",num_a/num_b}`;echo$ref;}###################失掉射中率函数##################functiongetMemcachedHits(){memcachedinfo=`/usr/local/nagios/libexec/check_tcp-H$host-p$port-E-sstats
- quit
- -euptime|tr"""@"`get_hits=`echo$memcachedinfo|grep-o"@STATget_hits[0-9]*"|awk{print$4}`cmd_get=`echo$memcachedinfo|grep-o"@STATcmd_get[0-9]*"|awk{print$4}`div_f$get_hits$cmd_get;}hits=`getMemcachedHits$host$port`;###################失掉射中率地点区间##################functionre_rang(){rang=$hits;interval_a=$critical;interval_b=$warninglif[[$rang<$interval_a]];thenecho"0";elif[[$rang<$interval_b]];thenecho"1";elif[[$rang>$interval_b]]||[[$rang==$interval_b]];thenecho"2";elsereturn;fi}res=`re_rang$critical$warning$hits`;case"$res"in0)echo"Criticalmemcached_hits=$hits|memcached_hits=$hits;$warning;$critical;"exit$STATE_CRITICAL;;1)echo"Warningmemcached_hits=$hits|memcached_hits=$hits;$warning;$critical;"exit$STATE_WARNING;;2)echo"Okmemcached_hits=$hits|memcached_hits=$hits;$warning;$critical;"exit$STATE_OK;;*)echo"Unkown"exit$STATE_UNKNOWN;;esac
复制代码
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们! |
|