X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=check_openmanage.php;h=0b19c5c469dac444d5aff6df305cd48c1aa5440e;hb=d2acbd6c9f4f972a39cf866ef2108e5c942a5805;hp=c93f2555f392233472f774c62a121f973daab9bb;hpb=e73243492f22c86e09c9c47231aa37e938171d98;p=check_openmanage.git diff --git a/check_openmanage.php b/check_openmanage.php index c93f255..0b19c5c 100644 --- a/check_openmanage.php +++ b/check_openmanage.php @@ -1,14 +1,14 @@ 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.+?)_temp_\d+$/', $VAL['NAME'], $matches) + || preg_match('/^e(?P.+?)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.+?)_t(emp_)?(?P\d+)/', $label, $matches)) { + # ENCLOSURE TEMPERATURES (Celsius) + if (preg_match('/^E(?P.+?)_t(emp_)?(?P\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\" "; } } + ?>