無聊的時(shí)候,寫的一個(gè)小監(jiān)控腳本,適用于nagios
目前腳本可以監(jiān)控 redis內(nèi)存使用率,fork時(shí)間
專注于為中小企業(yè)提供
成都網(wǎng)站建設(shè)、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)
羅莊免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
腳本使用方法:
監(jiān)控內(nèi)存使用率
./check_redis.py -H 192.168.1.100 -p 6379 -C memuse -w 80 -c 90
監(jiān)控上次fork消耗時(shí)間(通常redis在進(jìn)行fork時(shí),redis服務(wù)的響應(yīng)會(huì)有影響)
./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()
網(wǎng)頁名稱:使用python監(jiān)控redis-創(chuàng)新互聯(lián)
標(biāo)題來源:
http://weahome.cn/article/shecj.html