设为首页 收藏本站
查看: 1300|回复: 0

[经验分享] nagios --redis 监控脚本

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2018-11-7 11:14:08 | 显示全部楼层 |阅读模式
  目前脚本可以监控 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 &quot;Warning!;mem_used:%.2f%%|mem_used:%.2f%%&quot; % (result,result)
  •         sys.exit(1)
  •     elif result > critical:
  •         print &quot;Critical!;mem_used:%.2f%%|mem_used:%.2f%%&quot; % (result,result)
  •         sys.exit(2)
  •     else:
  •         print &quot;OK!;mem_used:%.2f%%|mem_used:%.2f%%&quot; % (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 &quot;Warning!;latest_fork:%.2f%%|latest_fork:%.2f%%&quot; % (result,result)
  •         sys.exit(1)
  •     elif result > critical:
  •         print &quot;Critical!;latest_fork:%.2f%%|latest_fork:%.2f%%&quot; % (result,result)
  •         sys.exit(2)
  •     else:
  •         print &quot;OK!;latest_fork:%.2f%%|latest_fork:%.2f%%&quot; % (result,result)
  •         sys.exit(0)


  • if &quot;__main__&quot; == __name__:
  •     try:
  •         opts,args = getopt.getopt(sys.argv[1:],&quot;h:H:p:C:w:c:&quot;)
  •         for opt,arg in opts:
  •             if opt in (&quot;-h&quot;,&quot;--help&quot;):
  •                 usage()
  •             if opt in (&quot;-H&quot;,&quot;--host&quot;):
  •                 host = arg
  •             if opt in (&quot;-p&quot;,&quot;--port&quot;):
  •                 port = int(arg)
  •             if opt in (&quot;-C&quot;,&quot;--command&quot;):
  •                 cmd = arg
  •             if opt in (&quot;-w&quot;,&quot;--warning&quot;):
  •                 warning = float(arg)
  •             if opt in (&quot;-c&quot;,&quot;--critical&quot;):
  •                critical = float(arg)
  •     except:
  •         print &quot;please check the host or opts&quot;
  •         usage()
  •         sys.exit(3)

  • #   print opts
  • #   print args
  • #        print &quot;host is %s ,port is %s,cmd is %s,warning is %s,critical is %s&quot; % (host,port,cmd,warning,critical)
  •     try:
  •         r = redis.Redis(hosthost=host,portport=port)
  •         r.ping()
  •     except:
  •         print &quot;redis can not connected or command is error&quot;
  •         usage()
  •         sys.exit(3)
  •     if cmd == &quot;memuse&quot;:
  •         memused()
  •     if cmd == &quot;fork&quot;:
  •         redis_fork()
  




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-631897-1-1.html 上篇帖子: Redis 和 Memcached集群-Twemproxy 下篇帖子: 通过Redis的Pub/Sub实现对服务器群的监控管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表