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

nagios监控mysql tps---check_mysql_tps.py*

来自:网络

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

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

#!/usr/bin/python2.7 nagios安装

# -*- coding:utf-8 -*-

from __future__ import division

from optparse import OptionParser

import commands,sys,jastme,re

from datetime import datetime

"""

Nagios plugin to report the mysql TPS 开源监控软件

author jastme

"""

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")

nagios配置

(options, args) = parser.parse_args()

try:

f=open('/tmp/Com_commit.txt')

except IOError:

f=open('/tmp/Com_commit.txt','w')

print 'wait next check,initialize the date time.txt'

finally:

f.close()

try:

f=open('/tmp/Com_rollback.txt')

except IOError:

f=open('/tmp/Com_rollback.txt','w')

print 'wait next check,initialize the date time.txt' 监控软件

finally:

f.close()

try:

f=open('/tmp/tpstime.txt')

except IOError:

f=open('/tmp/tpstime.txt','w')

print 'wait next check,initialize the date time.txt'

finally:

f.close()

class Monitor:

def __init__(self,username,password,hostname,port):

""" you can call sam var here """

self.username = username

self.password = password nagios实施

self.port = port

self.hostname = hostname

def __Com_commit(self):

now=commands.getoutput(''' mysql -u%s -p%s -h%s -P%s -e "show global status like 'Com_commit'" | grep -Po "\d+" ''' %(self.username,self.password,self.hostname,self.port))

now=re.findall(r'\d+',now)[0]

f=open('/tmp/Com_commit.txt','r')

before=f.readlines()

f.close()

if before == []:

ff=open('/tmp/Com_commit.txt','w')

ff.write(now)

ff.close()

else:

before=before[-1]

N = int(now)-int(before)

ff=open('/tmp/Com_commit.txt','w')

ff.write(now)

ff.close()

return N

def __Com_rollback(self):

now=commands.getoutput(''' mysql -u%s -p%s -h%s -P%s -e "show global status like 'Com_rollback'" | grep -Po "\d+" ''' %(self.username,self.password,self.hostname,self.port))

now=re.findall(r'\d+',now)[0] nagios培训

f=open('/tmp/Com_rollback.txt','r')

before=f.readlines()

f.close()

if before == []:

ff=open('/tmp/Com_rollback.txt','w')

ff.write(now)

ff.close()

else:

before=before[-1]

ff=open('/tmp/Com_rollback.txt','w')

ff.write(now)

ff.close()

N = int(now)-int(before)

return N

def __Uptime(self):

time_now=datetime.now()

ff=open('/tmp/tpstime.txt','r')

time_before_str=ff.read()

ff.close()

if time_before_str=='':

ffw=open('/tmp/tpstime.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('/tmp/tpstime.txt','w')

ffw.write(str(time_now))

ffw.close()

return delay

def doit(self):

_Com_commit = int(self.__Com_commit())

_Com_rollback = int(self.__Com_rollback())

_Uptime = int(self.__Uptime())

R = ( _Com_rollback + _Com_commit) / _Uptime

print "TPS is %.1f | TPS=%.1f" %(R,R)

if __name__ == "__main__":

username = "monitor"

password = str(jastme.decrypt(119,u'NALBOBJBCBHAGBOA'))

hostname = "127.0.0.1"

port = "3369"

Monitor(username,password,hostname,port).doit()


想做Nagios, Zabbix,Cacti,iTop各种交流的,可以进入开源监控工具Nagios交流 QQ群号 :476809427