Module: check_mk
Branch: master
Commit: a737672f0fc2d9699dfed996b6d29f268ceb8192
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=a737672f0fc2d9…
Author: Bastian Kuhn <bk(a)mathias-kettner.de>
Date: Mon Sep 8 14:00:56 2014 +0200
#1178 arris_cmts_mem: New check for Memory usage on arris cmts modules.
---
.werks/1178 | 9 ++++
ChangeLog | 1 +
checkman/arris_cmts_mem | 23 ++++++++++
checks/arris_cmts_mem | 84 ++++++++++++++++++++++++++++++++++++
web/plugins/perfometer/check_mk.py | 1 +
5 files changed, 118 insertions(+)
diff --git a/.werks/1178 b/.werks/1178
new file mode 100644
index 0000000..26ea1d5
--- /dev/null
+++ b/.werks/1178
@@ -0,0 +1,9 @@
+Title: arris_cmts_mem: New check for Memory usage on arris cmts modules.
+Level: 1
+Component: checks
+Compatible: compat
+Version: 1.2.5i6
+Date: 1410177635
+Class: feature
+
+
diff --git a/ChangeLog b/ChangeLog
index 43fa0aa..bfd0e5d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -43,6 +43,7 @@
* 1176 winperf_msx_queues: The list of counters for inventory can now be configured
host based using wato
* 0656 brocade_fcport: inventory rule can now choose upon physical und operations
states as well, state choices were also updated
* 1177 Hivemanger: New agent to check hivemanager devices
+ * 1178 arris_cmts_mem: New check for Memory usage on arris cmts modules.
* 1051 FIX: tcp_conn_stats: fix missing performance data...
* 1142 FIX: winperf_ts_sessions: fix computation, check has never really worked
* 1090 FIX: zfsget: fixed exception which happened on incomplete zfs entries
diff --git a/checkman/arris_cmts_mem b/checkman/arris_cmts_mem
new file mode 100644
index 0000000..3c6daa8
--- /dev/null
+++ b/checkman/arris_cmts_mem
@@ -0,0 +1,23 @@
+title: Arris CMTS: Memory Usage
+agents: snmp
+catalog: hw/network/arris
+license: GPL
+distribution: check_mk
+description:
+ This Check shows the current and total memory usage of module in a Arris CMTS device.
+
+item:
+ The id of the module
+
+perfdata:
+ One value is returned: The amount of memory used (in Bytes),
+ together with warn and crit levels and maximum value
+
+[parameters]
+parameters (dict): with the element
+{"levels"}: (float/int, float/int): levels of memory usage for {WARN} and
{CRIT},
+ whereas {int} are treated as absolute and {float} as percentage values
+
+inventory:
+ One check for each module is created by the inventory.
+
diff --git a/checks/arris_cmts_mem b/checks/arris_cmts_mem
new file mode 100644
index 0000000..f203c8e
--- /dev/null
+++ b/checks/arris_cmts_mem
@@ -0,0 +1,84 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2014 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.
+
+factory_settings["arris_cmts_mem"] = {
+ "levels" : ( 80.0, 90.0 ),
+}
+
+def inventory_arris_cmts_mem(info):
+ for cid, heap, heap_free in info:
+ yield cid, {}
+
+def check_arris_cmts_mem(item, params, info):
+ for cid, heap, heap_free in info:
+ if cid == item:
+ heap_free, heap = float(heap_free), float(heap)
+ usage_perc = (heap_free / heap) * 100
+ usage = heap - heap_free
+ infotext = "Usage: %s of %s (%.2f %%)" % \
+ (get_bytes_human_readable(heap_free),
get_bytes_human_readable(heap),usage_perc)
+ warn, crit = params['levels']
+ # Percent level
+ if type(crit) == float:
+ warn_abs = heap * warn / 100
+ crit_abs = heap * crit / 100
+ perfdata = [ ( 'usage', usage, warn_abs, crit_abs, 0, heap )]
+ levels = " (Warn/Crit at %f/%f %%)" % ( warn, crit )
+ if usage_perc >= crit:
+ yield 2, infotext+levels, perfdata
+ elif usage_perc >= warn:
+ yield 1, infotext+levels, perfdata
+ else:
+ yield 0, infotext, perfdata
+ else:
+ perfdata = [ ( 'usage', usage, warn, crit, 0, heap )]
+ levels = " (Warn/Crit at %s/%s)" % \
+ ( get_bytes_human_readable(warn), get_bytes_human_readable(crit) )
+ if usage >= crit:
+ yield 2, infotext+levels, perfdata
+ elif usage >= warn:
+ yield 1, infotext+levels, perfdata
+ else:
+ yield 0, infotext, perfdata
+ return
+ yield 3, "Card not found in Output"
+
+check_info["arris_cmts_mem"] = {
+ "check_function" : check_arris_cmts_mem,
+ "inventory_function" : inventory_arris_cmts_mem,
+ "service_description" : "Memory Module %s",
+ "has_perfdata" : True,
+ "snmp_scan_function" : arris_cmts_scan_function,
+ "default_levels_variable" : "arris_cmts_mem",
+ "snmp_info" : ( ".1.3.6.1.4.1.4998.1.1.5.3.2.1.1", [
+ OID_END,
+ 2, # cadMeHeapSize
+ 3, # cadMeHeapRemaining
+ ] ),
+ "group" : "memory_multiitem",
+ "includes" : [ "arris_cmts.include" ]
+}
+
diff --git a/web/plugins/perfometer/check_mk.py b/web/plugins/perfometer/check_mk.py
index 0c4286c..327457d 100644
--- a/web/plugins/perfometer/check_mk.py
+++ b/web/plugins/perfometer/check_mk.py
@@ -936,6 +936,7 @@ perfometers['check_mk-db2_mem'] = perfometer_simple_mem_usage
perfometers['check_mk-esx_vsphere_hostsystem.mem_usage'] =
perfometer_simple_mem_usage
perfometers['check_mk-brocade_mlx.module_mem'] = perfometer_simple_mem_usage
perfometers['check_mk-innovaphone_mem'] = perfometer_simple_mem_usage
+perfometers['check_mk-arris_cmts_mem'] = perfometer_simple_mem_usage
def perfometer_vmguest_mem_usage(row, command, perf):
used = float(perf[0][1])