×

微信扫一扫,快捷登录!

nagios插件check_mysql_qps详说

标签: 暂无标签
来自:网络



[  /jastme/blog/287314#]?[/url]
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




上一篇:在Linux下,Nagios的安装与配置如何进行
下一篇:搭建nagios监控全平台
monicazhang

写了 2297 篇文章,拥有财富 12859,被 21 人关注

您需要登录后才可以回帖 登录 | 立即注册
B Color Link Quote Code Smilies

成为第一个吐槽的人

Powered by IT 运维管理
返回顶部