Module: check_mk
Branch: master
Commit: 34d76b1511a199074c59609f3357bab678bbaedd
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=34d76b1511a199…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Tue Dec 13 10:17:03 2011 +0100
fileinfo: Check now honors parameters
---
checks/fileinfo | 34 ++++++++++++++++++++++++++++++----
1 files changed, 30 insertions(+), 4 deletions(-)
diff --git a/checks/fileinfo b/checks/fileinfo
index 93cd915..c504d9d 100644
--- a/checks/fileinfo
+++ b/checks/fileinfo
@@ -35,8 +35,14 @@
# M:\crash.cc|1672|12964010975
# M:\crash.exe|20024|12968154426
+# Parameters
+# "minsize" : ( 5000, 4000 ), in bytes
+# "maxsize" : ( 8000, 9000 ), in bytes
+# "minage" : ( 10, 20 ), in minutes
+# "maxage" : ( 50, 80 ), in minutes
+
def inventory_fileinfo(info):
- return [(line[0], None) for line in info[1:] if len(line) >= 3]
+ return [(line[0], {}) for line in info[1:] if len(line) >= 3]
def check_fileinfo(item, params, info):
reftime = int(info[0][0])
@@ -47,9 +53,29 @@ def check_fileinfo(item, params, info):
state = 0
size = int(line[1])
age = reftime - int(line[2])
- infotext = " - size is %s" % get_bytes_human_readable(size)
- perfdata = [ ("size", size), ("age", age) ]
- return (state, nagios_state_names[state] + infotext, perfdata)
+ infos = []
+ perfdata = []
+ for what, val, verbfunc in [
+ ("size", size, get_filesize_human_readable),
+ ("age", age, get_age_human_readable) ]:
+ infos.append("%s is %s" % (what, verbfunc(val)))
+ warn, crit = "", ""
+ for how, comp in [ ("min", "<" ),
+ ("max", ">" ) ]:
+ p = params.get(how + what)
+ if p:
+ warn, crit = p
+ cfunc = eval("lambda a,b: a %s b" % comp)
+ if cfunc(val, crit):
+ state = 2
+ infos[-1] += " (%s %s)(!!)" % (comp,
verbfunc(crit))
+ elif cfunc(val, warn):
+ state = max(state, 1)
+ infos[-1] += " (%s %s)(!)" % (comp,
verbfunc(warn))
+ perfdata.append((what, val, warn, crit))
+
+ infotext = nagios_state_names[state] + " - " + ",
".join(infos)
+ return (state, infotext, perfdata)
return (3, "UNKNOWN - File missing in agent output")