2010-06-09 20:09:38 +00:00
<? php
2010-07-07 14:34:44 +00:00
$query = "SELECT * FROM sensors WHERE sensor_class='current' AND device_id = '" . $device [ 'device_id' ] . "'" ;
2010-06-09 20:09:38 +00:00
$current_data = mysql_query ( $query );
while ( $dbcurrent = mysql_fetch_array ( $current_data )) {
2010-07-07 14:34:44 +00:00
echo ( "Checking current " . $dbcurrent [ 'sensor_descr' ] . "... " );
2010-06-09 20:09:38 +00:00
2010-07-07 14:34:44 +00:00
$current = snmp_get ( $device , $dbcurrent [ 'sensor_oid' ], "-OUqnv" , "SNMPv2-MIB" );
2010-07-02 19:58:13 +00:00
2010-07-29 18:25:11 +00:00
if ( $dbcurrent [ 'sensor_divisor' ]) { $current = $current / $dbcurrent [ 'sensor_divisor' ]; }
if ( $dbcurrent [ 'sensor_multplier' ]) { $current = $current * $dbcurrent [ 'sensor_multiplier' ]; }
2010-07-07 14:34:44 +00:00
$currentrrd = $config [ 'rrd_dir' ] . "/" . $device [ 'hostname' ] . "/" . safename ( "current-" . $dbcurrent [ 'sensor_descr' ] . ".rrd" );
2010-06-09 20:09:38 +00:00
if ( ! is_file ( $currentrrd )) {
`rrdtool create $currentrrd \
--step 300 \
DS:current:GAUGE:600:-273:1000 \
RRA:AVERAGE:0.5:1:1200 \
RRA:MIN:0.5:12:2400 \
RRA:MAX:0.5:12:2400 \
RRA:AVERAGE:0.5:12:2400` ;
}
echo ( $current . " A \n " );
rrdtool_update ( $currentrrd , "N: $current " );
# FIXME also warn when crossing WARN level!!
2010-07-07 14:34:44 +00:00
if ( $dbcurrent [ 'sensor_current' ] > $dbcurrent [ 'sensor_limit_low' ] && $current <= $dbcurrent [ 'sensor_limit_low' ])
2010-06-09 20:09:38 +00:00
{
2010-07-07 14:34:44 +00:00
$msg = "Current Alarm: " . $device [ 'hostname' ] . " " . $dbcurrent [ 'sensor_descr' ] . " is " . $current . "A (Limit " . $dbcurrent [ 'sensor_limit' ];
2010-06-09 20:09:38 +00:00
$msg .= "A) at " . date ( $config [ 'timestamp_format' ]);
2010-07-11 19:11:46 +00:00
notify ( $device , "Current Alarm: " . $device [ 'hostname' ] . " " . $dbcurrent [ 'sensor_descr' ], $msg );
2010-07-07 14:34:44 +00:00
echo ( "Alerting for " . $device [ 'hostname' ] . " " . $dbcurrent [ 'sensor_descr' ] . " \n " );
log_event ( 'Current ' . $dbcurrent [ 'sensor_descr' ] . " under threshold: " . $current . " A (< " . $dbcurrent [ 'sensor_limit_low' ] . " A)" , $device [ 'device_id' ], 'current' , $current [ 'sensor_id' ]);
2010-06-09 20:09:38 +00:00
}
2010-07-07 14:34:44 +00:00
else if ( $dbcurrent [ 'sensor_current' ] < $dbcurrent [ 'sensor_limit' ] && $current >= $dbcurrent [ 'sensor_limit' ])
2010-06-09 20:09:38 +00:00
{
2010-07-07 14:34:44 +00:00
$msg = "Current Alarm: " . $device [ 'hostname' ] . " " . $dbcurrent [ 'sensor_descr' ] . " is " . $current . "A (Limit " . $dbcurrent [ 'sensor_limit' ];
2010-06-09 20:09:38 +00:00
$msg .= "A) at " . date ( $config [ 'timestamp_format' ]);
2010-07-11 19:11:46 +00:00
notify ( $device , "Current Alarm: " . $device [ 'hostname' ] . " " . $dbcurrent [ 'sensor_descr' ], $msg );
2010-07-07 14:34:44 +00:00
echo ( "Alerting for " . $device [ 'hostname' ] . " " . $dbcurrent [ 'sensor_descr' ] . " \n " );
log_event ( 'Current ' . $dbcurrent [ 'sensor_descr' ] . " above threshold: " . $current . " A (> " . $dbcurrent [ 'sensor_limit' ] . " A)" , $device [ 'device_id' ], 'current' , $current [ 'sensor_id' ]);
2010-06-09 20:09:38 +00:00
}
2010-07-07 14:34:44 +00:00
mysql_query ( "UPDATE sensors SET sensor_current = ' $current ' WHERE sensor_class='current' AND sensor_id = '" . $dbcurrent [ 'sensor_id' ] . "'" );
2010-06-09 20:09:38 +00:00
}
?>