Module: check_mk
Branch: master
Commit: 7f3406c1c9d01fb44d629db560b026400621b8ee
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=7f3406c1c9d01f…
Author: Konstantin Büttner <kb(a)mathias-kettner.de>
Date: Wed Sep 13 14:03:12 2017 +0200
5220 brocade_sys, brocade_sys.mem: New checks to monitor main memory usage and CPU
utilization of Brocade fibre channel switches
Change-Id: Idf1bf5a669cfa3c8783f98f9041c71c6bb4f431c
---
.werks/5220 | 10 ++++
checkman/brocade_sys | 13 +++++
checkman/brocade_sys.mem | 13 +++++
checks/brocade_sys | 109 +++++++++++++++++++++++++++++++++++
web/plugins/wato/check_parameters.py | 22 +++++++
5 files changed, 167 insertions(+)
diff --git a/.werks/5220 b/.werks/5220
new file mode 100644
index 0000000..c4a95ad
--- /dev/null
+++ b/.werks/5220
@@ -0,0 +1,10 @@
+Title: brocade_sys, brocade_sys.mem: New checks to monitor main memory usage and CPU
utilization of Brocade fibre channel switches
+Level: 1
+Component: checks
+Compatible: compat
+Edition: cre
+Version: 1.5.0i1
+Date: 1505304149
+Class: feature
+
+
diff --git a/checkman/brocade_sys b/checkman/brocade_sys
new file mode 100644
index 0000000..229a5e7
--- /dev/null
+++ b/checkman/brocade_sys
@@ -0,0 +1,13 @@
+title: Brocade FibreChannel Switches: CPU
+catalog: hw/storagehw/brocade
+agents: snmp
+license: GPL
+distribution: check_mk
+description:
+ This checks monitors the CPU utilization.
+
+item:
+ None
+
+inventory:
+ One check per device is created
diff --git a/checkman/brocade_sys.mem b/checkman/brocade_sys.mem
new file mode 100644
index 0000000..5d36d78
--- /dev/null
+++ b/checkman/brocade_sys.mem
@@ -0,0 +1,13 @@
+title: Brocade FibreChannel Switches: Memory
+catalog: hw/storagehw/brocade
+agents: snmp
+license: GPL
+distribution: check_mk
+description:
+ This checks monitors the main memory usage in percent. Absolute values are not
available.
+
+item:
+ None
+
+inventory:
+ One check per device is created
diff --git a/checks/brocade_sys b/checks/brocade_sys
new file mode 100644
index 0000000..b7a2262
--- /dev/null
+++ b/checks/brocade_sys
@@ -0,0 +1,109 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2017 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-
+# tails. 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 parse_brocade_sys(info):
+ return {
+ "cpu_util" : int(info[0][0]),
+ "mem_used_percent" : int(info[0][1]),
+ }
+
+
+# .--Memory--------------------------------------------------------------.
+# | __ __ |
+# | | \/ | ___ _ __ ___ ___ _ __ _ _ |
+# | | |\/| |/ _ \ '_ ` _ \ / _ \| '__| | | | |
+# | | | | | __/ | | | | | (_) | | | |_| | |
+# | |_| |_|\___|_| |_| |_|\___/|_| \__, | |
+# | |___/ |
+# '----------------------------------------------------------------------'
+
+def inventory_brocade_sys_mem(parsed):
+ return [ (None, None) ]
+
+
+def check_brocade_sys_mem(item, params, parsed):
+ mem_used_percent = parsed["mem_used_percent"]
+ infotext = "%s%%" % mem_used_percent
+ if params is None:
+ perfdata = [ ("mem_used_percent", mem_used_percent) ]
+ return 0, infotext, perfdata
+ else:
+ warn, crit = params
+ perfdata = [ ("mem_used_percent", mem_used_percent, warn, crit) ]
+ levelstext = " (warn/crit at %d/%d%%)" % (warn, crit)
+ if mem_used_percent >= crit:
+ status = 2
+ elif mem_used_percent >= warn:
+ status = 1
+ else:
+ status = 0
+ if status:
+ infotext += levelstext
+ return status, infotext, perfdata
+
+
+check_info['brocade_sys.mem'] = {
+ 'inventory_function' : inventory_brocade_sys_mem,
+ 'check_function' : check_brocade_sys_mem,
+ 'service_description' : 'Memory used',
+ 'group' : 'memory_relative',
+ 'has_perfdata' : True,
+}
+
+#.
+# .--CPU-----------------------------------------------------------------.
+# | ____ ____ _ _ |
+# | / ___| _ \| | | | |
+# | | | | |_) | | | | |
+# | | |___| __/| |_| | |
+# | \____|_| \___/ |
+# | |
+# '----------------------------------------------------------------------'
+
+
+def inventory_brocade_sys(parsed):
+ return [ (None, None) ]
+
+
+def check_brocade_sys(item, params, parsed):
+ return check_cpu_util(parsed["cpu_util"], params)
+
+
+check_info['brocade_sys'] = {
+ 'parse_function' : parse_brocade_sys,
+ 'inventory_function' : inventory_brocade_sys,
+ 'check_function' : check_brocade_sys,
+ 'service_description' : 'CPU utilization',
+ 'snmp_info' : ('.1.3.6.1.4.1.1588.2.1.1.1.26', [ #
Brocade-REG-MIB
+ "1", # swCpuUsage
+ "6", # swMemoryUsage
+ ]),
+ 'snmp_scan_function' : lambda oid:
oid(".1.3.6.1.2.1.1.2.0").startswith(".1.3.6.1.4.1.1588.2.1.1"),
+ 'group' : 'cpu_utilization',
+ 'includes' : [ 'cpu_util.include' ],
+ 'has_perfdata' : True,
+}
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index 666eb13..a032788 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -7807,6 +7807,28 @@ register_check_parameters(
register_check_parameters(
subgroup_os,
+ "memory_relative",
+ _("Main memory usage for Brocade fibre channel switches"),
+ OptionalDropdownChoice(
+ title = _("Memory usage"),
+ choices = [
+ ( None, _("Do not impose levels"))
+ ],
+ otherlabel = _("Percentual levels ->"),
+ explicit = \
+ Tuple(
+ elements = [
+ Integer(title=_("Warning at"), default_value=85,
unit="%"),
+ Integer(title=_("Critical at"), default_value=90,
unit="%"),
+ ]
+ )
+ ),
+ None,
+ "first"
+)
+
+register_check_parameters(
+ subgroup_os,
"memory_simple",
_("Main memory usage of simple devices"),
Transform(