Module: check_mk
Branch: master
Commit: 2af6730cb9293ed6ac6fb815d7c1f60e301890ec
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=2af6730cb9293e…
Author: Konstantin Büttner <kb(a)mathias-kettner.de>
Date: Tue Jan 16 13:00:06 2018 +0100
5601 hp_psu, hp_psu.temp: New checks to monitor the status and temperature of power
supplies for HP switches
Change-Id: If1875718fc139a478006231b28d6f8bf86f5eaf2
---
.werks/5601 | 4 +-
checkman/hp_psu | 15 +++++++
checkman/hp_psu.temp | 15 +++++++
checks/hp_psu | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 140 insertions(+), 2 deletions(-)
diff --git a/.werks/5601 b/.werks/5601
index 1a82e5f..7849b1d 100644
--- a/.werks/5601
+++ b/.werks/5601
@@ -1,10 +1,10 @@
-Title: fortinet_controller_aps: New check which monitors the number of WiFi access points
for Fortinet WLAN controller
+Title: hp_psu, hp_psu.temp: New checks to monitor the status and temperature of power
supplies for HP switches
Level: 1
Component: checks
Compatible: compat
Edition: cre
Version: 1.5.0i3
-Date: 1513762766
+Date: 1516103958
Class: feature
diff --git a/checkman/hp_psu b/checkman/hp_psu
new file mode 100644
index 0000000..e55d60d
--- /dev/null
+++ b/checkman/hp_psu
@@ -0,0 +1,15 @@
+title: HP Switches: Power Supply Status
+agents: SNMP
+catalog: hw/network/hp
+license: GPL
+distribution: check_mk
+description:
+ This check monitors the state of power supplies in HP switches. "maxstate"
+ is treated as UNKNOWN, "not present", "not plugged" and
"permanent failure" as CRIT,
+ "failed" as WARN and "powered" as OK.
+
+item:
+ The power supplies' index.
+
+inventory:
+ One service per power supply is created.
diff --git a/checkman/hp_psu.temp b/checkman/hp_psu.temp
new file mode 100644
index 0000000..4baa4e5
--- /dev/null
+++ b/checkman/hp_psu.temp
@@ -0,0 +1,15 @@
+title: HP Switches: Power Supply Temperature
+agents: SNMP
+catalog: hw/network/hp
+license: GPL
+distribution: check_mk
+description:
+ This check monitors the temperature of power supplies in HP switches.
+
+ Upper and lower temperature levels are supported.
+
+item:
+ The power supplies' index.
+
+inventory:
+ One service per power supply is created.
diff --git a/checks/hp_psu b/checks/hp_psu
new file mode 100644
index 0000000..2b21187
--- /dev/null
+++ b/checks/hp_psu
@@ -0,0 +1,108 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2018 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_hp_psu(info):
+ parsed = { index : { "temp": int(temp), "status" : dev_status}
+ for index, dev_status, temp in info }
+ return parsed
+
+
+# .--Temperature---------------------------------------------------------.
+# | _____ _ |
+# | |_ _|__ _ __ ___ _ __ ___ _ __ __ _| |_ _ _ _ __ ___ |
+# | | |/ _ \ '_ ` _ \| '_ \ / _ \ '__/ _` | __| | | | '__/ _ \
|
+# | | | __/ | | | | | |_) | __/ | | (_| | |_| |_| | | | __/ |
+# | |_|\___|_| |_| |_| .__/ \___|_| \__,_|\__|\__,_|_| \___| |
+# | |_| |
+# '----------------------------------------------------------------------'
+
+factory_settings["hp_psu_temp_default_levels"] = {
+ "levels" : (70, 80),
+}
+
+def inventory_hp_psu_temp(parsed):
+ for item in parsed:
+ yield item, {}
+
+
+def check_hp_psu_temp(item, params, parsed):
+ return check_temperature(parsed[item]["temp"], params, item)
+
+
+
+check_info['hp_psu.temp'] = {
+ 'default_levels_variable' : "hp_psu_temp_default_levels",
+ 'inventory_function' : inventory_hp_psu_temp,
+ 'check_function' : check_hp_psu_temp,
+ 'service_description' : "Temperature Power Supply %s",
+ 'group' : "temperature",
+ 'includes' : [ "temperature.include" ],
+ 'has_perfdata' : True,
+}
+
+
+#.
+# .--Status--------------------------------------------------------------.
+# | ____ _ _ |
+# | / ___|| |_ __ _| |_ _ _ ___ |
+# | \___ \| __/ _` | __| | | / __| |
+# | ___) | || (_| | |_| |_| \__ \ |
+# | |____/ \__\__,_|\__|\__,_|___/ |
+# | |
+# '----------------------------------------------------------------------'
+
+def inventory_hp_psu(parsed):
+ for item in parsed:
+ yield item, None
+
+
+def check_hp_psu(item, params, parsed):
+
+ ps_statemap = {
+ "1" : (2, "Not present"),
+ "2" : (2, "Not plugged"),
+ "3" : (0, "Powered"),
+ "4" : (1, "Failed"),
+ "5" : (2, "Permanent Failure"),
+ "6" : (3, "Max"),
+ }
+
+ return ps_statemap[parsed[item]["status"]]
+
+
+check_info['hp_psu'] = {
+ 'parse_function' : parse_hp_psu,
+ 'inventory_function' : inventory_hp_psu,
+ 'check_function' : check_hp_psu,
+ 'service_description' : 'Power Supply Status %s',
+ 'snmp_info' : ('.1.3.6.1.4.1.11.2.14.11.5.1.55.1.1.1', [
# POWERSUPPLY_MIB: hpicfPsEntry
+ OID_END, # hpicfPsBayNum
+ "2", # hpicfPsState
+ "4", # hpicfPsTemp
+ ]),
+ 'snmp_scan_function' : lambda oid: "hp" in
oid(".1.3.6.1.2.1.1.1.0").lower() and "5406rzl2" in
oid(".1.3.6.1.2.1.1.1.0").lower(),
+}