nagios插件-查看redis的内存使用率

使用python写的一个nagios插件,主要实现的功能就是查看redis的内存使用率,写这个插件起初是因为公司服务器的redis一个端口的内存使用完了,导致公司网站访问出现异常,所以写了这个插件來检测redis的内存使用率。

使用方法见脚本:check_redis_mem

#!/usr/bin/envpython#encoding=utf8#需要给python安装redis插件,安装方法:#easy_installredisimportredisimportsysimportgetoptdefusage():print"""Usage:check_redis_mem[-h|--help][-H|--hostname][-P|--port][-w|--warning][-c|--critical]Options:--help|-h)printcheck_redis_memhelp.--host|-H)Setsconnecthost.--port|-P)Setsconnectport.--warning|-w)Setsawarninglevelforredismemuserd.Defaultis:on--critical|-c)Setsacriticallevelforredismemuserd.Defaultis:onExample:./check_redis_mem-H127.0.0.1-P6379-w80-c90or./check_redis_mem-H127.0.0.1-P6379Thisshouldoutput:memisokandused10.50%"""sys.exit(3)try:options,args=getopt.getopt(sys.argv[1:],"hH:P:w:c:",["help","host=","port=","warning=","critical="])exceptgetopt.GetoptErrorase:usage()warning=75critical=85host=''port=0forname,valueinoptions:ifnamein("-h","--help"):usage()ifnamein("-H","--host"):host=valueifnamein("-P","--port"):port=int(value)ifnamein("-w","--warning"):warning=valueifnamein("-c","--critical"):critical=valueifhost==''orport==0:usage()try:r=redis.Redis(host=host,port=port)ifr.ping()==True:maxmem=r.config_get(pattern='maxmemory').get('maxmemory')usedmem=r.info().get('used_memory')temp=float(usedmem)/float(maxmem)tmp=temp*100iftmp>=warningandtmp<critical:print"memisused%.2f%%"%(tmp)sys.exit(1)eliftmp>=critical:print"memisused%.2f%%"%(tmp)sys.exit(2)else:print"It'sokandmemisused%.2f%%"%(tmp)sys.exit(0)else:print"can'tconnect."sys.exit(2)exceptExceptionase:printe.messageusage()