SNMP counters validation (#11037)
* SNMP counters validation Validation step added before counters are updated in table 'bill_port_counters'. Avoid wrong data to be added to the table in case the SNMP polling function return an invalid value. check --> https://community.librenms.org/t/wrong-billing-record-in-delta/8540 * SNMP counters validation #11037 --> Fixed lin identation. *Updated message to be printed out in logs. * SNMP counters validation #11037 Fixed blank spaces. * SNMP counters validation #11037 Removing white spaces * SNMP counters validation #11037 Sorry, more white spaces...
This commit is contained in:
parent
2960fc10f5
commit
21a8ebc31e
|
@ -88,15 +88,30 @@ foreach ($query->get(['bill_id', 'bill_name']) as $bill) {
|
|||
$port_data['in_delta'] = '0';
|
||||
$port_data['out_delta'] = '0';
|
||||
}
|
||||
//////////////////////////////////CountersValidation$DB-Update
|
||||
echo "\nDB SNMP counters received.\n";
|
||||
echo " in_measurement: ",$port_data['in_measurement']," out_measurement: ",$port_data['out_measurement'],"\n";
|
||||
echo " The data types are --> in_measurement:".gettype($port_data['in_measurement'])." and out_measurement: ".gettype($port_data['out_measurement'])."\n";
|
||||
//For debugging
|
||||
logfile("\n****$now: ".$bill->bill_name."\nDB SNMP counters received.");
|
||||
logfile("in_measurement: ".$port_data['in_measurement']." out_measurement: ".$port_data['out_measurement']."\nThe data types are. in_measurement:".gettype($port_data['in_measurement'])." and out_measurement: ".gettype($port_data['out_measurement']));
|
||||
logfile("IN_delta: ".$port_data['in_delta']." OUT_delta: ".$port_data['out_delta']."\nLast_IN_delta: ".$port_data['last_in_delta']." last_OUT_delta: ".$port_data['last_out_delta']);
|
||||
|
||||
// NOTE: casting to string for mysqli bug (fixed by mysqlnd)
|
||||
$fields = array('timestamp' => $now, 'in_counter' => (string)set_numeric($port_data['in_measurement']), 'out_counter' => (string)set_numeric($port_data['out_measurement']), 'in_delta' => (string)set_numeric($port_data['in_delta']), 'out_delta' => (string)set_numeric($port_data['out_delta']));
|
||||
if (dbUpdate($fields, 'bill_port_counters', "`port_id`='" . mres($port_id) . "' AND `bill_id`='$bill_id'") == 0) {
|
||||
$fields['bill_id'] = $bill_id;
|
||||
$fields['port_id'] = $port_id;
|
||||
dbInsert($fields, 'bill_port_counters');
|
||||
if (is_numeric($port_data['in_measurement']) && is_numeric($port_data['out_measurement'])) {
|
||||
echo "Nice, valid counters 'in/out_measurement', lets use them\n";
|
||||
logfile("Nice, valid counters 'in/out_measurement', lets use them");
|
||||
// NOTE: casting to string for mysqli bug (fixed by mysqlnd)
|
||||
$fields = array('timestamp' => $now, 'in_counter' => (string)set_numeric($port_data['in_measurement']), 'out_counter' => (string)set_numeric($port_data['out_measurement']), 'in_delta' => (string)set_numeric($port_data['in_delta']), 'out_delta' => (string)set_numeric($port_data['out_delta']));
|
||||
if (dbUpdate($fields, 'bill_port_counters', "`port_id`='" . mres($port_id) . "' AND `bill_id`='$bill_id'") == 0) {
|
||||
$fields['bill_id'] = $bill_id;
|
||||
$fields['port_id'] = $port_id;
|
||||
dbInsert($fields, 'bill_port_counters');
|
||||
}
|
||||
} else {
|
||||
echo "WATCH out! - Wrong counters. Table 'bill_port_counters' not updated\n";
|
||||
logfile("WATCH out! - Wrong counters. Table 'bill_port_counters' not updated");
|
||||
}
|
||||
|
||||
////////////////////////////////EndCountersValidation&DB-Update
|
||||
$delta = ($delta + $port_data['in_delta'] + $port_data['out_delta']);
|
||||
$in_delta = ($in_delta + $port_data['in_delta']);
|
||||
$out_delta = ($out_delta + $port_data['out_delta']);
|
||||
|
|
Loading…
Reference in New Issue