目前脚本可以监控 redis内存使用率,fork时间

脚本使用方法:

监控内存使用率

./check_redis.py -H 192.168.1.100 -p 6379 -C memuse -w 80 -c 90

监控上次fork消耗时间(通常redis在进行fork时,redis服务的响应会有影响)

./check_redis.py -H 192.168.1.100 -p 6379 -C fork -w 3 -c 5

cat check_redis.py

#!/bin/envpython#-*-encoding=utf8-*-__author__='songtao'importredisimportsysimportgetoptdefusage():print"""-H127.0.0.1-p6379-C[memuse|fork]-w50-c80./check_redis.py-H127.0.0.1-p6379-Cmemuse-c80-w90"""sys.exit(3)#defconn_redis(host,port):#r=redis.Redis(hosthost=host,portport=port)#ifr.ping():#r=redis.Redis(hosthost=host,portport=port)#returnr#else:#print"cannotconnect!!"#sys.exit(0)#r=redis.Redis(hosthost=host,portport=port)warning=80critical=90defmemused():maxmem=r.config_get()['maxmemory']usedmem=r.info()['used_memory']result=float(usedmem)/float(maxmem)*100ifresult>=warningandresult<critical:print"Warning!;mem_used:%.2f%%|mem_used:%.2f%%"%(result,result)sys.exit(1)elifresult>critical:print"Critical!;mem_used:%.2f%%|mem_used:%.2f%%"%(result,result)sys.exit(2)else:print"OK!;mem_used:%.2f%%|mem_used:%.2f%%"%(result,result)sys.exit(0)defredis_fork():fork_used=r.info()['latest_fork_usec']/1000result=float(fork_used)/1000ifresult>=warningandresult<critical:print"Warning!;latest_fork:%.2f%%|latest_fork:%.2f%%"%(result,result)sys.exit(1)elifresult>critical:print"Critical!;latest_fork:%.2f%%|latest_fork:%.2f%%"%(result,result)sys.exit(2)else:print"OK!;latest_fork:%.2f%%|latest_fork:%.2f%%"%(result,result)sys.exit(0)if"__main__"==__name__:try:opts,args=getopt.getopt(sys.argv[1:],"h:H:p:C:w:c:")foropt,arginopts:ifoptin("-h","--help"):usage()ifoptin("-H","--host"):host=argifoptin("-p","--port"):port=int(arg)ifoptin("-C","--command"):cmd=argifoptin("-w","--warning"):warning=float(arg)ifoptin("-c","--critical"):critical=float(arg)except:print"pleasecheckthehostoropts"usage()sys.exit(3)#printopts#printargs#print"hostis%s,portis%s,cmdis%s,warningis%s,criticalis%s"%(host,port,cmd,warning,critical)try:r=redis.Redis(hosthost=host,portport=port)r.ping()except:print"rediscannotconnectedorcommandiserror"usage()sys.exit(3)ifcmd=="memuse":memused()ifcmd=="fork":redis_fork()