2010-12-15 17:54:42 +00:00
<? php
$query = "SELECT * FROM sensors WHERE device_id = '" . $device [ 'device_id' ] . "' AND poller_type='ipmi'" ;
$ipmi_data = mysql_query ( $query );
if ( $ipmi [ 'host' ] = get_dev_attrib ( $device , 'ipmi_hostname' ))
{
$ipmi [ 'user' ] = get_dev_attrib ( $device , 'ipmi_username' );
$ipmi [ 'password' ] = get_dev_attrib ( $device , 'ipmi_password' );
2011-03-16 01:11:27 +00:00
2010-12-15 17:54:42 +00:00
echo ( "Fetching IPMI sensor data..." );
2010-12-20 21:20:47 +00:00
$results = shell_exec ( $config [ 'ipmitool' ] . " -c -H " . $ipmi [ 'host' ] . " -U " . $ipmi [ 'user' ] . " -P " . $ipmi [ 'password' ] . " sdr" );
2010-12-15 17:54:42 +00:00
echo ( " done. \n " );
foreach ( explode ( " \n " , $results ) as $row )
{
list ( $desc , $value , $type , $status ) = explode ( ',' , $row );
2011-05-09 08:18:30 +00:00
$ipmi_sensor [ $desc ][ $config [ 'ipmi_unit' ][ $type ]][ 'value' ] = $value ;
$ipmi_sensor [ $desc ][ $config [ 'ipmi_unit' ][ $type ]][ 'unit' ] = $type ;
2010-12-15 17:54:42 +00:00
}
2011-04-06 13:54:50 +00:00
while ( $ipmisensors = mysql_fetch_assoc ( $ipmi_data ))
2010-12-15 17:54:42 +00:00
{
echo ( "Updating IPMI sensor " . $ipmisensors [ 'sensor_descr' ] . "... " );
2010-12-16 11:25:02 +00:00
$sensor = $ipmi_sensor [ $ipmisensors [ 'sensor_descr' ]][ $ipmisensors [ 'sensor_class' ]][ 'value' ];
$unit = $ipmi_sensor [ $ipmisensors [ 'sensor_descr' ]][ $ipmisensors [ 'sensor_class' ]][ 'unit' ];
2010-12-15 17:54:42 +00:00
2011-04-27 16:05:41 +00:00
$rrd_file = get_sensor_rrd ( $device , $ipmisensors );
2010-12-15 17:54:42 +00:00
2011-04-27 16:05:41 +00:00
## FIXME - sensor name format change 2011/04/26 - remove this in $amount_of_time.
## We don't want to reduce performance forever because douchebags don't svn up!
$old_rrd_file = $config [ 'rrd_dir' ] . "/" . $device [ 'hostname' ] . "/" . safename ( $ipmisensors [ 'sensor_class' ] . '-' . $ipmisensors [ 'sensor_type' ] . '-' . $ipmisensors [ 'sensor_index' ] . ".rrd" );
if ( is_file ( $old_rrd_file ))
{
rename ( $old_rrd_file , $rrd_file );
}
if ( ! is_file ( $rrd_file ))
2010-12-15 17:54:42 +00:00
{
2011-04-27 16:05:41 +00:00
rrdtool_create ( $rrd_file , "--step 300 \
2010-12-16 10:24:24 +00:00
DS:sensor:GAUGE:600:-20000:20000 \
RRA:AVERAGE:0.5:1:600 \
RRA:AVERAGE:0.5:6:700 \
RRA:AVERAGE:0.5:24:775 \
RRA:AVERAGE:0.5:288:797 \
RRA:MAX:0.5:1:600 \
RRA:MAX:0.5:6:700 \
RRA:MAX:0.5:24:775 \
RRA:MAX:0.5:288:797\
RRA:MIN:0.5:1:600 \
RRA:MIN:0.5:6:700 \
RRA:MIN:0.5:24:775 \
2011-03-16 01:11:27 +00:00
RRA:MIN:0.5:288:797" );
2010-12-15 17:54:42 +00:00
}
2010-12-16 11:25:02 +00:00
echo ( $sensor . " $unit \n " );
2010-12-15 17:54:42 +00:00
2011-04-27 16:05:41 +00:00
rrdtool_update ( $rrd_file , "N: $sensor " );
2010-12-15 17:54:42 +00:00
## FIXME warnings in event & mail not done here yet!
mysql_query ( "UPDATE sensors SET sensor_current = ' $sensor ' WHERE poller_type='ipmi' AND sensor_class= AND sensor_id = '" . $ipmisensors [ 'sensor_id' ] . "'" );
}
unset ( $ipmi_sensor );
}
2011-03-16 01:11:27 +00:00
?>