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 );
2010-12-16 11:25:02 +00:00
$ipmi_sensor [ $desc ][ $ipmi_unit [ $type ]][ 'value' ] = $value ;
$ipmi_sensor [ $desc ][ $ipmi_unit [ $type ]][ 'unit' ] = $type ;
2010-12-15 17:54:42 +00:00
}
2011-03-16 01:11:27 +00:00
while ( $ipmisensors = mysql_fetch_array ( $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
$sensorrrd = $config [ 'rrd_dir' ] . " / " . $device [ 'hostname' ] . " / " . safename ( $ipmisensors [ 'sensor_class' ] . '-' . $ipmisensors [ 'sensor_type' ] . '-' . $ipmisensors [ 'sensor_index' ] . " .rrd " );
if ( ! is_file ( $sensorrrd ))
{
2011-03-16 01:11:27 +00:00
rrdtool_create ( $sensorrrd , " --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
rrdtool_update ( $sensorrrd , " N: $sensor " );
## 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
?>