Module: check_mk
Branch: master
Commit: 76104c5e198c6b924658e0376a97c3d48c2b70d3
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=76104c5e198c6b…
Author: Andreas Boesl <ab(a)mathias-kettner.de>
Date: Mon Aug 29 10:57:12 2016 +0200
3793 f5_bigip_vserver: traffic and packet levels are now configurable
---
.werks/3793 | 9 +++
ChangeLog | 1 +
checks/f5_bigip_vserver | 31 +++++++--
web/plugins/wato/check_parameters.py | 114 ++++++++++++++++++++++++++++++++++
4 files changed, 150 insertions(+), 5 deletions(-)
diff --git a/.werks/3793 b/.werks/3793
new file mode 100644
index 0000000..8f969b0
--- /dev/null
+++ b/.werks/3793
@@ -0,0 +1,9 @@
+Title: f5_bigip_vserver: traffic and packet levels are now configurable
+Level: 1
+Component: checks
+Compatible: compat
+Version: 1.4.0i1
+Date: 1472461003
+Class: feature
+
+
diff --git a/ChangeLog b/ChangeLog
index 5bbf15c..e3838d2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -142,6 +142,7 @@
* 3743 SEC: mk_jolokia: Use JSON library to parse JSON output in lieu of eval()...
NOTE: Please refer to the migration notes!
* 3863 didactum_sensors_analog, didactum_sensors_analog.voltage,
didactum_sensors_discrete: new checks which monitor the temperature, voltage and discrete
sensors of Didactum devices which support the DIDACTUM-SYSTEM-MIB
+ * 3793 f5_bigip_vserver: traffic and packet levels are now configurable
* 3073 FIX: windows agent: relative paths to mrpe scripts are now treated as relative
to the agent installation directory...
* 3061 FIX: mk_jolokia: Fixed debugging of the agent plugin
* 3074 FIX: windows agent: fixed incorrect values for 32-bit performance counters
diff --git a/checks/f5_bigip_vserver b/checks/f5_bigip_vserver
index 198aa3e..bfaa309 100644
--- a/checks/f5_bigip_vserver
+++ b/checks/f5_bigip_vserver
@@ -60,10 +60,10 @@ def parse_f5_bigip_vserver(info):
def inventory_f5_bigip_vserver(parsed):
for name, vserver in parsed.items():
if vserver["status"][0] in [1, 4]: # Green and Blue
- yield name, None
+ yield name, {}
-def check_f5_bigip_vserver(item, _no_params, parsed):
+def check_f5_bigip_vserver(item, params, parsed):
if item in parsed:
vserver = parsed[item]
@@ -96,10 +96,8 @@ def check_f5_bigip_vserver(item, _no_params, parsed):
summed_values[what] = function(value_list)
- perfdata = map(lambda x: (x[0], x[1]), summed_values.items())
-
# Current number of connections
- yield 0, "Client connections: %d" %
summed_values["connections"], perfdata
+ yield 0, "Client connections: %d" %
summed_values["connections"], summed_values.items()
# New connections per time
yield 0, "Rate: %.2f/sec" %
summed_values["connections_rate"]
@@ -142,10 +140,33 @@ def check_f5_bigip_vserver(item, _no_params, parsed):
yield state, output
+ # Check configured limits
+ map_paramvar_to_text = {
+ "if_in_octets": "Incoming Bytes",
+ "if_out_octets": "Outgoing Bytes",
+ "if_total_octets": "Total Bytes",
+ "if_in_pkts": "Incoming Packets",
+ "if_out_pkts": "Outgoing Packets",
+ "if_total_pkts": "Total Packets",
+ }
+ summed_values["if_total_octets"] =
summed_values["if_in_octets"] + summed_values["if_out_octets"]
+ summed_values["if_total_pkts"] =
summed_values["if_in_pkts"] + summed_values["if_out_pkts"]
+ for param_var, levels in params.items():
+ if param_var.endswith("_lower") and type(levels) == tuple:
+ levels = (None, None) + levels
+ value = summed_values[param_var.rstrip("_lower")]
+ state, extra_text, extra_perfdata = check_levels(value, param_var, levels)
+ if state:
+ if "octets" in param_var:
+ value = get_bytes_human_readable(value, base = 1000.0)
+ yield state, "%s: %s%s" %
(map_paramvar_to_text[param_var.rstrip("_lower")], value, extra_text)
+
+
check_info["f5_bigip_vserver"] = {
"parse_function" : parse_f5_bigip_vserver,
"check_function" : check_f5_bigip_vserver,
"inventory_function" : inventory_f5_bigip_vserver,
+ "group" : "f5_bigip_vserver",
"service_description" : "Virtual Server %s",
"has_perfdata" : True,
"snmp_info" : (".1.3.6.1.4.1.3375.2.2.10", [
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index ad297ff..9468a78 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -237,6 +237,120 @@ register_check_parameters(
register_check_parameters(
subgroup_applications,
+ "f5_bigip_vserver",
+ _("F5 Loadbalancer VServer"),
+ Dictionary(
+ elements = [
+ ( "if_in_octets",
+ Levels(
+ title = _("Incoming Traffic Maximum"),
+ unit = _("bytes/s"),
+ default_difference = (5, 8),
+ default_value = None,
+ ),
+ ),
+ ( "if_in_octets_lower",
+ Levels(
+ title = _("Incoming Traffic Minimum"),
+ unit = _("bytes/s"),
+ default_difference = (5, 8),
+ default_value = None,
+ ),
+ ),
+ ( "if_out_octets",
+ Levels(
+ title = _("Outgoing Traffic Maximum"),
+ unit = _("bytes/s"),
+ default_difference = (5, 8),
+ default_value = None,
+ ),
+ ),
+ ( "if_out_octets_lower",
+ Levels(
+ title = _("Outgoing Traffic Minimum"),
+ unit = _("bytes/s"),
+ default_difference = (5, 8),
+ default_value = None,
+ ),
+ ),
+ ( "if_total_octets",
+ Levels(
+ title = _("Total Traffic Maximum"),
+ unit = _("bytes/s"),
+ default_difference = (5, 8),
+ default_value = None,
+ ),
+ ),
+ ( "if_total_octets_lower",
+ Levels(
+ title = _("Total Traffic Minimum"),
+ unit = _("bytes/s"),
+ default_difference = (5, 8),
+ default_value = None,
+ ),
+ ),
+
+
+ ( "if_in_pkts",
+ Levels(
+ title = _("Incoming Packets Maximum"),
+ unit = _("packets/s"),
+ default_difference = (5, 8),
+ default_value = None,
+ ),
+ ),
+ ( "if_in_pkts_lower",
+ Levels(
+ title = _("Incoming Packets Minimum"),
+ unit = _("packets/s"),
+ default_difference = (5, 8),
+ default_value = None,
+ ),
+ ),
+ ( "if_out_pkts",
+ Levels(
+ title = _("Outgoing Packets Maximum"),
+ unit = _("packets/s"),
+ default_difference = (5, 8),
+ default_value = None,
+ ),
+ ),
+ ( "if_out_pkts_lower",
+ Levels(
+ title = _("Outgoing Packets Minimum"),
+ unit = _("packets/s"),
+ default_difference = (5, 8),
+ default_value = None,
+ ),
+ ),
+ ( "if_total_pkts",
+ Levels(
+ title = _("Total Packets Maximum"),
+ unit = _("packets/s"),
+ default_difference = (5, 8),
+ default_value = None,
+ ),
+ ),
+ ( "if_total_pkts_lower",
+ Levels(
+ title = _("Total Packets Minimum"),
+ unit = _("packets/s"),
+ default_difference = (5, 8),
+ default_value = None,
+ ),
+ )
+ ]
+ ),
+ TextAscii(
+ title = _("VServer name"),
+ allow_empty = False
+ ),
+ 'dict'
+)
+
+
+register_check_parameters(
+ subgroup_applications,
"cluster_status",
_("Cluster status"),
Dictionary(