Module: check_mk
Branch: master
Commit: 97ee4e048d1ddf66593d901b59a85368305a5dfb
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=97ee4e048d1ddf…
Author: Andreas Boesl <ab(a)mathias-kettner.de>
Date: Thu Sep 12 13:30:29 2013 +0200
cisco_wlc:
new rule group cisco_wlc: allows to configure handling of missing AP
---
ChangeLog | 2 ++
checkman/cisco_wlc | 18 +++++++++++++++++
checks/cisco_wlc | 24 +++++++++++++++--------
web/plugins/wato/check_parameters.py | 36 ++++++++++++++++++++++++++++++++++
4 files changed, 72 insertions(+), 8 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index f8dac3e..daa3f94 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -86,6 +86,7 @@
* ADD: etherbox: new check for etherbox (messpc) sensors.
currently supported: temperature, humidity, switch contact and smoke sensors
* cisco_wlc_client: now supports low/high warn and crit levels
+ * cisco_wlc: now supports configuration options for missing AP
Notifications:
@@ -185,6 +186,7 @@
* ADD: Rule to check state of physical switch (currently used by etherbox check)
* FIX: Cisco ruleset "Cisco WLC WiFi client connections" has been
generalized to
"WLC WiFi client connections"
+ * ADD: new ruleset cisco_wlc: Allows to configure handling of missing AP
Notifications:
* Flexible Notification can now filter service levels
diff --git a/checkman/cisco_wlc b/checkman/cisco_wlc
index 9fdb0c6..300270f 100644
--- a/checkman/cisco_wlc
+++ b/checkman/cisco_wlc
@@ -11,3 +11,21 @@ description:
inventory:
One check for each online accesspoint is created
+
+examples:
+ checkgroup_parameters.setdefault('cisco_wlc', [])
+
+ checkgroup_parameters['cisco_wlc'] = [
+ ( {'ap_name': [('HOMEOFFICE', 0), ('FALLBACK', 2)],
'ap_model': [('K7-B30329', 3)]}, [], ALL_HOSTS, ALL_SERVICES ),
+ ] + checkgroup_parameters['cisco_wlc']
+
+
+[parameters]
+parameters(dict): with the keys "ap_model" and "ap_name"
+
+ The values of in this dict are list of tuples. Each tuple contain
+ eiter (ap_name(string), action(int)) or (ap_model(string), action(int)),
+ whereas the ap_name is the human readable name of the AP and the ap_model is the model
number
+ The action represent the outcome when this model is missing and can be
+ set from 0 to 3 (OK, WARN, CRIT, UNKNOWN)
+
diff --git a/checks/cisco_wlc b/checks/cisco_wlc
index c0bdbde..77208a3 100644
--- a/checks/cisco_wlc
+++ b/checks/cisco_wlc
@@ -24,27 +24,22 @@
# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301 USA.
-# Example output from agent:
-# Put here the example output from your TCP-Based agent. If the
-# check is SNMP-Based, then remove this section
-
-
# States:
# 1: OK, 2: Crit, 3: Warn
def cisco_wlc_convert(info):
data = []
for i in range(0, len(info[0])):
- data.append((info[0][i][1], info[1][i][1], info[2][i][1] ))
+ data.append((info[0][i][1], info[1][i][1], info[2][i][1], info[3][i][1] ))
return data
def inventory_cisco_wlc(info):
data = cisco_wlc_convert(info)
return [ (x[0], None) for x in data ]
-def check_cisco_wlc(item, _no_params, info):
+def check_cisco_wlc(item, params, info):
data = cisco_wlc_convert(info)
- for name, mac, state in data:
+ for name, mac, state, model in data:
if name == item:
state = saveint(state)
if state == 1:
@@ -53,17 +48,30 @@ def check_cisco_wlc(item, _no_params, info):
return 1, "Accesspoint state Warning"
if state == 2:
return 2, "State Critical"
+
+ # Special treatment if this device is missing
+ if params:
+ for name, mac, state, model in data:
+ for ap_name, ap_state in params.get("ap_name", []):
+ if name.startswith(ap_name):
+ return ap_state, "Accesspoint not found (State set to %s by
rule)" % nagios_state_names[ap_state]
+ for ap_model, ap_state in params.get("ap_model", []):
+ if mode.startswith(ap_model):
+ return ap_state, "Accesspoint not found (State set to %s by
rule)" % nagios_state_names[ap_state]
+
return 2, "Accesspoint not found"
check_info["cisco_wlc"] = {
"check_function" : check_cisco_wlc,
"inventory_function" : inventory_cisco_wlc,
+ "group" : "cisco_wlc",
"service_description" : "AP %s",
"has_perfdata" : False,
"snmp_scan_function" : lambda oid: oid('.1.3.6.1.2.1.1.2.0') in
[".1.3.6.1.4.1.9.1.1069"],
"snmp_info" : [( ".1.3.6.1.4.1.14179.2.2.1.1.3", [
OID_END, '' ]),
( ".1.3.6.1.4.1.14179.2.2.1.1.1", [ OID_END,
'' ]),
( ".1.3.6.1.4.1.14179.2.2.1.1.6", [ OID_END,
'' ]),
+ ( ".1.3.6.1.4.1.14179.2.2.1.1.16", [ OID_END,
'' ]),
],
}
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index 58fe698..7e05a33 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -1120,6 +1120,42 @@ register_check_parameters(
)
register_check_parameters(
+ subgroup_networking,
+ "cisco_wlc",
+ _("Cisco WLAN AP"),
+ Dictionary(
+ help = _("Here you can set which alert type is set when the given "
+ "access point is missing (might be powered off). The access point
"
+ "can be specified by the AP name or the AP model"),
+ elements = [
+ ( "ap_name",
+ ListOf(
+ Tuple(
+ elements = [
+ TextAscii(title = _("AP name")),
+ MonitoringState( title=_("State when missing"),
default_value = 2)
+ ]
+ ),
+ title = _("Access point name"),
+ add_label = _("Add name"))
+ ),
+ ( "ap_model",
+ ListOf(
+ Tuple(
+ elements = [
+ TextAscii(title = _("AP model")),
+ MonitoringState( title=_("State when missing"),
default_value = 2)
+ ]
+ ),
+ title = _("Access point device id"),
+ add_label = _("Add id"))
+ )
+ ]
+ ),
+ TextAscii(title = _("Access Point")),
+ "first",
+)
+register_check_parameters(
subgroup_networking,
"tcp_conn_stats",
("TCP connection stats (LINUX / UNIX)"),