Module: check_mk
Branch: master
Commit: 3fa04a71cf6a6182cfa4bc3cc58748e8ad30b282
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=3fa04a71cf6a61…
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Fri Feb 10 10:37:11 2017 +0100
4357 steelhead_connections: now you can set upper levels for all connection types
Change-Id: I2639884331c46795fe0f4cda22cccd6e34413259
---
.werks/4357 | 9 ++++
ChangeLog | 1 +
checkman/steelhead_connections | 3 +-
checks/steelhead_connections | 79 ++++++++++++++++++++++++------------
web/plugins/wato/check_parameters.py | 63 ++++++++++++++++++++++++++++
5 files changed, 126 insertions(+), 29 deletions(-)
diff --git a/.werks/4357 b/.werks/4357
new file mode 100644
index 0000000..cab655f
--- /dev/null
+++ b/.werks/4357
@@ -0,0 +1,9 @@
+Title: steelhead_connections: now you can set upper levels for all connection types
+Level: 1
+Component: checks
+Compatible: compat
+Version: 1.4.0i4
+Date: 1486719400
+Class: feature
+
+
diff --git a/ChangeLog b/ChangeLog
index 7d7cea0..3b44b98 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -28,6 +28,7 @@
* 4019 Windows powershell scripts are now always called with the options -noprofile
-executionpolicy bypass...
* 4020 windows/megaraid.bat: now also provides information for the megaraid_bbu check
(Battery Backup Unit)
* 4021 windows agent: improved error message in logfile when a specified winperf
counter id could not get resolved
+ * 4357 steelhead_connections: now you can set upper levels for all connection types
* 4171 FIX: perle_psmu: fixed value error...
* 4172 FIX: smart.temp: fixed discovery and check function...
* 4173 FIX: if.include: ignore some more keys in 'Network interfaces and switch
ports' rule which are only used for interface grouping
diff --git a/checkman/steelhead_connections b/checkman/steelhead_connections
index bf9c647..9b6e77b 100644
--- a/checkman/steelhead_connections
+++ b/checkman/steelhead_connections
@@ -9,8 +9,7 @@ description:
up into {optimized} and {passthrough}. The optimized connections
are divided into {active}, {established}, {half opened} and {half closed}.
- Currently there is no way to apply levels and the check is always {OK}.
-
+ For all connection types upper levels can be set. There are no default levels.
inventory:
One service per Riverbed Steelhead appliance will be created.
diff --git a/checks/steelhead_connections b/checks/steelhead_connections
index 65457e3..89cf3c5 100644
--- a/checks/steelhead_connections
+++ b/checks/steelhead_connections
@@ -24,41 +24,66 @@
# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301 USA.
-steelhead_counter_names = {
- 1: "optimized",
- 2: "passthrough",
- 3: "halfOpened",
- 4: "halfClosed",
- 5: "established",
- 6: "active",
- 7: "total",
-}
-
def inventory_steelhead_connections(info):
if len(info) >= 7:
- return [(None, None)]
+ return [(None, {})]
def check_steelhead_connections(item, params, info):
+ if params is None:
+ params = {}
+
+ map_counter_types = {
+ "1" : "optimized",
+ "2" : "passthrough",
+ "3" : "halfOpened",
+ "4" : "halfClosed",
+ "5" : "established",
+ "6" : "active",
+ "7" : "total", }
+
values = {}
- for line in info:
- oid, value = line
- oidparts = oid.strip('.').split('.')
- itemname = steelhead_counter_names.get(int(oidparts[11]), "unknown")
- values[itemname] = int(value)
+ for oid, value in info:
+ counter_type = oid.strip('.').split('.')[-2]
+ key = map_counter_types.get(counter_type, "unknown")
+ values[key] = int(value)
- perfdata = []
- infos = []
- # leave out total and optimized since they can be computed
- for v in [ "active", "established", "halfOpened",
"halfClosed", "passthrough" ]:
- infos.append("%s: %d" % (v, values[v]))
- perfdata.append((v, values[v]))
- return (0, "%d connections: %s" % (values["total"], ",
".join(infos)), perfdata)
+ # leave out total and optimized in perfdata since they can be computed
+ for key, title, has_perf in [
+ ("total", "Total connections", False),
+ ("passthrough", "Passthrough", True),
+ ("optimized", "Optimized", False),
+ ("active", "Active", True),
+ ("established", "Established", True),
+ ("halfOpened", "Half opened", True),
+ ("halfClosed", "Half closed", True),
+ ]:
+ value = values[key]
+ if has_perf:
+ perfdata = [(key, value)]
+ else:
+ perfdata = []
+ infotext = "%s: %d" % (title, value)
+ state = 0
+ if params.get(key):
+ warn, crit = params[key]
+ if value >= crit:
+ state = 2
+ elif value >= warn:
+ state = 1
+ if state > 0:
+ infotext += " (warn/crit at %d/%d)" % (warn, crit)
-check_info['steelhead_connections'] = (check_steelhead_connections,
"Connections", 1, inventory_steelhead_connections)
+ yield state, infotext, perfdata
-snmp_info['steelhead_connections'] = ( ".1.3.6.1.4.1.17163.1.1.5", [
OID_STRING, 2 ])
-snmp_scan_functions['steelhead_connections'] = \
- lambda oid:
oid(".1.3.6.1.2.1.1.2.0").startswith(".1.3.6.1.4.1.17163.")
+check_info['steelhead_connections'] = {
+ "inventory_function" : inventory_steelhead_connections,
+ "check_function" : check_steelhead_connections,
+ "service_description" : "Connections",
+ "has_perfdata" : True,
+ "snmp_info" : (".1.3.6.1.4.1.17163.1.1.5", [
OID_STRING, 2 ]),
+ "snmp_scan_function" : lambda oid:
oid(".1.3.6.1.2.1.1.2.0").startswith(".1.3.6.1.4.1.17163."),
+ "group" : "steelhead_connections",
+}
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index 6e2427b..de78519 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -12878,6 +12878,69 @@ register_check_parameters(
match_type = "dict",
)
+
+register_check_parameters(
+ subgroup_networking,
+ "steelhead_connections",
+ _("Steelhead connections"),
+ Dictionary(
+ elements = [
+ ("total", Tuple(
+ title = _("Levels for total amount of connections"),
+ elements = [
+ Integer(title = _("Warning at")),
+ Integer(title = _("Critical at")),
+ ],
+ )),
+ ("optimized", Tuple(
+ title = _("Levels for optimized connections"),
+ elements = [
+ Integer(title = _("Warning at")),
+ Integer(title = _("Critical at")),
+ ],
+ )),
+ ("passthrough", Tuple(
+ title = _("Levels for passthrough connections"),
+ elements = [
+ Integer(title = _("Warning at")),
+ Integer(title = _("Critical at")),
+ ],
+ )),
+ ("halfOpened", Tuple(
+ title = _("Levels for half opened connections"),
+ elements = [
+ Integer(title = _("Warning at")),
+ Integer(title = _("Critical at")),
+ ],
+ )),
+ ("halfClosed", Tuple(
+ title = _("Levels for half closed connections"),
+ elements = [
+ Integer(title = _("Warning at")),
+ Integer(title = _("Critical at")),
+ ],
+ )),
+ ("established", Tuple(
+ title = _("Levels for established connections"),
+ elements = [
+ Integer(title = _("Warning at")),
+ Integer(title = _("Critical at")),
+ ],
+ )),
+ ("active", Tuple(
+ title = _("Levels for active connections"),
+ elements = [
+ Integer(title = _("Warning at")),
+ Integer(title = _("Critical at")),
+ ],
+ )),
+ ],
+ ),
+ None,
+ "dict",
+)
+
+
register_check_parameters(
subgroup_storage,
"fc_port",