无聊的时候,写的一个小监控脚本,适用于nagios
目前脚本可以监控 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/env python
- #-*-encoding=utf8-*-
- __author__ = 'songtao'
- import redis
- import sys
- import getopt
- def usage():
- print """
- -H 127.0.0.1
- -p 6379
- -C [memuse|fork]
- -w 50
- -c 80
- ./check_redis.py -H 127.0.0.1 -p 6379 -C memuse -c 80 -w 90
- """
- sys.exit(3)
- #def conn_redis(host,port):
- # r = redis.Redis(hosthost=host,portport=port)
- # if r.ping():
- # r = redis.Redis(hosthost=host,portport=port)
- # return r
- # else:
- # print "can not connect!!"
- # sys.exit(0)
- #r = redis.Redis(hosthost=host,portport=port)
- warning = 80
- critical = 90
- def memused():
- maxmem = r.config_get()['maxmemory']
- usedmem = r.info()['used_memory']
- result = float(usedmem) / float(maxmem) * 100
- if result >=warning and result < critical:
- print "Warning!;mem_used:%.2f%%|mem_used:%.2f%%" % (result,result)
- sys.exit(1)
- elif result > 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)
- def redis_fork():
- fork_used = r.info()['latest_fork_usec'] / 1000
- result = float(fork_used) / 1000
- if result >=warning and result < critical:
- print "Warning!;latest_fork:%.2f%%|latest_fork:%.2f%%" % (result,result)
- sys.exit(1)
- elif result > 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:")
- for opt,arg in opts:
- if opt in ("-h","--help"):
- usage()
- if opt in ("-H","--host"):
- host = arg
- if opt in ("-p","--port"):
- port = int(arg)
- if opt in ("-C","--command"):
- cmd = arg
- if opt in ("-w","--warning"):
- warning = float(arg)
- if opt in ("-c","--critical"):
- critical = float(arg)
- except:
- print "please check the host or opts"
- usage()
- sys.exit(3)
- # print opts
- # print args
- # print "host is %s ,port is %s,cmd is %s,warning is %s,critical is %s" % (host,port,cmd,warning,critical)
- try:
- r = redis.Redis(hosthost=host,portport=port)
- r.ping()
- except:
- print "redis can not connected or command is error"
- usage()
- sys.exit(3)
- if cmd == "memuse":
- memused()
- if cmd == "fork":
- redis_fork()
名称栏目:使用python监控redis-创新互联
文章起源:
http://shouzuofang.com/article/shecj.html