Module: check_mk
Branch: master
Commit: 3bcdb63798f73387c8142392cafdcc3e1be18ab8
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=3bcdb63798f733…
Author: Bastian Kuhn <bk(a)mathias-kettner.de>
Date: Mon May 19 13:42:36 2014 +0200
if_brocade: New if64 Check version for Brocade VDX Switches
This check does the same like the normal if64 check. The only difference is that ifName is
used instead of ifDescription.
You may want to do a reinventory on broace switches, because otherwise the "Check_MK
Inventory" check (if used) will trigger warning state
cause of unchecked services.
---
.werks/162 | 10 ++++++
ChangeLog | 2 ++
checks/if64 | 1 +
checks/if_brocade | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 115 insertions(+)
diff --git a/.werks/162 b/.werks/162
new file mode 100644
index 0000000..8ad143f
--- /dev/null
+++ b/.werks/162
@@ -0,0 +1,10 @@
+Title: if_brocade: New if64 Check version for Brocade VDX Switches
+Level: 2
+Component: checks
+Version: 1.2.5i3
+Date: 1400499450
+Class: incomp
+
+This check does the same like the normal if64 check. The only difference is that ifName
is used instead of ifDescription.
+You may want to do a reinventory on broace switches, because otherwise the "Check_MK
Inventory" check (if used) will trigger warning state
+cause of unchecked services.
diff --git a/ChangeLog b/ChangeLog
index 66073a9..029b577 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -48,6 +48,8 @@
* 0917 df checks: now able to show time left until disk full as perfometer and
pnpgraph...
* 0954 juniper_bgp_state: New Check for BGP status at Juniper Routers
* 0955 zfs_arc_cache, zfs_arc_cache.l2: New Checks for Hit Ratios and Sizes of ZFS
arc Cache
+ * 0162 if_brocade: New if64 Check version for Brocade VDX Switches...
+ NOTE: Please refer to the migration notes!
* 0777 FIX: special agent emcvnx: did not work with security file authentication...
* 0786 FIX: zfsget: fixed compatibility with older Solaris agents...
* 0809 FIX: brocade_fcport: Fixed recently introduced problem with port speed
detection
diff --git a/checks/if64 b/checks/if64
index f842658..e41600f 100644
--- a/checks/if64
+++ b/checks/if64
@@ -44,6 +44,7 @@ def check_if64(item, params, info):
def if64_scan_function(oid):
ignored_strings = [
"LANCOM",
+ "Brocade VDX Switch",
]
for string in ignored_strings:
if string in oid(".1.3.6.1.2.1.1.1.0"):
diff --git a/checks/if_brocade b/checks/if_brocade
new file mode 100644
index 0000000..829b53f
--- /dev/null
+++ b/checks/if_brocade
@@ -0,0 +1,102 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2013 mk(a)mathias-kettner.de |
+# +------------------------------------------------------------------+
+#
+# This file is part of Check_MK.
+# The official homepage is at
http://mathias-kettner.de/check_mk.
+#
+# check_mk is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation in version 2. check_mk is distributed
+# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
+# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more de-
+# ails. You should have received a copy of the GNU General Public
+# License along with GNU Make; see the file COPYING. If not, write
+# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301 USA.
+
+def fix_if_64_highspeed(info):
+ for line in info:
+ if type(line[3]) == str: # not yet converted
+ line[3] = saveint(line[3]) * 1000000
+
+def if_brocade_convert(info):
+ iftab, ssidtab = info
+ ssid_dict = dict(ssidtab)
+ new_info = []
+ for line in iftab:
+ if line[20].startswith("Point-2-Point"):
+ continue
+ else:
+ ifName = line[1]
+
+ new_line = line[:-1]
+ if line[20].startswith("Logical Network"):
+ new_line[1] += " Logical"
+ ssid = ssid_dict.get(ifName, "")
+ if ssid:
+ new_line[1] += " " + ssid
+ new_line[1] = new_line[1].strip()
+ new_info.append(new_line)
+ return new_info
+
+def inventory_if_brocade(info):
+ info = if_brocade_convert(info)
+ fix_if_64_highspeed(info)
+ return inventory_if_common(info)
+
+def check_if_brocade(item, params, info):
+ info = if_brocade_convert(info)
+ fix_if_64_highspeed(info)
+ return check_if_common(item, params, info)
+
+check_includes['if_brocade'] = [ "if.include" ]
+check_info["if_brocade"] = {
+ 'check_function': check_if_brocade,
+ 'inventory_function': inventory_if_brocade,
+ 'service_description': 'Interface %s',
+ 'has_perfdata': True,
+ 'snmp_info': [
+ ( ".1.3.6.1.2.1", [
+ "2.2.1.1", # ifIndex 0
+ "31.1.1.1.1", # ifName (brocade has no useful information if
Descr)
+ "2.2.1.3", # ifType 2
+ "31.1.1.1.15", # ifHighSpeed .. 1000 means
1GBit
+ "2.2.1.8", # ifOperStatus 4
+ "31.1.1.1.6", # ifHCInOctets 5
+ "31.1.1.1.7", # ifHCInUcastPkts 6
+ "31.1.1.1.8", # ifHCInMulticastPkts 7
+ "31.1.1.1.9", # ifHCInBroadcastPkts 8
+ "2.2.1.13", # ifInDiscards 9
+ "2.2.1.14", # ifInErrors 10
+ "31.1.1.1.10", # ifHCOutOctets 11
+ "31.1.1.1.11", # ifHCOutUcastPkts 12
+ "31.1.1.1.12", # ifHCOutMulticastPkts 13
+ "31.1.1.1.13", # ifHCOutBroadcastPkts 14
+ "2.2.1.19", # ifOutDiscards 15
+ "2.2.1.20", # ifOutErrors 16
+ "2.2.1.21", # ifOutQLen 17
+ "31.1.1.1.18", # ifAlias 18
+ "2.2.1.6", # ifPhysAddress 19
+ # Used in order to ignore some logical NICs
+ "2.2.1.2", # ifDescr 20
+ ]),
+ ( ".1.3.6.1.4.1.2356.11.1.3.56.1", [1, 3] ) # brocade: SSID
21
+ ],
+ # check if number of network interfaces (IF-MIB::ifNumber.0) is at least 2
+ 'snmp_scan_function': \
+ lambda oid: "Brocade VDX Switch" in
oid(".1.3.6.1.2.1.1.1.0") and \
+ (not if64_disabled(g_hostname)) and \
+ oid(".1.3.6.1.2.1.31.1.1.1.6.*") != None,
+ 'group': 'if',
+ 'default_levels_variable': 'if_default_levels',
+}