Module: check_mk
Branch: master
Commit: f8037ac1fb08015dd1786358a7817f8c2f535893
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=f8037ac1fb0801…
Author: Andreas Boesl <ab(a)mathias-kettner.de>
Date: Mon Aug 26 18:00:04 2013 +0200
Free/Used space and growth of filesystem_elements
now configurable with percentage / absolute / dynamic levels
---
ChangeLog | 5 +-
web/plugins/wato/check_parameters.py | 127 ++++++++++++++++++++++------------
2 files changed, 85 insertions(+), 47 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index ee96682..84cf24e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -66,9 +66,8 @@
(output buffer now grows dynamically)
* jolokia_metrics: fixed incorrect plugin output for high warn/crit levels
* hyperv: Added a check for checking state changes.
- * df / esx_vsphere_datastore: filesystem levels configuration gets even easier
- now able to set absolute levels and levels depending
- on total disk space
+ * df / esx_vsphere_datastore: now able to set absolute levels and levels depending
+ on total disk space of used and free space
* cisco_wlc: New check for monitoring cisco wireless lan access points
* cisco_wlc_clients: New check for the nummber of clients in a wlc wifi
* df: Negative integer levels for MB left on a device
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index b1a0602..9e3e0c6 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -1337,55 +1337,94 @@ register_check_parameters(
"first"
)
-filesystem_elements = [
- ("levels",
- Alternative(
- title = _("Levels for filesystem usage"),
- default_value = (80.0, 90.0),
- elements = [
- Tuple(
- title = _("Percentage used space"),
- elements = [
- Percentage(title = _("Warning if above"), unit =
_("% usage")),
- Percentage(title = _("Critical if above"), unit =
_("% usage")),
- ]
- ),
- Tuple(
- title = _("Absolute used space"),
- elements = [
- Integer(title = _("Warning if above"), unit =
_("MB")),
- Integer(title = _("Critical if above"), unit =
_("MB")),
- ]
- ),
- ListOf(
- Tuple(
- orientation = "horizontal",
+def get_filesystem_valuespec(what):
+ if what == "used":
+ title = _("used space")
+ course = _("above")
+ else:
+ title = _("free space")
+ course = _("below")
+
+
+ vs_subgroup = [
+ Tuple( title = _("Percentage %s") % title,
elements = [
- Filesize(title = _("Filesystem larger than")),
- Alternative(
- title = _("Levels for the filesystem usage"),
- elements = [
- Tuple(
- title = _("Percentage used space"),
- elements = [
- Percentage(title = _("Warning if
above"), unit = _("% usage")),
- Percentage(title = _("Critical if
above"), unit = _("% usage")),
- ]
- ),
+ Percentage(title = _("Warning if %s") % course,
unit = _("%"), minvalue = 0.0),
+ Percentage(title = _("Critical if %s") % course,
unit = _("%"), minvalue = 0.0),
+ ]
+ ),
+ Tuple( title = _("Absolute %s") % title,
+ elements = [
+ Integer(title = _("Warning if %s") % course, unit =
_("MB"), minvalue = 0),
+ Integer(title = _("Critical if %s") % course, unit
= _("MB"), minvalue = 0),
+ ]
+ )
+ ]
+
+ return Alternative(
+ title = _("Levels for filesystem %s") % title,
+ show_alternative_title = True,
+ default_value = (80.0, 90.0),
+ elements = vs_subgroup + [
+ ListOf(
Tuple(
- title = _("Absolute used space"),
+ orientation = "horizontal",
elements = [
- Integer(title = _("Warning if
above"), unit = _("MB")),
- Integer(title = _("Critical if
above"), unit = _("MB")),
+ Filesize(title = _("Filesystem larger
than")),
+ Alternative(
+ title = _("Levels for %s") %
title,
+ elements = vs_subgroup
+ )
]
),
- ]
- ),
- ],
- ),
- title = _('Dynamic levels'),
- ),]),
- ),
+ title = _('Dynamic levels'),
+ )],
+ )
+
+def match_filesystem_level_type(value):
+ if type(value) == list:
+ for entry in value:
+ if entry[1][0] < 0 or entry[1][1] < 0:
+ return 1
+ else:
+ return 0
+ else:
+ if value[0] < 0 or value[1] < 0:
+ return 1
+ else:
+ return 0
+
+def transform_filesystem_levels(value):
+ tuple_convert = lambda val: tuple(map(lambda x: -x, val))
+
+ if type(value) == tuple:
+ return tuple_convert(value)
+ else:
+ result = []
+ for item in value:
+ result.append((item[0], tuple_convert(item[1])))
+ return result
+
+
+filesystem_elements = [
+ ("levels",
+ Alternative(
+ title = _("Levels for filesystem"),
+ show_alternative_title = True,
+ default_value = (80.0, 90.0),
+ match = match_filesystem_level_type,
+ elements = [
+ get_filesystem_valuespec("used"),
+ Transform(
+ get_filesystem_valuespec("free"),
+ title = _("Levels for filesystem free space"),
+ allow_empty = False,
+ forth = transform_filesystem_levels,
+ back = transform_filesystem_levels
+ )
+ ]
+ )
+ ),
( "flex_levels",
FixedValue(
None,