monicazhang 发表于 2016-3-23 10:00:02

nagios插件check_mysql_qps详说

来自:网络


?

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()[:-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
页: [1]
查看完整版本: nagios插件check_mysql_qps详说