IT运维流程库历史主题 · 只读
← 返回目录

nagios插件check_mysql_qps详说

来自:网络

[ /jastme/blog/287314#]?
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
#!/usr/bin/python
# -*- coding:utf-8 -*- from optparse import OptionParser import subprocess,sys from datetime import datetime """ nagios安装 Nagios plugin to report the mysql QPS by jastme """ try: f=open('/usr/local/nagios/etc/qps.txt') except IOError: f=open('/usr/local/nagios/etc/qps.txt','w') print 'wait next check,initialize the date' finally: f.close() try: f1=open('/usr/local/nagios/etc/time.txt') except IOError: f1=open('/usr/local/nagios/etc/time.txt','w') print 'wait next check,initialize the date' finally: f1.close() parser = OptionParser(usage="%prog -w <warning threshold> -c <critical threshold> [ -h ]\n\nBefore use the script,please execute 'grant usage on *.* to monitor@'127.0.0.1' identified by 'monitor';\nflush privileges",version="%prog ") 开源监控软件
parser.add_option("-w", "--warning",action="store", type="string", dest="warn_threshold", help="Warning threshold in percentage") parser.add_option("-c", "--critical",action="store", type="string", dest="crit_threshold", help="Critical threshold in percentage") (options, args) = parser.parse_args() def QPS(): '''mysql qps''' d=time_delay() fff=open('/usr/local/nagios/etc/qps.txt','r') qpsbefore=fff.read() fff.close() now=subprocess.Popen('''mysql -umonitor -pmonitor -h 127.0.0.1 -e "show global status like 'Questions'" | awk 'NR==2{print $2}' ''',shell=True,stdout=subprocess.PIPE) now.wait() qpsnow=now.communicate()[0][:-1] if qpsbefore=='': fffw=open('/usr/local/nagios/etc/qps.txt','w') nagios配置 fffw.write(qpsnow)
fffw.close() else: mysqlqps=(int(qpsnow)-int(qpsbefore))/int(d) fffw=open('/usr/local/nagios/etc/qps.txt','w') fffw.write(qpsnow) fffw.close() return mysqlqps def time_delay(): '''Compute the time difference''' time_now=datetime.now() ff=open('/usr/local/nagios/etc/time.txt','r') time_before_str=ff.read() ff.close() if time_before_str=='': ffw=open('/usr/local/nagios/etc/time.txt','w') ffw.write(str(time_now)) ffw.close() else: time_before=datetime.strptime(time_before_str,"%Y-%m-%d %H:%M:%S.%f") 监控软件 delay=(time_now-time_before).seconds
ffw=open('/usr/local/nagios/etc/time.txt','w') ffw.write(str(time_now)) ffw.close() return delay def jastme(): q=QPS() if not options.crit_threshold: print "UNKNOWN: Missing critical threshold value." sys.exit(3) if not options.warn_threshold: print "UNKNOWN: Missing warning threshold value." sys.exit(3) if q==None: print 'wait next check,initialize the date' sys.exit(3) elif int(q) >= int(options.crit_threshold): nagios实施 print 'Criticl,The QPS is %s | QPS=%stimes;%s;%s;0' %(q,q,options.warn_threshold,options.crit_threshold)
sys.exit(2) elif int(options.crit_threshold) > int(q) >= int(options.warn_threshold): print 'Warning,The QPS is %s | QPS=%stimes;%s;%s;0' %(q,q,options.warn_threshold,options.crit_threshold) sys.exit(1) else: print 'OK,The QPS is %s | QPS=%stimes;%s;%s;0' %(q,q,options.warn_threshold,options.crit_threshold) sys.exit(0) if __name__ == '__main__': nagios培训 jastme()
想做Nagios, Zabbix,Cacti,iTop各种交流的,可以进入开源监控工具Nagios交流 QQ群号 :476809427