Module: check_mk
Branch: master
Commit: da13e033ac36e44a2344b61c50aa25d8c3b0a363
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=da13e033ac36e4…
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Tue Sep 4 16:02:16 2018 +0200
ups_in_freq: cleanup
Change-Id: I021a3628d2b44db90865ec492711641f82f11abf
---
checks/ups_in_freq | 56 +++++++++++++++++++++++++++++++++++-------------------
1 file changed, 36 insertions(+), 20 deletions(-)
diff --git a/checks/ups_in_freq b/checks/ups_in_freq
index f1f999c..bddbaa6 100644
--- a/checks/ups_in_freq
+++ b/checks/ups_in_freq
@@ -27,36 +27,52 @@
ups_in_freq_default_levels = (45, 40) # warning / critical
-def inventory_ups_in_freq(info):
- if len(info) > 0:
- return [ ( x[0], "ups_in_freq_default_levels") for x in info if
int(x[1]) > 0 ]
-def check_ups_in_freq(item, params, info):
- warn, crit = params
- for line in info:
- if line[0] == item:
- power = int(line[1]) / 10
- perfdata = [ ( "in_freq", power, warn, crit, 30, 70 ) ]
- infotext = "in frequency: %dHz (warn/crit at %d/%d Hz)" % \
- (power, warn, crit)
+def parse_ups_in_freq(info):
+ parsed = {}
+ for name, freq_str in info:
+ try:
+ freq = int(freq_str) / 10.0
+ except ValueError:
+ freq = None
+ parsed.setdefault(name, freq)
+ return parsed
+
+
+def inventory_ups_in_freq(parsed):
+ for name, freq in parsed.iteritems():
+ if freq is not None and freq > 0:
+ yield name, "ups_in_freq_default_levels"
- if power <= crit:
- return (2, infotext, perfdata)
- elif power <= warn:
- return (1, infotext, perfdata)
- else:
- return (0, infotext, perfdata)
- return (3, "Phase %s not found in SNMP output" % item)
+def check_ups_in_freq(item, params, parsed):
+ freq = parsed.get(item)
+ if freq is None:
+ return
+
+ infotext = "%.1f Hz" % freq
+ state = 0
+ warn, crit = params
+ if freq < crit:
+ state = 2
+ elif freq < warn:
+ state = 1
+ if state:
+ infotext += " (warn/crit below %s Hz/%s Hz)" % (warn, crit)
+ return state, infotext, [("in_freq", freq, warn, crit, 30, 70)]
check_info['ups_in_freq'] = {
+ "parse_function" : parse_ups_in_freq,
"inventory_function" : inventory_ups_in_freq,
"check_function" : check_ups_in_freq,
"service_description" : "IN frequency phase %s",
"has_perfdata" : True,
"group" : "efreq",
- "snmp_info" : ( ".1.3.6.1.2.1.33.1.3.3.1", [ 0, 2 ] ),
+ "snmp_info" : (".1.3.6.1.2.1.33.1.3.3.1", [
+ 0,
+ 2, # UPS-MIB.txt::upsInputFrequency
+ ]),
"snmp_scan_function" : ups_generic_scan_function,
- "includes" : [ "ups_generic.include" ]
+ "includes" : ["ups_generic.include"]
}