Module: check_mk
Branch: master
Commit: ca89a4458929c4714a9e58af638e3b1cc9fcf50e
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=ca89a4458929c4…
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Mon Aug 22 14:17:04 2016 +0200
3778 if: now levels for discards rate are configurable
---
.werks/3778 | 9 +++++++++
ChangeLog | 1 +
checks/if.include | 36 +++++++++++++++++++++-------------
web/plugins/wato/check_parameters.py | 10 +++++++++-
4 files changed, 41 insertions(+), 15 deletions(-)
diff --git a/.werks/3778 b/.werks/3778
new file mode 100644
index 0000000..b86af5b
--- /dev/null
+++ b/.werks/3778
@@ -0,0 +1,9 @@
+Title: if: now levels for discards rate are configurable
+Level: 1
+Component: checks
+Compatible: compat
+Version: 1.4.0i1
+Date: 1471868208
+Class: feature
+
+
diff --git a/ChangeLog b/ChangeLog
index fec20c5..59cd5bc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -132,6 +132,7 @@
* 2242 fortigate_sessions, fortigate_sessions_base: Allow configuration of levels for
sessions
* 3842 juniper_cpu_util: Allow configuration of levels for routing engine
* 3777 ipmi: IPMI sensor states are configurable
+ * 3778 if: now levels for discards rate are 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/if.include b/checks/if.include
index e3bdbb2..a2e42e7 100644
--- a/checks/if.include
+++ b/checks/if.include
@@ -594,6 +594,11 @@ def check_if_common_single(item, params, info, force_counter_wrap =
False,
else:
nucast_warn, nucast_crit = None, None
+ if "discards" in params:
+ disc_warn, disc_crit = params["discards"]
+ else:
+ disc_warn, disc_crit = None, None
+
# Convert the traffic related levels to a common format
general_traffic_levels = if_get_traffic_levels(params)
@@ -741,13 +746,13 @@ def check_if_common_single(item, params, info, force_counter_wrap =
False,
( "in", ifInOctets, traffic_levels[('in',
'upper', 'warn')], traffic_levels[('in', 'upper',
'crit')], 0, speed_b_in),
( "inucast", inucast, None, None, None, None),
( "innucast", saveint(inmcast) + saveint(inbcast),
nucast_warn, nucast_crit, None, None),
- ( "indisc", ifInDiscards, None, None, None, None),
+ ( "indisc", ifInDiscards, disc_warn, disc_crit, None,
None),
( "inerr", ifInErrors, err_warn, err_crit, None, None),
( "out", ifOutOctets, traffic_levels[('out',
'upper', 'warn')], traffic_levels[('out', 'upper',
'crit')], 0, speed_b_out),
( "outucast", outucast, None, None, None, None),
( "outnucast", saveint(outmcast) + saveint(outbcast),
nucast_warn, nucast_crit, None, None),
- ( "outdisc", ifOutDiscards, None, None, None, None),
+ ( "outdisc", ifOutDiscards, disc_warn, disc_crit, None,
None),
( "outerr", ifOutErrors, err_warn, err_crit, None, None) ]:
try:
@@ -781,9 +786,9 @@ def check_if_common_single(item, params, info, force_counter_wrap =
False,
return "%s/s" % get_bytes_human_readable(value)
# loop over incoming and outgoing traffic
- for what, errorrate, urate, nurate, traffic, speed in \
- [ ("in", rates[4], rates[1], rates[2], rates[0],
speed_b_in),
- ("out", rates[9], rates[6], rates[7], rates[5],
speed_b_out) ]:
+ for what, traffic, urate, nurate, discrate, errorrate, speed in \
+ [ ("in", rates[0], rates[1], rates[2], rates[3], rates[4],
speed_b_in),
+ ("out", rates[5], rates[6], rates[7], rates[8], rates[9],
speed_b_out) ]:
infotext += ", %s: %s" % (what, format_value(traffic))
@@ -842,17 +847,20 @@ def check_if_common_single(item, params, info, force_counter_wrap =
False,
state = max(state, 1)
infotext += ", %s-errors packets: %d (!!) >=
%s" % (what, errorrate, err_warn)
+ # check rate of non-unicast packets and discards
+ for _txt, _rate, _warn, _crit in [
+ ("non-unicast packets", nurate, nucast_warn,
nucast_crit),
+ ("discards", discrate, disc_warn,
disc_crit)]:
- # check rate of non-unicast packets
- if nucast_crit or nucast_warn:
- infotext += ", %s non-unicast packets %.2f/s" % (what,
nurate)
+ if _crit is not None and _warn is not None:
+ infotext += ", %s %s %.2f/s" % (what, _txt, _rate)
- if nucast_crit and nurate >= nucast_crit:
- state = 2
- infotext += "(!!) >= " + str(nucast_crit)
- elif nucast_warn and nurate >= nucast_warn:
- state = max(state,1)
- infotext += "(!) >= " + str(nucast_warn)
+ if _rate >= _crit:
+ state = 2
+ infotext += "(!!) >= " + str(_crit)
+ elif _rate >= _warn:
+ state = max(state,1)
+ infotext += "(!) >= " + str(_warn)
if node:
cluster_items[node] = ( state, infotext, perfdata )
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index d784207..9960ff6 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -5162,7 +5162,15 @@ register_check_parameters(
]
),
),
-
+ ( "discards",
+ Tuple(
+ title = _("Absolute levels for discards rates"),
+ elements = [
+ Integer(title = _("Warning at"), unit=
_("discards") ),
+ Integer(title = _("Critical at"), unit =
_("discards") )
+ ]
+ )
+ ),
( "average",
Integer(
title = _("Average values"),