<?php
#
-# PNP4Nagios template for check_openmanage
+# PNP4Nagios template for check_openmanage
+#
# Author: Trond Hasle Amundsen
# Contact: t.h.amundsen@usit.uio.no
# Website: http://folk.uio.no/trondham/software/check_openmanage.html
-# Date: 2011-06-01
-#
-# $Id$
+# Date: ___DATE___
+# Version: ___VERSION___
#
-# Copyright (C) 2008-2011 Trond H. Amundsen
+# Copyright (C) 2008-2012 Trond Hasle Amundsen
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
$def_title = 'Dell OpenManage';
# Temperature unit
-function tempunit($arg)
-{
- $unit = 'unknown';
- $vlabel = 'unknown';
-
- switch ($arg) {
- default:
- $vlabel = "Celsius";
- $unit = "°C";
- break;
- case "F":
- $vlabel = "Fahrenheit";
- $unit = "°F";
- break;
- case "K":
- $vlabel = "Kelvin";
- $unit = "K";
- break;
- case "R":
- $vlabel = "Rankine";
- $unit = "°R";
- break;
+if (!defined('tempunit_defined')) {
+ define('tempunit_defined', 1);
+
+ function tempunit($arg)
+ {
+ $unit = 'unknown';
+ $vlabel = 'unknown';
+
+ switch ($arg) {
+ default:
+ $vlabel = "Celsius";
+ $unit = "°C";
+ break;
+ case "F":
+ $vlabel = "Fahrenheit";
+ $unit = "°F";
+ break;
+ case "K":
+ $vlabel = "Kelvin";
+ $unit = "K";
+ break;
+ case "R":
+ $vlabel = "Rankine";
+ $unit = "°R";
+ break;
+ }
+ return array($unit, $vlabel);
}
- return array($unit, $vlabel);
}
-# Loop through the performance data
-foreach ($this->DS as $KEY=>$VAL) {
-
- $label = $VAL['LABEL'];
-
- # TEMPERATURES (AMBIENT)
- if (preg_match('/^T/', $label) && preg_match('/Ambient/', $label)) {
-
- # Temperature unit and vertical label
- list ($unit, $vlabel) = tempunit($VAL['UNIT']);
-
- # Long label
- $label = preg_replace('/^T(\d+)_(.+)/', '$2', $label);
- $label = preg_replace('/_/', ' ', $label);
- # Short label
- $label = preg_replace('/^T(\d+)$/', 'Probe $1', $label);
-
- $ds_name[$id_temp1] = "Temperatures";
+# Determine if we're running in legacy mode
+$legacy = "no";
+foreach ($this->DS as $KEY=>$VAL) {
+ if (preg_match('/^(pwr_mon_|fan_|temp_|enclosure_|p\d+|f\d+|t\d+|e.+?t\d+)/', $VAL['LABEL'])) {
+ $legacy = "yes";
+ break;
+ }
+}
- $opt[$id_temp1] = "--slope-mode --vertical-label \"$vlabel\" --title \"$def_title: Ambient Temperature\" ";
- if(isset($def[$id_temp1])){
- $def[$id_temp1] .= "DEF:var$KEY=$rrdfile:$VAL[DS]:AVERAGE " ;
- }
- else {
- $def[$id_temp1] = "DEF:var$KEY=$rrdfile:$VAL[DS]:AVERAGE " ;
+#------------------------------------------------------
+# MAIN LOOP
+#------------------------------------------------------
+if ($legacy == "yes") { # --legacy--
+
+ $count = 0; # general counter
+ $PWRcolor = "66FF00";
+
+ # Flags
+ $visited_fan = 0;
+ $visited_temp = 0;
+ $visited_pwr = 0;
+
+ # Loop through the performance data
+ foreach ($this->DS as $KEY=>$VAL) {
+
+ # AMPERAGE PROBE
+ if(preg_match('/^pwr_mon_/', $VAL['NAME']) || preg_match('/^p\d+[aw]$/', $VAL['NAME'])) {
+
+ # Watt
+ if (preg_match('/system/', $VAL['NAME']) || preg_match('/^p\d+w$/', $VAL['NAME'])) {
+
+ # Long label
+ $VAL['NAME'] = preg_replace('/^pwr_mon_\d+_/', '', $VAL['NAME']);
+ $VAL['NAME'] = preg_replace('/_/', ' ', $VAL['NAME']);
+
+ # Short label
+ $VAL['NAME'] = preg_replace('/^p(\d+)w$/', 'Power Probe $1', $VAL['NAME']);
+
+ ++$count;
+ $ds_name[$count] = "Power Consumption";
+ $vlabel = "Watt";
+
+ $title = $ds_name[$count];
+
+ $opt[$count] = "--slope-mode --vertical-label \"$vlabel\" --title \"$def_title: $title\" ";
+
+ if(isset($def[$count])){
+ $def[$count] .= rrd::def("var".$KEY, $VAL['RRDFILE'], $VAL['DS'], "AVERAGE");
+ }
+ else {
+ $def[$count] = rrd::def("var".$KEY, $VAL['RRDFILE'], $VAL['DS'], "AVERAGE");
+ }
+ $def[$count] .= rrd::area("var$KEY", "#".$PWRcolor, $VAL['NAME']);
+ $def[$count] .= rrd::line1("var$KEY","#000000");
+ $def[$count] .= rrd::gprint("var$KEY",array("LAST", "MAX", "AVERAGE"), "%6.0lf W");
+ }
+ # Ampere
+ elseif (preg_match('/current/', $VAL['NAME']) || preg_match('/^p\d+a$/', $VAL['NAME'])) {
+
+ # Long label
+ $VAL['NAME'] = preg_replace('/^pwr_mon_\d+_/', '', $VAL['NAME']);
+ $VAL['NAME'] = preg_replace('/_/', ' ', $VAL['NAME']);
+ $VAL['NAME'] = preg_replace('/ current \d+$/', '', $VAL['NAME']);
+ $VAL['NAME'] = preg_replace('/ps/', 'PowerSupply', $VAL['NAME']);
+
+ # Short label
+ $VAL['NAME'] = preg_replace('/^p(\d+)a$/', 'Amperage Probe $1', $VAL['NAME']);
+
+ if ($visited_pwr == 0) {
+ ++$count;
+ $visited_pwr = 1;
+ }
+ $ds_name[$count] = "Amperage Probes";
+ $vlabel = "Ampere";
+
+ $title = $ds_name[$count];
+
+ $opt[$count] = "-X0 --lower-limit 0 --slope-mode --vertical-label \"$vlabel\" --title \"$def_title: $title\" ";
+ if(isset($def[$count])){
+ $def[$count] .= rrd::def("var$KEY",$VAL['RRDFILE'],$VAL['DS'],"AVERAGE") ;
+ }
+ else {
+ $def[$count] = rrd::def("var$KEY",$VAL['RRDFILE'],$VAL['DS'],"AVERAGE") ;
+ }
+ $def[$count] .= rrd::line1("var$KEY", "#".$colors[$a], $VAL['NAME']) ;
+ $def[$count] .= rrd::area("var$KEY","#".$colors[$a++]."20") ;
+ $def[$count] .= rrd::gprint("var$KEY", array("LAST", "MAX", "AVERAGE"),"%4.2lf A") ;
+ }
}
- # fancy graphing
- $def[$id_temp1] .= "CDEF:shade00_$KEY=var$KEY,1,* ";
- $def[$id_temp1] .= "CDEF:shade01_$KEY=var$KEY,0.99,* ";
- $def[$id_temp1] .= "CDEF:shade02_$KEY=var$KEY,0.92,* ";
- $def[$id_temp1] .= "CDEF:shade03_$KEY=var$KEY,0.97,* ";
- $def[$id_temp1] .= "CDEF:shade06_$KEY=var$KEY,0.94,* ";
- $def[$id_temp1] .= "CDEF:shade09_$KEY=var$KEY,0.91,* ";
- $def[$id_temp1] .= "CDEF:shade12_$KEY=var$KEY,0.88,* ";
- $def[$id_temp1] .= "CDEF:shade15_$KEY=var$KEY,0.85,* ";
- $def[$id_temp1] .= "CDEF:shade18_$KEY=var$KEY,0.82,* ";
- $def[$id_temp1] .= "CDEF:shade21_$KEY=var$KEY,0.79,* ";
- $def[$id_temp1] .= "CDEF:shade24_$KEY=var$KEY,0.76,* ";
- $def[$id_temp1] .= "CDEF:shade27_$KEY=var$KEY,0.73,* ";
- $def[$id_temp1] .= "CDEF:shade30_$KEY=var$KEY,0.70,* ";
- $def[$id_temp1] .= "AREA:shade00_$KEY#114480 ";
- $def[$id_temp1] .= "AREA:shade01_$KEY#114490 ";
- $def[$id_temp1] .= "AREA:shade02_$KEY#1144a0 ";
- $def[$id_temp1] .= "AREA:shade03_$KEY#1144a9 ";
- $def[$id_temp1] .= "AREA:shade06_$KEY#1144b3 ";
- $def[$id_temp1] .= "AREA:shade09_$KEY#1144bb ";
- $def[$id_temp1] .= "AREA:shade12_$KEY#1144c2 ";
- $def[$id_temp1] .= "AREA:shade15_$KEY#1144c8 ";
- $def[$id_temp1] .= "AREA:shade18_$KEY#1144cd ";
- $def[$id_temp1] .= "AREA:shade21_$KEY#1144d2 ";
- $def[$id_temp1] .= "AREA:shade24_$KEY#1144d6 ";
- $def[$id_temp1] .= "AREA:shade27_$KEY#1144d9 ";
- $def[$id_temp1] .= "AREA:shade30_$KEY#1144dc:\"$label\": ";
-
- $def[$id_temp1] .= "GPRINT:var$KEY:LAST:\"%5.1lf $unit last\" ";
- $def[$id_temp1] .= "GPRINT:var$KEY:MAX:\"%5.1lf $unit max\" ";
- $def[$id_temp1] .= "GPRINT:var$KEY:AVERAGE:\"%8.2lf $unit avg\\l\" ";
-
- # insert extra vertical space if we have thresholds
- if ($VAL['WARN'] != "" || $VAL['CRIT'] != "") {
- $def[$id_temp1] .= "COMMENT:\\s ";
+ # FANS (RPMs)
+ if(preg_match('/^fan_/', $VAL['NAME']) || preg_match('/^f\d+$/', $VAL['NAME'])){
+ if ($visited_fan == 0) {
+ ++$count;
+ $visited_fan = 1;
+ }
+
+ # Long label
+ $VAL['NAME'] = preg_replace('/^fan_\d+_/', '', $VAL['NAME']);
+ $VAL['NAME'] = preg_replace('/_rpm$/', '', $VAL['NAME']);
+ $VAL['NAME'] = preg_replace('/_/', ' ', $VAL['NAME']);
+
+ # Short label
+ $VAL['NAME'] = preg_replace('/^f(\d+)$/', 'Fan Probe $1', $VAL['NAME']);
+
+ $ds_name[$count] = "Fan Speed";
+
+ $opt[$count] = "-X0 --slope-mode --vertical-label \"RPMs\" --title \"$def_title: Fan Speeds\" ";
+ if(isset($def[$count])){
+ $def[$count] .= rrd::def("var$KEY", $VAL['RRDFILE'], $VAL['DS'], "AVERAGE") ;
+ }
+ else {
+ $def[$count] = rrd::def("var$KEY",$VAL['RRDFILE'],$VAL['DS'],"AVERAGE");
+ }
+ $def[$count] .= rrd::line1("var$KEY", "#".$colors[$f++],$VAL['NAME']);
+ $def[$count] .= rrd::gprint("var$KEY", array("LAST", "MAX", "AVERAGE"),"%6.0lf RPM");
}
-
- # warning threshold
- if ($VAL['WARN'] != "") {
- $warnThresh = $VAL['WARN'];
- $def[$id_temp1] .= "CDEF:warn$KEY=var$KEY,$warnThresh,GT,var$KEY,UNKN,IF ";
- $def[$id_temp1] .= "CDEF:wshade00_$KEY=warn$KEY,1,* ";
- $def[$id_temp1] .= "CDEF:wshade01_$KEY=warn$KEY,0.99,* ";
- $def[$id_temp1] .= "CDEF:wshade02_$KEY=warn$KEY,0.92,* ";
- $def[$id_temp1] .= "CDEF:wshade03_$KEY=warn$KEY,0.97,* ";
- $def[$id_temp1] .= "CDEF:wshade06_$KEY=warn$KEY,0.94,* ";
- $def[$id_temp1] .= "CDEF:wshade09_$KEY=warn$KEY,0.91,* ";
- $def[$id_temp1] .= "CDEF:wshade12_$KEY=warn$KEY,0.88,* ";
- $def[$id_temp1] .= "CDEF:wshade15_$KEY=warn$KEY,0.85,* ";
- $def[$id_temp1] .= "CDEF:wshade18_$KEY=warn$KEY,0.82,* ";
- $def[$id_temp1] .= "CDEF:wshade21_$KEY=warn$KEY,0.79,* ";
- $def[$id_temp1] .= "CDEF:wshade24_$KEY=warn$KEY,0.76,* ";
- $def[$id_temp1] .= "CDEF:wshade27_$KEY=warn$KEY,0.73,* ";
- $def[$id_temp1] .= "CDEF:wshade30_$KEY=warn$KEY,0.70,* ";
- $def[$id_temp1] .= "AREA:wshade00_$KEY#c4c400 ";
- $def[$id_temp1] .= "AREA:wshade01_$KEY#c8c800 ";
- $def[$id_temp1] .= "AREA:wshade02_$KEY#cbcb00 ";
- $def[$id_temp1] .= "AREA:wshade03_$KEY#e0e000 ";
- $def[$id_temp1] .= "AREA:wshade06_$KEY#e4e400 ";
- $def[$id_temp1] .= "AREA:wshade09_$KEY#e8e800 ";
- $def[$id_temp1] .= "AREA:wshade12_$KEY#ebeb00 ";
- $def[$id_temp1] .= "AREA:wshade15_$KEY#f0f000 ";
- $def[$id_temp1] .= "AREA:wshade18_$KEY#f4f400 ";
- $def[$id_temp1] .= "AREA:wshade21_$KEY#f8f800 ";
- $def[$id_temp1] .= "AREA:wshade24_$KEY#fbfb00 ";
- $def[$id_temp1] .= "AREA:wshade27_$KEY#fdfd00 ";
- $def[$id_temp1] .= "AREA:wshade30_$KEY#ffff00:\"Above Upper Warning Threshold\: $warnThresh $unit\\l\": ";
+
+ # TEMPERATURES (Celsius)
+ if(preg_match('/^temp_/', $VAL['NAME']) || preg_match('/^t\d+$/', $VAL['NAME'])){
+ if ($visited_temp == 0) {
+ ++$count;
+ $visited_temp = 1;
+ }
+
+ # Long label
+ $VAL['NAME'] = preg_replace('/^temp_\d+_/', '', $VAL['NAME']);
+ $VAL['NAME'] = preg_replace('/_/', ' ', $VAL['NAME']);
+
+ # Short label
+ $VAL['NAME'] = preg_replace('/^t(\d+)$/', 'Temperature Probe $1', $VAL['NAME']);
+
+ $ds_name[$count] = "Chassis Temperatures";
+
+ $warnThresh = "INF";
+ $critThresh = "INF";
+
+ if ($VAL['WARN'] != "") {
+ $warnThresh = $VAL['WARN'];
+ }
+ if ($VAL['CRIT'] != "") {
+ $critThresh = $VAL['CRIT'];
+ }
+
+ $opt[$count] = "--slope-mode --vertical-label \"Celsius\" --title \"$def_title: Chassis Temperatures\" ";
+ if(isset($def[$count])){
+ $def[$count] .= rrd::def("var$KEY",$VAL['RRDFILE'],$VAL['DS'],"AVERAGE") ;
+ }
+ else {
+ $def[$count] = rrd::def("var$KEY", $VAL['RRDFILE'],$VAL['DS'],"AVERAGE") ;
+ }
+ $def[$count] .= rrd::line1("var$KEY", "#".$colors[$t++], $VAL['NAME']);
+ $def[$count] .= rrd::gprint("var$KEY",array("LAST", "MAX", "AVERAGE"),"%6.0lf C");
}
-
- # critical threshold
- if ($VAL['CRIT'] != "") {
- $critThresh = $VAL['CRIT'];
- $def[$id_temp1] .= "CDEF:crit$KEY=var$KEY,$critThresh,GT,var$KEY,UNKN,IF ";
- $def[$id_temp1] .= "CDEF:cshade00_$KEY=crit$KEY,1,* ";
- $def[$id_temp1] .= "CDEF:cshade01_$KEY=crit$KEY,0.99,* ";
- $def[$id_temp1] .= "CDEF:cshade02_$KEY=crit$KEY,0.92,* ";
- $def[$id_temp1] .= "CDEF:cshade03_$KEY=crit$KEY,0.97,* ";
- $def[$id_temp1] .= "CDEF:cshade06_$KEY=crit$KEY,0.94,* ";
- $def[$id_temp1] .= "CDEF:cshade09_$KEY=crit$KEY,0.91,* ";
- $def[$id_temp1] .= "CDEF:cshade12_$KEY=crit$KEY,0.88,* ";
- $def[$id_temp1] .= "CDEF:cshade15_$KEY=crit$KEY,0.85,* ";
- $def[$id_temp1] .= "CDEF:cshade18_$KEY=crit$KEY,0.82,* ";
- $def[$id_temp1] .= "CDEF:cshade21_$KEY=crit$KEY,0.79,* ";
- $def[$id_temp1] .= "CDEF:cshade24_$KEY=crit$KEY,0.76,* ";
- $def[$id_temp1] .= "CDEF:cshade27_$KEY=crit$KEY,0.73,* ";
- $def[$id_temp1] .= "CDEF:cshade30_$KEY=crit$KEY,0.70,* ";
- $def[$id_temp1] .= "AREA:cshade00_$KEY#800000 ";
- $def[$id_temp1] .= "AREA:cshade01_$KEY#900000 ";
- $def[$id_temp1] .= "AREA:cshade02_$KEY#a00000 ";
- $def[$id_temp1] .= "AREA:cshade03_$KEY#a90000 ";
- $def[$id_temp1] .= "AREA:cshade06_$KEY#b30000 ";
- $def[$id_temp1] .= "AREA:cshade09_$KEY#bb0000 ";
- $def[$id_temp1] .= "AREA:cshade12_$KEY#c20000 ";
- $def[$id_temp1] .= "AREA:cshade15_$KEY#c80000 ";
- $def[$id_temp1] .= "AREA:cshade18_$KEY#cd0000 ";
- $def[$id_temp1] .= "AREA:cshade21_$KEY#d20000 ";
- $def[$id_temp1] .= "AREA:cshade24_$KEY#d60000 ";
- $def[$id_temp1] .= "AREA:cshade27_$KEY#d90000 ";
- $def[$id_temp1] .= "AREA:cshade30_$KEY#dc0000:\"Above Upper Critical Threshold\: $critThresh $unit\\l\": ";
+
+ # ENCLOSURE TEMPERATURES (Celsius)
+ if(preg_match('/^enclosure_(?P<id>.+?)_temp_\d+$/', $VAL['NAME'], $matches)
+ || preg_match('/^e(?P<id>.+?)t\d+$/', $VAL['NAME'], $matches)) {
+ $this_id = $matches['id'];
+
+ if ($enclosure_id != $this_id) {
+ $e = 0;
+ ++$count;
+ $enclosure_id = $this_id;
+ }
+
+ # Long label
+ $VAL['NAME'] = preg_replace('/^enclosure_.+?_temp_(\d+)$/', 'Probe $1', $VAL['NAME']);
+
+ # Short label
+ $VAL['NAME'] = preg_replace('/^e.+?t(\d+)$/', 'Probe $1', $VAL['NAME']);
+
+ $ds_name[$count] = "Enclosure $enclosure_id Temperatures";
+
+ $warnThresh = "INF";
+ $critThresh = "INF";
+
+ if ($VAL['WARN'] != "") {
+ $warnThresh = $VAL['WARN'];
+ }
+ if ($VAL['CRIT'] != "") {
+ $critThresh = $VAL['CRIT'];
+ }
+
+ $opt[$count] = "--slope-mode --vertical-label \"Celsius\" --title \"$def_title: Enclosure $enclosure_id Temperatures\" ";
+
+ if(isset($def[$count])){
+ $def[$count] .= rrd::def("var$KEY", $VAL['RRDFILE'],$VAL['DS'],"AVERAGE") ;
+ }
+ else {
+ $def[$count] = rrd::def("var$KEY",$VAL['RRDFILE'],$VAL['DS'],"AVERAGE") ;
+ }
+ $def[$count] .= rrd::line1("var$KEY","#".$colors[$e++],$VAL['NAME']) ;
+ $def[$count] .= rrd::gprint("var$KEY", array("LAST", "MAX", "AVERAGE"),"%6.0lf C");
}
}
+}
+else { # --new--
+
+ # Loop through the performance data
+ foreach ($this->DS as $KEY=>$VAL) {
+
+ $label = $VAL['LABEL'];
+
+ # TEMPERATURES (AMBIENT)
+ if (preg_match('/^T/', $label) && preg_match('/Ambient/', $label)) {
+
+ # Temperature unit and vertical label
+ list ($unit, $vlabel) = tempunit($VAL['UNIT']);
+
+ # Long label
+ $label = preg_replace('/^T(\d+)_(.+)/', '$2', $label);
+ $label = preg_replace('/_/', ' ', $label);
+
+ # Short label
+ $label = preg_replace('/^T(\d+)$/', 'Probe $1', $label);
+
+ $ds_name[$id_temp1] = "Temperatures";
+
+ $opt[$id_temp1] = "--slope-mode --vertical-label \"$vlabel\" --title \"$def_title: Ambient Temperature\" ";
+ if(isset($def[$id_temp1])){
+ $def[$id_temp1] .= rrd::def("var$KEY",$VAL['RRDFILE'],$VAL['DS'],"AVERAGE") ;
+ }
+ else {
+ $def[$id_temp1] = rrd::def("var$KEY", $VAL['RRDFILE'],$VAL['DS'],"AVERAGE") ;
+ }
+
+ # fancy graphing
+ $def[$id_temp1] .= rrd::gradient("var$KEY","#114480", "#1144dc", $label, 10, "50%");
+ $def[$id_temp1] .= rrd::gprint("var$KEY",array("LAST", "MAX", "AVERAGE"),"%5.1lf $unit");
+
+ # insert extra vertical space if we have thresholds
+ if ($VAL['WARN'] != "" || $VAL['CRIT'] != "") {
+ $def[$id_temp1] .= "COMMENT:\\s ";
+ }
+
+ # warning threshold
+ if ($VAL['WARN'] != "") {
+ $warnThresh = $VAL['WARN'];
+ $def[$id_temp1] .= rrd::cdef("warn$KEY", "var$KEY,$warnThresh,GT,var$KEY,UNKN,IF");
+ $def[$id_temp1] .= rrd::gradient("warn$KEY","#c4c400", "#ffff00","Above Upper Warning Threshold\: $warnThresh $unit\\l", 10, "50%");
+ }
+
+ # critical threshold
+ if ($VAL['CRIT'] != "") {
+ $critThresh = $VAL['CRIT'];
+ $def[$id_temp1] .= rrd::cdef("crit$KEY", "var$KEY,$critThresh,GT,var$KEY,UNKN,IF");
+ $def[$id_temp1] .= rrd::gradient("crit$KEY","#800000", "#dc0000","Above Upper Critical Threshold\: $critThresh $unit\\l", 10, "50%");
+ }
+ }
- # TEMPERATURES
- if (preg_match('/^T/', $label) && !preg_match('/Ambient/', $label)) {
+ # TEMPERATURES
+ if (preg_match('/^T/', $label) && !preg_match('/Ambient/', $label)) {
- # Temperature unit and vertical label
- list ($unit, $vlabel) = tempunit($VAL['UNIT']);
+ # Temperature unit and vertical label
+ list ($unit, $vlabel) = tempunit($VAL['UNIT']);
- # Long label
- $label = preg_replace('/^T(\d+)_(.+)/', '$2', $label);
- $label = preg_replace('/_/', ' ', $label);
+ # Long label
+ $label = preg_replace('/^T(\d+)_(.+)/', '$2', $label);
+ $label = preg_replace('/_/', ' ', $label);
- # Short label
- $label = preg_replace('/^T(\d+)$/', 'Probe $1', $label);
+ # Short label
+ $label = preg_replace('/^T(\d+)$/', 'Probe $1', $label);
- $ds_name[$id_temp2] = "Temperatures";
+ $ds_name[$id_temp2] = "Temperatures";
- $opt[$id_temp2] = "--slope-mode --vertical-label \"$vlabel\" --title \"$def_title: Chassis Temperatures\" ";
- if (isset($def[$id_temp2])) {
- $def[$id_temp2] .= "DEF:var$KEY=$rrdfile:$VAL[DS]:AVERAGE " ;
- }
- else {
- $def[$id_temp2] = "DEF:var$KEY=$rrdfile:$VAL[DS]:AVERAGE " ;
+ $opt[$id_temp2] = "--slope-mode --vertical-label \"$vlabel\" --title \"$def_title: Chassis Temperatures\" ";
+ if (isset($def[$id_temp2])) {
+ $def[$id_temp2] .= rrd::def("var$KEY", $VAL['RRDFILE'],$VAL['DS'],"AVERAGE") ;
+ }
+ else {
+ $def[$id_temp2] = rrd::def("var$KEY",$VAL['RRDFILE'],$VAL['DS'],"AVERAGE") ;
+ }
+ $def[$id_temp2] .= rrd::line1("var$KEY", "#".$colors[$t++], rrd::cut($label,20) );
+ $def[$id_temp2] .= rrd::gprint("var$KEY", array("LAST", "MAX", "AVERAGE"), "%4.1lf $unit");
}
- $space = strlen($label) < 20 ? str_repeat(' ', 20 - strlen($label)) : ' ';
- $def[$id_temp2] .= "LINE:var$KEY#".$colors[$t++].":\"$label$space\" " ;
- $def[$id_temp2] .= "GPRINT:var$KEY:LAST:\"%4.1lf $unit last\" ";
- $def[$id_temp2] .= "GPRINT:var$KEY:MAX:\"%6.1lf $unit max\" ";
- $def[$id_temp2] .= "GPRINT:var$KEY:AVERAGE:\"%8.2lf $unit avg\\l\" ";
- }
-
- # WATTAGE PROBE
- if (preg_match('/^W/', $label)) {
-
- # Long label
- $label = preg_replace('/^W(\d+)_(.+)/', '$2', $label);
- $label = preg_replace('/_/', ' ', $label);
-
- # Short label
- $label = preg_replace('/^W(\d+)$/', 'Probe $1', $label);
- $ds_name[$id_watt] = "Power Consumption";
- $vlabel = "Watt";
+ # WATTAGE PROBE
+ if (preg_match('/^W/', $label)) {
- $title = $ds_name[$id_watt];
+ # Long label
+ $label = preg_replace('/^W(\d+)_(.+)/', '$2', $label);
+ $label = preg_replace('/_/', ' ', $label);
- $opt[$id_watt] = "--slope-mode --vertical-label \"$vlabel\" --title \"$def_title: $title\" ";
+ # Short label
+ $label = preg_replace('/^W(\d+)$/', 'Probe $1', $label);
- if(isset($def[$id_watt])){
- $def[$id_watt] .= "DEF:var$KEY=$rrdfile:$VAL[DS]:AVERAGE " ;
- }
- else {
- $def[$id_watt] = "DEF:var$KEY=$rrdfile:$VAL[DS]:AVERAGE " ;
- }
-
- # calculate kWh and BTU
- $def[$id_watt] .= "VDEF:tot$KEY=var$KEY,TOTAL ";
- $def[$id_watt] .= "CDEF:kwh$KEY=var$KEY,POP,tot$KEY,1000,/,60,/,60,/ ";
- $def[$id_watt] .= "CDEF:btu$KEY=kwh$KEY,3412.3,* ";
-
- # fancy graphing
- $def[$id_watt] .= "CDEF:shade00_$KEY=var$KEY,1,* ";
- $def[$id_watt] .= "CDEF:shade01_$KEY=var$KEY,0.99,* ";
- $def[$id_watt] .= "CDEF:shade02_$KEY=var$KEY,0.92,* ";
- $def[$id_watt] .= "CDEF:shade03_$KEY=var$KEY,0.97,* ";
- $def[$id_watt] .= "CDEF:shade06_$KEY=var$KEY,0.94,* ";
- $def[$id_watt] .= "CDEF:shade09_$KEY=var$KEY,0.91,* ";
- $def[$id_watt] .= "CDEF:shade12_$KEY=var$KEY,0.88,* ";
- $def[$id_watt] .= "CDEF:shade15_$KEY=var$KEY,0.85,* ";
- $def[$id_watt] .= "CDEF:shade18_$KEY=var$KEY,0.82,* ";
- $def[$id_watt] .= "CDEF:shade21_$KEY=var$KEY,0.79,* ";
- $def[$id_watt] .= "CDEF:shade24_$KEY=var$KEY,0.76,* ";
- $def[$id_watt] .= "CDEF:shade27_$KEY=var$KEY,0.73,* ";
- $def[$id_watt] .= "CDEF:shade30_$KEY=var$KEY,0.70,* ";
-
- $def[$id_watt] .= "AREA:shade00_$KEY#800000 ";
- $def[$id_watt] .= "AREA:shade01_$KEY#900000 ";
- $def[$id_watt] .= "AREA:shade02_$KEY#a00000 ";
- $def[$id_watt] .= "AREA:shade03_$KEY#a90000 ";
- $def[$id_watt] .= "AREA:shade06_$KEY#b30000 ";
- $def[$id_watt] .= "AREA:shade09_$KEY#bb0000 ";
- $def[$id_watt] .= "AREA:shade12_$KEY#c20000 ";
- $def[$id_watt] .= "AREA:shade15_$KEY#c80000 ";
- $def[$id_watt] .= "AREA:shade18_$KEY#cd0000 ";
- $def[$id_watt] .= "AREA:shade21_$KEY#d20000 ";
- $def[$id_watt] .= "AREA:shade24_$KEY#d60000 ";
- $def[$id_watt] .= "AREA:shade27_$KEY#d90000 ";
- $def[$id_watt] .= "AREA:shade30_$KEY#dc0000:\"$label\": ";
-
- # print avg, max and min
- $def[$id_watt] .= "GPRINT:var$KEY:LAST:\"%6.0lf W last\" ";
- $def[$id_watt] .= "GPRINT:var$KEY:MAX:\"%6.0lf W max\" ";
- $def[$id_watt] .= "GPRINT:var$KEY:AVERAGE:\"%8.2lf W avg\l\" ";
-
- # print kWh and BTU for time period
- $def[$id_watt] .= "COMMENT:\\s ";
- $def[$id_watt] .= "COMMENT:\" Total power used in time period\:\" ";
- $def[$id_watt] .= "GPRINT:kwh$KEY:AVERAGE:\"%10.2lf kWh\l\" ";
- $def[$id_watt] .= "COMMENT:\" \" ";
- $def[$id_watt] .= "GPRINT:btu$KEY:AVERAGE:\"%10.2lf BTU\l\" ";
- }
+ $ds_name[$id_watt] = "Power Consumption";
+ $vlabel = "Watt";
- # AMPERAGE PROBE
- if (preg_match('/^A/', $label)) {
+ $title = $ds_name[$id_watt];
- $first = 0;
- if ($visited_amp == 0) {
- $first = 1;
- $visited_amp = 1;
- }
+ $opt[$id_watt] = "--slope-mode --vertical-label \"$vlabel\" --title \"$def_title: $title\" ";
- # Long label
- $label = preg_replace('/^A(\d+)_(.+)/', '$2', $label);
- $label = preg_replace('/_/', ' ', $label);
+ if(isset($def[$id_watt])){
+ $def[$id_watt] .= rrd::def("var$KEY",$VAL['RRDFILE'], $VAL['DS'], "AVERAGE") ;
+ }
+ else {
+ $def[$id_watt] = rrd::def("var$KEY",$VAL['RRDFILE'],$VAL['DS'],"AVERAGE") ;
+ }
- # Short label
- $label = preg_replace('/^A(\d+)$/', 'Probe $1', $label);
+ # calculate kWh and BTU
+ $def[$id_watt] .= "VDEF:tot$KEY=var$KEY,TOTAL ";
+ # rrd:vdef is broken in pnp4nagios 0.6.13 # $def[$id_watt] .= rrd::vdef("tot$KEY","var$KEY,TOTAL");
+ $def[$id_watt] .= rrd::cdef("kwh$KEY","var$KEY,POP,tot$KEY,1000,/,60,/,60,/");
+ $def[$id_watt] .= rrd::cdef("btu$KEY","kwh$KEY,3412.3,*");
- $ds_name[$id_amp] = "Amperage Probes";
- $vlabel = "Ampere";
+ # fancy graphing
+ $def[$id_watt] .= rrd::gradient("var$KEY","#800000","#dc0000","$label", 10, "50%");
- $title = $ds_name[$id_amp];
+ # print avg, max and min
+ $def[$id_watt] .= rrd::gprint("var$KEY", array("LAST", "MAX", "AVERAGE"),"%6.0lf W");
- $opt[$id_amp] = "-X0 --lower-limit 0 --slope-mode --vertical-label \"$vlabel\" --title \"$def_title: $title\" ";
- if(isset($def[$id_amp])){
- $def[$id_amp] .= "DEF:var$KEY=$rrdfile:$VAL[DS]:AVERAGE ";
- }
- else {
- $def[$id_amp] = "DEF:var$KEY=$rrdfile:$VAL[DS]:AVERAGE ";
+ # print kWh and BTU for time period
+ $def[$id_watt] .= rrd::comment("\\s");
+ $def[$id_watt] .= rrd::comment(" Total power used in time period\:");
+ $def[$id_watt] .= rrd::gprint("kwh$KEY","AVERAGE","%10.2lf kWh\l");
+ $def[$id_watt] .= rrd::comment(" ");
+ $def[$id_watt] .= rrd::gprint("btu$KEY","AVERAGE","%10.2lf BTU\l");
}
- $space = strlen($label) < 16 ? str_repeat(' ', 16 - strlen($label)) : ' ';
-
- $def[$id_amp] .= "CDEF:tier$KEY=var$KEY,10,/ ";
- $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."b7::STACK ";
- $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."bf::STACK ";
- $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."c7::STACK ";
- $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."cf::STACK ";
- $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."d7::STACK ";
- $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."df::STACK ";
- $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."e7::STACK ";
- $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."ef::STACK ";
- $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."f7::STACK ";
- $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."ff:\"$label$space\":STACK ";
- $a++;
-
- if ($first) {
- $def[$id_amp] .= "CDEF:sum$KEY=var$KEY,0,+ ";
+ # AMPERAGE PROBE
+ if (preg_match('/^A/', $label)) {
+
+ $first = 0;
+ if ($visited_amp == 0) {
+ $first = 1;
+ $visited_amp = 1;
+ }
+
+ # Long label
+ $label = preg_replace('/^A(\d+)_(.+)/', '$2', $label);
+ $label = preg_replace('/_/', ' ', $label);
+
+ # Short label
+ $label = preg_replace('/^A(\d+)$/', 'Probe $1', $label);
+
+ $ds_name[$id_amp] = "Amperage Probes";
+ $vlabel = "Ampere";
+
+ $title = $ds_name[$id_amp];
+
+ $opt[$id_amp] = "-X0 --lower-limit 0 --slope-mode --vertical-label \"$vlabel\" --title \"$def_title: $title\" ";
+ if(isset($def[$id_amp])){
+ $def[$id_amp] .= rrd::def("var$KEY",$VAL['RRDFILE'], $VAL['DS'], "AVERAGE");
+ }
+ else {
+ $def[$id_amp] = rrd::def("var$KEY",$VAL['RRDFILE'], $VAL['DS'], "AVERAGE");
+ }
+
+ $space = strlen($label) < 16 ? str_repeat(' ', 16 - strlen($label)) : ' ';
+
+ $def[$id_amp] .= rrd::cdef("tier$KEY", "var$KEY,10,/");
+ $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."b7::STACK ";
+ $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."bf::STACK ";
+ $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."c7::STACK ";
+ $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."cf::STACK ";
+ $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."d7::STACK ";
+ $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."df::STACK ";
+ $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."e7::STACK ";
+ $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."ef::STACK ";
+ $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."f7::STACK ";
+ $def[$id_amp] .= "AREA:tier$KEY#".$colors[$a]."ff:\"$label$space\":STACK ";
+ $a++;
+
+ if ($first) {
+ $def[$id_amp] .= rrd::cdef("sum$KEY", "var$KEY,0,+");
+ }
+ else {
+ $def[$id_amp] .= rrd::cdef("sum$KEY", "sum".($KEY-1).",var$KEY,+");
+ }
+ $def[$id_amp] .= rrd::line1("sum$KEY", "#555555");
+ $def[$id_amp] .= rrd::gprint("var$KEY", array("LAST", "MAX", "AVERAGE"),"%6.1lf A") ;
}
- else {
- $def[$id_amp] .= "CDEF:sum$KEY=sum".($KEY-1).",var$KEY,+ ";
- }
- $def[$id_amp] .= "LINE1:sum$KEY#555555 ";
- $def[$id_amp] .= "GPRINT:var$KEY:LAST:\"%6.1lf A last\" ";
- $def[$id_amp] .= "GPRINT:var$KEY:MAX:\"%6.1lf A max\" ";
- $def[$id_amp] .= "GPRINT:var$KEY:AVERAGE:\"%8.3lf A avg\\l\" ";
- }
-
- # VOLTAGE PROBE
- if (preg_match('/^V/', $label)) {
+ # VOLTAGE PROBE
+ if (preg_match('/^V/', $label)) {
- # Long label
- $label = preg_replace('/^V(\d+)_(.+)/', '$2', $label);
- $label = preg_replace('/_/', ' ', $label);
+ # Long label
+ $label = preg_replace('/^V(\d+)_(.+)/', '$2', $label);
+ $label = preg_replace('/_/', ' ', $label);
- # Short label
- $label = preg_replace('/^V(\d+)$/', 'Probe $1', $label);
+ # Short label
+ $label = preg_replace('/^V(\d+)$/', 'Probe $1', $label);
- $ds_name[$id_volt] = "Voltage Probes";
- $vlabel = "Volts";
-
- $title = $ds_name[$id_volt];
-
- $opt[$id_volt] = "--slope-mode --vertical-label \"$vlabel\" --title \"$def_title: $title\" ";
- if(isset($def[$id_volt])){
- $def[$id_volt] .= "DEF:var$KEY=$rrdfile:$VAL[DS]:AVERAGE " ;
- }
- else {
- $def[$id_volt] = "DEF:var$KEY=$rrdfile:$VAL[DS]:AVERAGE " ;
+ $ds_name[$id_volt] = "Voltage Probes";
+ $vlabel = "Volts";
+
+ $title = $ds_name[$id_volt];
+
+ $opt[$id_volt] = "--slope-mode --vertical-label \"$vlabel\" --title \"$def_title: $title\" ";
+ if(isset($def[$id_volt])){
+ $def[$id_volt] .= rrd::def("var$KEY", $VAL['RRDFILE'], $VAL['DS'],"AVERAGE");
+ }
+ else {
+ $def[$id_volt] = rrd::def("var$KEY",$VAL['RRDFILE'],$VAL['DS'],"AVERAGE");
+ }
+ $def[$id_volt] .= rrd::line1("var$KEY", "#".$colors[$v++], rrd::cut($label,18) ) ;
+ $def[$id_volt] .= rrd::gprint("var$KEY", array("LAST", "MAX", "AVERAGE"),"%8.2lf V");
}
- $space = strlen($label) < 18 ? str_repeat(' ', 18 - strlen($label)) : ' ';
- $def[$id_volt] .= "LINE:var$KEY#".$colors[$v++].":\"$label$space\" " ;
- $def[$id_volt] .= "GPRINT:var$KEY:LAST:\"%8.2lf A last\" ";
- $def[$id_volt] .= "GPRINT:var$KEY:MAX:\"%8.2lf A max\" ";
- $def[$id_volt] .= "GPRINT:var$KEY:AVERAGE:\"%10.4lf A avg\\l\" ";
- }
- # FANS (RPMs)
- if (preg_match('/^F/', $label)) {
+ # FANS (RPMs)
+ if (preg_match('/^F/', $label)) {
- # Long label
- $label = preg_replace('/^F(\d+)_(.+)/', '$2', $label);
- $label = preg_replace('/_/', ' ', $label);
+ # Long label
+ $label = preg_replace('/^F(\d+)_(.+)/', '$2', $label);
+ $label = preg_replace('/_/', ' ', $label);
- # Short label
- $label = preg_replace('/^F(\d+)$/', 'Probe $1', $label);
+ # Short label
+ $label = preg_replace('/^F(\d+)$/', 'Probe $1', $label);
- $ds_name[$id_fan] = "Fan Probes";
+ $ds_name[$id_fan] = "Fan Probes";
- $opt[$id_fan] = "-X0 --slope-mode --vertical-label \"RPMs\" --title \"$def_title: Fan Speeds\" ";
- if(isset($def[$id_fan])){
- $def[$id_fan] .= "DEF:var$KEY=$rrdfile:$VAL[DS]:AVERAGE " ;
+ $opt[$id_fan] = "-X0 --slope-mode --vertical-label \"RPMs\" --title \"$def_title: Fan Speeds\" ";
+ if(isset($def[$id_fan])){
+ $def[$id_fan] .= rrd::def("var$KEY",$VAL['RRDFILE'],$VAL['DS'], "AVERAGE") ;
+ }
+ else {
+ $def[$id_fan] = rrd::def("var$KEY",$VAL['RRDFILE'],$VAL['DS'], "AVERAGE") ;
+ }
+ $def[$id_fan] .= rrd::line1("var$KEY", "#".$colors[$f++], rrd::cut($label,18) ) ;
+ $def[$id_fan] .= rrd::gprint("var$KEY", array("LAST", "MAX", "AVERAGE"), "%6.0lf RPM");
}
- else {
- $def[$id_fan] = "DEF:var$KEY=$rrdfile:$VAL[DS]:AVERAGE " ;
- }
- $space = strlen($label) < 16 ? str_repeat(' ', 16 - strlen($label)) : ' ';
- $def[$id_fan] .= "LINE:var$KEY#".$colors[$f++].":\"$label$space\" " ;
- $def[$id_fan] .= "GPRINT:var$KEY:LAST:\"%6.0lf RPM last\" ";
- $def[$id_fan] .= "GPRINT:var$KEY:MAX:\"%6.0lf RPM max\" ";
- $def[$id_fan] .= "GPRINT:var$KEY:AVERAGE:\"%9.2lf RPM avg\\l\" ";
- }
- # ENCLOSURE TEMPERATURES (Celsius)
- if (preg_match('/^E(?P<encl>.+?)_t(emp_)?(?P<probe>\d+)/', $label, $matches)) {
+ # ENCLOSURE TEMPERATURES (Celsius)
+ if (preg_match('/^E(?P<encl>.+?)_t(emp_)?(?P<probe>\d+)/', $label, $matches)) {
- $this_id = $matches['encl'];
- $probe_index = $matches['probe'];
+ # Temperature unit and vertical label
+ list ($unit, $vlabel) = tempunit($VAL['UNIT']);
- if ($enclosure_id != $this_id) {
- $e = 0;
- $id_enc++;
- $enclosure_id = $this_id;
- }
+ $this_id = $matches['encl'];
+ $probe_index = $matches['probe'];
- # Label
- $label = "Probe $probe_index";
+ if ($enclosure_id != $this_id) {
+ $e = 0;
+ $id_enc++;
+ $enclosure_id = $this_id;
+ }
- $ds_name[$id_enc] = "Enclosure $enclosure_id Temperatures";
+ # Label
+ $label = "Probe $probe_index";
- $opt[$id_enc] = "--slope-mode --vertical-label \"Celsius\" --title \"$def_title: Enclosure $enclosure_id Temperatures\" ";
+ $ds_name[$id_enc] = "Enclosure $enclosure_id Temperatures";
- if(isset($def[$id_enc])){
- $def[$id_enc] .= "DEF:var$KEY=$rrdfile:$VAL[DS]:AVERAGE " ;
- }
- else {
- $def[$id_enc] = "DEF:var$KEY=$rrdfile:$VAL[DS]:AVERAGE " ;
+ $opt[$id_enc] = "--slope-mode --vertical-label \"$vlabel\" --title \"$def_title: Enclosure $enclosure_id Temperatures\" ";
+
+ if(isset($def[$id_enc])){
+ $def[$id_enc] .= rrd::def("var$KEY", $VAL['RRDFILE'],$VAL['DS'], "AVERAGE") ;
+ }
+ else {
+ $def[$id_enc] = rrd::def("var$KEY", $VAL['RRDFILE'],$VAL['DS'], "AVERAGE") ;
+ }
+ $def[$id_enc] .= rrd::line1("var$KEY", "#".$colors[$e++], rrd::cut($label, 14) );
+ $def[$id_enc] .= rrd::gprint("var$KEY", array("LAST", "MAX", "AVERAGE"),"%6.1lf $unit");
}
- $space = strlen($label) < 14 ? str_repeat(' ', 14 - strlen($label)) : ' ';
- $def[$id_enc] .= "LINE:var$KEY#".$colors[$e++].":\"$label$space\" " ;
- $def[$id_enc] .= "GPRINT:var$KEY:LAST:\"%6.1lf °C last\" ";
- $def[$id_enc] .= "GPRINT:var$KEY:MAX:\"%6.1lf °C max\" ";
- $def[$id_enc] .= "GPRINT:var$KEY:AVERAGE:\"%8.2lf °C avg\\l\" ";
}
}
+
?>