Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Delta Between Two Patch Sets: modules/nagios/files/check_bandwidth

Issue 9349198: Properly return WARNING and CRITICAL in check_bandwidth (Closed)
Left Patch Set: Created Feb. 19, 2013, 2:08 p.m.
Right Patch Set: Fixed usage Created Feb. 19, 2013, 2:14 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « no previous file | no next file » | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 2
3 import re, subprocess, sys 3 import os, re, subprocess, sys
4 4
5 def extract_data(type, vnstat_output): 5 def extract_data(type, vnstat_output):
6 match = re.search(r"%s\s*([\d\.]*) (.bit/s)" % type, vnstat_output) 6 match = re.search(r"%s\s*([\d\.]*) (.bit/s)" % type, vnstat_output)
7 if not match: 7 if not match:
8 print "Unable to extract values from '%s'" % vnstat_output 8 print "Unable to extract values from '%s'" % vnstat_output
9 sys.exit(1) 9 sys.exit(1)
10 10
11 value = float(match.group(1)) 11 value = float(match.group(1))
12 unit = match.group(2) 12 unit = match.group(2)
13 return (value, unit) 13 return (value, unit)
14 14
15 def calculate_bits(value, unit): 15 def calculate_bits(value, unit):
16 if unit == "Mbit/s": 16 if unit == "Mbit/s":
17 value *= 1000000 17 value *= 1000000
18 elif unit == "kbit/s": 18 elif unit == "kbit/s":
19 value *= 1000 19 value *= 1000
20 return int(value) 20 return int(value)
21 21
22 if __name__ == "__main__": 22 if __name__ == "__main__":
23 if len(sys.argv) != 3: 23 if len(sys.argv) != 3:
24 print "Usage: `basename $0` WARN CRIT" 24 script_name = os.path.basename(sys.argv[0])
25 print "Usage: %s WARN CRIT" % script_name
25 sys.exit(0) 26 sys.exit(0)
26 27
27 (warn, crit) = sys.argv[1:3] 28 (warn, crit) = sys.argv[1:3]
28 warn = int(sys.argv[1]) 29 warn = int(sys.argv[1])
29 crit = int(sys.argv[2]) 30 crit = int(sys.argv[2])
30 31
31 vnstat_output = subprocess.check_output(["vnstat", "-tr"]) 32 vnstat_output = subprocess.check_output(["vnstat", "-tr"])
32 (rx, rx_unit) = extract_data("rx", vnstat_output) 33 (rx, rx_unit) = extract_data("rx", vnstat_output)
33 (tx, tx_unit) = extract_data("tx", vnstat_output) 34 (tx, tx_unit) = extract_data("tx", vnstat_output)
34 status = "rx %s %s tx %s %s" % (rx, rx_unit, tx, tx_unit) 35 status = "rx %s %s tx %s %s" % (rx, rx_unit, tx, tx_unit)
35 36
36 rx = calculate_bits(rx, rx_unit) 37 rx = calculate_bits(rx, rx_unit)
37 tx = calculate_bits(tx, tx_unit) 38 tx = calculate_bits(tx, tx_unit)
38 perfdata = "rx=%s;%s;%s tx=%s;%s;%s" % (rx, warn, crit, tx, warn, crit) 39 perfdata = "rx=%s;%s;%s tx=%s;%s;%s" % (rx, warn, crit, tx, warn, crit)
39 40
40 output = "%s|%s" % (status, perfdata) 41 output = "%s|%s" % (status, perfdata)
41 42
42 if rx >= crit or tx >= crit: 43 if rx >= crit or tx >= crit:
43 print "CRITICAL - " + output 44 print "CRITICAL - " + output
44 sys.exit(2) 45 sys.exit(2)
45 46
46 if rx >= warn or tx >= warn: 47 if rx >= warn or tx >= warn:
47 print "WARNING - " + output 48 print "WARNING - " + output
48 sys.exit(1) 49 sys.exit(1)
49 50
50 print "OK - " + output 51 print "OK - " + output
LEFTRIGHT
« no previous file | no next file » | Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Toggle Comments ('s')

Powered by Google App Engine
This is Rietveld