2010-06-09 20:09:38 +00:00
< ? php
2010-12-15 17:54:42 +00:00
$query = " SELECT * FROM sensors WHERE sensor_class='current' AND device_id = ' " . $device [ 'device_id' ] . " ' AND poller_type='snmp' " ;
2010-06-09 20:09:38 +00:00
$current_data = mysql_query ( $query );
2011-03-16 01:11:27 +00:00
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
2011-03-16 01:11:27 +00:00
if ( ! is_file ( $currentrrd ))
{
rrdtool_create ( $currentrrd , " --step 300 \
2010-12-15 17:54:42 +00:00
DS : sensor : GAUGE : 600 :- 273 : 1000 \
2010-06-09 20:09:38 +00:00
RRA : AVERAGE : 0.5 : 1 : 1200 \
RRA : MIN : 0.5 : 12 : 2400 \
RRA : MAX : 0.5 : 12 : 2400 \
2011-03-16 01:11:27 +00:00
RRA : AVERAGE : 0.5 : 12 : 2400 " );
2010-06-09 20:09:38 +00:00
}
echo ( $current . " A \n " );
rrdtool_update ( $currentrrd , " N: $current " );
2011-03-16 01:11:27 +00:00
2010-06-09 20:09:38 +00:00
# FIXME also warn when crossing WARN level!!
2011-03-16 01:11:27 +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
}
2011-03-16 01:11:27 +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
}
2011-03-16 01:11:27 +00:00
?>