Module: check_mk
Branch: master
Commit: 2b6e8c74115a2234ce1e1e79eaaae1149fc4bf41
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=2b6e8c74115a22…
Author: Bernd Stroessenreuther <bs(a)mathias-kettner.de>
Date: Thu Jun 12 17:16:50 2014 +0200
raritan_pdu_inlet: now delivers performance data
---
.werks/993 | 8 +++
ChangeLog | 1 +
checkman/raritan_pdu_inlet | 3 +
checks/raritan_pdu_inlet | 7 +-
pnp-templates/check_mk-raritan_pdu_inlet.php | 90 ++++++++++++++++++++++++++
web/plugins/perfometer/check_mk.py | 30 +++++++++
6 files changed, 136 insertions(+), 3 deletions(-)
diff --git a/.werks/993 b/.werks/993
new file mode 100644
index 0000000..c1b7512
--- /dev/null
+++ b/.werks/993
@@ -0,0 +1,8 @@
+Title: raritan_pdu_inlet: now delivers performance data
+Level: 1
+Component: checks
+Version: 1.2.5i4
+Date: 1402586189
+Class: feature
+
+
diff --git a/ChangeLog b/ChangeLog
index b4b2e93..fd4955d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,7 @@
* 0617 adva_fsp_if: new check to monitor interfaces of the ADVA FSP 3000 scalable
optical transport solution
* 0618 adva_fsp_current: new check for the power supply units of the ADVA FSP 3000
scalable optical transport solution
* 0619 adva_fsp_temp: new check to monitor temperature and temperature trends on ADVA
scalable optical transport solutions
+ * 0993 raritan_pdu_inlet: now delivers performance data
* 0616 FIX: brocade.fan, brocade.power, brocade.temp: will now only discover services
which are not marked as absent
* 0992 FIX: zfs_arc_cache: returns OK even if values of arc meta are missing...
diff --git a/checkman/raritan_pdu_inlet b/checkman/raritan_pdu_inlet
index dcd4fbe..f615df8 100644
--- a/checkman/raritan_pdu_inlet
+++ b/checkman/raritan_pdu_inlet
@@ -16,6 +16,9 @@ description:
item:
The ID Number of the inlet and the sensor type.
+perfdata:
+ Exactly one number: The measured value together with it's unit.
+
inventory:
During inventory all available sensors of the inlet and their type are
determined. One check per sensor is created.
diff --git a/checks/raritan_pdu_inlet b/checks/raritan_pdu_inlet
index 2d7a8d1..bca7b73 100644
--- a/checks/raritan_pdu_inlet
+++ b/checks/raritan_pdu_inlet
@@ -107,7 +107,8 @@ def check_raritan_pdu_inlet(item, params, info):
status_txt = states[status]
value = float(line[5]) / 10.0**digits
message = "sensor " + name
- message += "status \"%s\", value %.2f%s" %
(status_txt,value,unit)
+ message += "status \"%s\", value %.2f %s" %
(status_txt,value,unit)
+ perfdata = [ (cap, str(value)+unit) ]
if avail != "1" or status in ( 2, 6 ):
state = 2
elif status == 4:
@@ -115,13 +116,13 @@ def check_raritan_pdu_inlet(item, params, info):
else:
state = 1
- return (state, message)
+ return (state, message, perfdata)
check_info['raritan_pdu_inlet'] = {
"inventory_function" : inventory_raritan_pdu_inlet,
"check_function" : check_raritan_pdu_inlet,
"service_description" : "Inlet Sensor %s",
- "has_perfdata" : False,
+ "has_perfdata" : True,
"snmp_info" : [
(".1.3.6.1.4.1.13742.6", # General properties of the inlet
[
diff --git a/pnp-templates/check_mk-raritan_pdu_inlet.php
b/pnp-templates/check_mk-raritan_pdu_inlet.php
new file mode 100644
index 0000000..e95169c
--- /dev/null
+++ b/pnp-templates/check_mk-raritan_pdu_inlet.php
@@ -0,0 +1,90 @@
+<?php
+#
+# Copyright (c) 2006-2010 Joerg Linge (
http://www.pnp4nagios.org)
+# Default Template used if no other template is found.
+# Don`t delete this file !
+#
+# Define some colors ..
+#
+$_WARNRULE = '#FFFF00';
+$_CRITRULE = '#FF0000';
+$_AREA = '#256aef';
+$_LINE = '#000000';
+#
+# Initial Logic ...
+#
+
+foreach ($this->DS as $KEY=>$VAL) {
+
+ $maximum = "";
+ $minimum = "";
+ $critical = "";
+ $crit_min = "";
+ $crit_max = "";
+ $warning = "";
+ $warn_max = "";
+ $warn_min = "";
+ $vlabel = " ";
+ $lower = "";
+ $upper = "";
+
+ if ($VAL['WARN'] != "" && is_numeric($VAL['WARN']) ){
+ $warning = $VAL['WARN'];
+ }
+ if ($VAL['WARN_MAX'] != "" &&
is_numeric($VAL['WARN_MAX']) ) {
+ $warn_max = $VAL['WARN_MAX'];
+ }
+ if ( $VAL['WARN_MIN'] != "" &&
is_numeric($VAL['WARN_MIN']) ) {
+ $warn_min = $VAL['WARN_MIN'];
+ }
+ if ( $VAL['CRIT'] != "" && is_numeric($VAL['CRIT']) )
{
+ $critical = $VAL['CRIT'];
+ }
+ if ( $VAL['CRIT_MAX'] != "" &&
is_numeric($VAL['CRIT_MAX']) ) {
+ $crit_max = $VAL['CRIT_MAX'];
+ }
+ if ( $VAL['CRIT_MIN'] != "" &&
is_numeric($VAL['CRIT_MIN']) ) {
+ $crit_min = $VAL['CRIT_MIN'];
+ }
+ if ( $VAL['MIN'] != "" && is_numeric($VAL['MIN']) ) {
+ $lower = " --lower=" . $VAL['MIN'];
+ $minimum = $VAL['MIN'];
+ }
+ if ( $VAL['MAX'] != "" && is_numeric($VAL['MAX']) ) {
+ $maximum = $VAL['MAX'];
+ }
+ if ($VAL['UNIT'] == "%%") {
+ $vlabel = "%";
+ $upper = " --upper=101 ";
+ $lower = " --lower=0 ";
+ }
+ else {
+ $vlabel = $VAL['UNIT'];
+ }
+
+ $opt[$KEY] = '--vertical-label "' . $vlabel . '" --title
"' . $this->MACRO['DISP_HOSTNAME'] . ' / ' .
$this->MACRO['DISP_SERVICEDESC'] . '"' . $upper . $lower;
+ $ds_name[$KEY] = $VAL['LABEL'];
+ $def[$KEY] = rrd::def ("var1", $VAL['RRDFILE'],
$VAL['DS'], "AVERAGE");
+ $def[$KEY] .= rrd::gradient("var1", "3152A5", "BDC6DE",
rrd::cut($VAL['NAME'],16), 20);
+ $def[$KEY] .= rrd::line1 ("var1", $_LINE );
+ $def[$KEY] .= rrd::gprint ("var1",
array("LAST","MAX","AVERAGE"), "%3.2lf
%S".$VAL['UNIT']);
+ if ($warning != "") {
+ $def[$KEY] .= rrd::hrule($warning, $_WARNRULE, "Warning $warning \\n");
+ }
+ if ($warn_min != "") {
+ $def[$KEY] .= rrd::hrule($warn_min, $_WARNRULE, "Warning (min) $warn_min
\\n");
+ }
+ if ($warn_max != "") {
+ $def[$KEY] .= rrd::hrule($warn_max, $_WARNRULE, "Warning (max) $warn_max
\\n");
+ }
+ if ($critical != "") {
+ $def[$KEY] .= rrd::hrule($critical, $_CRITRULE, "Critical $critical \\n");
+ }
+ if ($crit_min != "") {
+ $def[$KEY] .= rrd::hrule($crit_min, $_CRITRULE, "Critical (min) $crit_min
\\n");
+ }
+ if ($crit_max != "") {
+ $def[$KEY] .= rrd::hrule($crit_max, $_CRITRULE, "Critical (max) $crit_max
\\n");
+ }
+}
+?>
diff --git a/web/plugins/perfometer/check_mk.py b/web/plugins/perfometer/check_mk.py
index 16dfe17..76681b6 100644
--- a/web/plugins/perfometer/check_mk.py
+++ b/web/plugins/perfometer/check_mk.py
@@ -1035,3 +1035,33 @@ def perfometer_current(row, check_command, perf_data):
return display_string, perfometer_linear(current_perc, display_color)
perfometers["check_mk-adva_fsp_current"] = perfometer_current
+
+def perfometer_raritan_pdu_inlet(row, check_command, perf_data):
+ display_color = "#50f020"
+ cap = perf_data[0][0]
+ value = float(perf_data[0][1])
+ unit = perf_data[0][2]
+ display_str = perf_data[0][1] + " " + unit
+
+ if cap == "rmsCurrent":
+ return display_str, perfometer_logarithmic(value, 1, 2, display_color)
+ elif cap == "unbalancedCurrent":
+ return display_str, perfometer_linear(value, display_color)
+ elif cap == "rmsVoltage":
+ return display_str, perfometer_logarithmic(value, 500, 2, display_color)
+ elif cap == "activePower":
+ return display_str, perfometer_logarithmic(value, 20, 2, display_color)
+ elif cap == "apparentPower":
+ return display_str, perfometer_logarithmic(value, 20, 2, display_color)
+ elif cap == "powerFactor":
+ return display_str, perfometer_linear(value * 100, display_color)
+ elif cap == "activeEnergy":
+ return display_str, perfometer_logarithmic(value, 100000, 2, display_color)
+ elif cap == "apparentEnergy":
+ return display_str, perfometer_logarithmic(value, 100000, 2, display_color)
+
+ return "unimplemented" , perfometer_linear(0, "#ffffff")
+
+perfometers["check_mk-raritan_pdu_inlet"] = perfometer_raritan_pdu_inlet
+
+