在 http://exchange.nagios.org/ 上有shell 写的脚本,nagios可以监控到命中率,他是基于 telnet 的,使用之后看到 进程里有个telnet 进程,很不爽,而且脚本休要修改一下,不然会报错,不知道大家是不是同样的问题,而我,想要的是监控命中率,还有内存使用率以及,当前连接数·所以只能自己动手来写个脚本了·在python的官网上看到有 python-memcache包,就下来看了一下源码,使用还是很方便的·。
shell $> cat check_memcache.py
#!/usr/bin/python import memcache import getopt import sys def usage(): print """check_memcache is a Nagios to monitor memcached memory Plugin Usage: check_memcache [-h|--help][-w|warning][-c|critical] Options: --help|-h) print check_memcache help --warning|-w) Sets a warning level for memcache use memory.Default is ff --critical|-c) Sets a critical level for memcache use memory.Default is:off. """ sys.exit(0) try: options,args = getopt.getopt(sys.argv[1:],"hw:c:",["help","warning=","critical="]) except getopt.GetoptError: usage() sys.exit(3) for name,value in options: if name in ("-h","--hlep"): usage() if name in ("-w","--warning"): warning = int(value) if name in ("-c","--critical"): critical = int(value) try: mc = memcache.Client(['127.0.0.1:11211'], debug=0) conn = mc.get_stats() memstat = conn[0][1] except: print 'please check your memcached host and port' sys.exit(3) #for key in a: # print '%s : %s' % (key,a[key]) tobal = float(memstat['limit_maxbytes']) memory = float(memstat['bytes']) free = (tobal - memory)/1024 free = '%d%s' % (free,'kb') connection = memstat['accepting_conns'] memory = memory * 1024 if memory < 0.01: memory = 0.01 else: memory = int(memory) get_miss = float(memstat['get_misses']) get_hits = float(memstat['get_hits']) if get_miss == 0 and get_hits == 0: hitrate = 100 else: hitrate = get_hits/(get_hits + get_miss)*100 hitrate = '%d%s' % (hitrate,'%') output = 'use:%skb,free:%s,hitrate:%s,connection:%s' % (memory,free,hitrate,connection) perfdata = "'use'=%skb 'free'=%s 'hitrate'=%s 'connection'=%s" % (memory,free,hitrate,connection) if 'warning' in dir() and 'critical' in dir(): if memory >= warning: print 'WARNING - %s|%s' % (output,perfdata) sys.exit(1) elif memory >=critical: print 'CRITICAL - %s|%s' % (output,perfdata) sys.exit(2) else: print 'OK - %s|%s' % (output,perfdata) sys.exit(0) else: print 'OK - %s|%s' % (output,perfdata) sys.exit(0)
安装步骤:
1.
shell $> wget http://www.nginxs.com/download/check_memcache
2.测试 ./check_memcache
3.修改客户端 nrpe
shell $> vim /etc/nagios/nrpe.cfg
command[check_memcache]=/usr/lib/nagios/plugins/check_memcache -w $ARG1$ -c $ARG2$
4.服务端添加监控服务
define service{
use local-service
host_name eric_1,eric_2,eric_3
service_description memcached_memory
check_command check_nrpe!check_memcache!4000!5000
}