Example #1
0
function CollectData($bill_id)
{
    $port_query = mysql_query("select * from bill_ports as P, ports as I, devices as D where P.bill_id='{$bill_id}' AND I.interface_id = P.port_id AND D.device_id = I.device_id");
    while ($port_data = mysql_fetch_array($port_query)) {
        unset($port_in_measurement);
        unset($port_in_delta);
        unset($last_port_in_measurement);
        unset($last_port_in_delta);
        unset($port_out_measurement);
        unset($port_out_delta);
        unset($last_port_out_measurement);
        unset($last_port_out_delta);
        $port_id = $port_data['port_id'];
        $host = $port_data['hostname'];
        $port = $port_data['port'];
        echo "\nPolling " . $port_data['ifDescr'] . " on " . $port_data['hostname'] . "\n";
        $port_in_measurement = trim(getValue($host, $port_data['community'], $port, $port_data['ifIndex'], "In"));
        $port_out_measurement = trim(getValue($host, $port_data['community'], $port, $port_data['ifIndex'], "Out"));
        echo "{$port_in_measurement} and {$port_out_measurement} \n";
        $now = mysql_result(mysql_query("SELECT NOW()"), 0);
        $last_data = getLastPortCounter($port_id, in);
        if ($last_data[state] == "ok") {
            $last_port_in_measurement = $last_data[counter];
            $last_port_in_delta = $last_data[delta];
            if ($port_in_measurement > $last_port_in_measurement) {
                $port_in_delta = $port_in_measurement - $last_port_in_measurement;
            } else {
                $port_in_delta = $last_port_in_delta;
            }
        } else {
            $port_in_delta = '0';
        }
        $pim = "INSERT INTO port_in_measurements (port_id,timestamp,counter,delta) VALUES ({$port_id}, '{$now}', {$port_in_measurement}, {$port_in_delta}) ";
        #echo("$pim \n");
        $pim_query = mysql_query($pim);
        unset($last_data, $last_port_in_measurement, $last_port_in_delta);
        $last_data = getLastPortCounter($port_id, out);
        if ($last_data[state] == "ok") {
            $last_port_out_measurement = $last_data[counter];
            $last_port_out_delta = $last_data[delta];
            if ($port_out_measurement > $last_port_out_measurement) {
                $port_out_delta = $port_out_measurement - $last_port_out_measurement;
            } else {
                $port_out_delta = $last_port_out_delta;
            }
        } else {
            $port_out_delta = '0';
        }
        $pom = "INSERT INTO port_out_measurements (port_id,timestamp,counter,delta) VALUES ({$port_id}, '{$now}', {$port_out_measurement}, {$port_out_delta}) ";
        #echo("$pom \n");
        $pom_query = mysql_query($pom);
        unset($last_data, $last_port_in_measurement, $last_port_in_delta);
        $delta = $delta + $port_in_delta + $port_out_delta;
        $in_delta = $in_delta + $port_in_delta;
        $out_delta = $out_delta + $port_out_delta;
        unset($port_in_delta, $port_out_delta, $prev_delta, $prev_timestamp, $period);
    }
    $last_data = getLastMeasurement($bill_id);
    if ($last_data[state] == "ok") {
        $prev_delta = $last_data[delta];
        $prev_in_delta = $last_data[in_delta];
        $prev_out_delta = $last_data[out_delta];
        $prev_timestamp = $last_data[timestamp];
        $period = mysql_result(mysql_query("SELECT UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) - UNIX_TIMESTAMP('{$prev_timestamp}')"), 0);
    } else {
        $prev_delta = '0';
        $period = '0';
        $prev_in_delta = '0';
        $prev_out_delta = '0';
    }
    if ($delta < '0') {
        $delta = $prev_delta;
        $in_delta = $prev_in_delta;
        $out_delta = $prev_out_delta;
    }
    $insert_string = "INSERT INTO bill_data (bill_id,timestamp,period,delta,in_delta,out_delta) VALUES ('{$bill_id}','{$now}','{$period}','{$delta}','{$in_delta}','{$out_delta}')";
    #echo("$insert_string\n");
    $insert_measurement = mysql_query($insert_string);
}
Example #2
0
function CollectData($bill_id)
{
    $port_list = dbFetchRows('SELECT * FROM `bill_ports` as P, `ports` as I, `devices` as D WHERE P.bill_id=? AND I.port_id = P.port_id AND D.device_id = I.device_id', array($bill_id));
    $now = dbFetchCell('SELECT NOW()');
    $delta = 0;
    $in_delta = 0;
    $out_delta = 0;
    foreach ($port_list as $port_data) {
        $port_id = $port_data['port_id'];
        $host = $port_data['hostname'];
        $port = $port_data['port'];
        echo "  Polling {$port_data['ifName']} ({$port_data['ifDescr']}) on {$port_data['hostname']}\n";
        $port_data['in_measurement'] = getValue($port_data['hostname'], $port_data['port'], $port_data['ifIndex'], 'In');
        $port_data['out_measurement'] = getValue($port_data['hostname'], $port_data['port'], $port_data['ifIndex'], 'Out');
        $last_counters = getLastPortCounter($port_id, $bill_id);
        if ($last_counters['state'] == 'ok') {
            $port_data['last_in_measurement'] = $last_counters[in_counter];
            $port_data['last_in_delta'] = $last_counters[in_delta];
            $port_data['last_out_measurement'] = $last_counters[out_counter];
            $port_data['last_out_delta'] = $last_counters[out_delta];
            $tmp_period = dbFetchCell("SELECT UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) - UNIX_TIMESTAMP('" . mres($last_counters['timestamp']) . "')");
            if ($port_data['ifSpeed'] > 0 && delta_to_bits($port_data['in_measurement'], $tmp_period) - delta_to_bits($port_data['last_in_measurement'], $tmp_period) > $port_data['ifSpeed']) {
                $port_data['in_delta'] = $port_data['last_in_delta'];
            } elseif ($port_data['in_measurement'] >= $port_data['last_in_measurement']) {
                $port_data['in_delta'] = $port_data['in_measurement'] - $port_data['last_in_measurement'];
            } else {
                $port_data['in_delta'] = $port_data['last_in_delta'];
            }
            if ($port_data['ifSpeed'] > 0 && delta_to_bits($port_data['out_measurement'], $tmp_period) - delta_to_bits($port_data['last_out_measurement'], $tmp_period) > $port_data['ifSpeed']) {
                $port_data['out_delta'] = $port_data['last_out_delta'];
            } elseif ($port_data['out_measurement'] >= $port_data['last_out_measurement']) {
                $port_data['out_delta'] = $port_data['out_measurement'] - $port_data['last_out_measurement'];
            } else {
                $port_data['out_delta'] = $port_data['last_out_delta'];
            }
        } else {
            $port_data['in_delta'] = '0';
            $port_data['out_delta'] = '0';
        }
        $fields = array('timestamp' => $now, 'in_counter' => $port_data['in_measurement'], 'out_counter' => $port_data['out_measurement'], 'in_delta' => $port_data['in_delta'], 'out_delta' => $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');
        }
        $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'];
    }
    //end foreach
    $last_data = getLastMeasurement($bill_id);
    if ($last_data[state] == 'ok') {
        $prev_delta = $last_data[delta];
        $prev_in_delta = $last_data[in_delta];
        $prev_out_delta = $last_data[out_delta];
        $prev_timestamp = $last_data[timestamp];
        $period = dbFetchCell("SELECT UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) - UNIX_TIMESTAMP('" . mres($prev_timestamp) . "')");
    } else {
        $prev_delta = '0';
        $period = '0';
        $prev_in_delta = '0';
        $prev_out_delta = '0';
    }
    if ($delta < '0') {
        $delta = $prev_delta;
        $in_delta = $prev_in_delta;
        $out_delta = $prev_out_delta;
    }
    if (!empty($period) && $period < '0') {
        logfile("BILLING: negative period! id:{$bill_id} period:{$period} delta:{$delta} in_delta:{$in_delta} out_delta:{$out_delta}");
    } else {
        dbInsert(array('bill_id' => $bill_id, 'timestamp' => $now, 'period' => $period, 'delta' => $delta, 'in_delta' => $in_delta, 'out_delta' => $out_delta), 'bill_data');
    }
}
Example #3
0
function CollectData($bill_id)
{
    $port_list = dbFetchRows("SELECT * FROM `bill_ports` as P, `ports` as I, `devices` as D WHERE P.bill_id=? AND I.port_id = P.port_id AND D.device_id = I.device_id", array($bill_id));
    print_r($port_list);
    $now = dbFetchCell("SELECT NOW()");
    foreach ($port_list as $port_data) {
        $port_id = $port_data['port_id'];
        $host = $port_data['hostname'];
        $port = $port_data['port'];
        echo "\nPolling " . $port_data['ifDescr'] . " on " . $port_data['hostname'] . "\n";
        $port_data['in_measurement'] = getValue($port_data['hostname'], $port_data['port'], $port_data['ifIndex'], "In");
        $port_data['out_measurement'] = getValue($port_data['hostname'], $port_data['port'], $port_data['ifIndex'], "Out");
        $last_data = getLastPortCounter($port_id, in);
        if ($last_data['state'] == "ok") {
            $port_data['last_in_measurement'] = $last_data[counter];
            $port_data['last_in_delta'] = $last_data[delta];
            if ($port_data['in_measurement'] > $port_data['last_in_measurement']) {
                $port_data['in_delta'] = $port_data['in_measurement'] - $port_data['last_in_measurement'];
            } else {
                $port_data['in_delta'] = $port_data['last_in_delta'];
            }
        } else {
            $port_data['in_delta'] = '0';
        }
        dbInsert(array('port_id' => $port_id, 'timestamp' => $now, 'counter' => $port_data['in_measurement'], 'delta' => $port_data['in_delta']), 'port_in_measurements');
        $last_data = getLastPortCounter($port_id, out);
        if ($last_data[state] == "ok") {
            $port_data['last_out_measurement'] = $last_data[counter];
            $port_data['last_out_delta'] = $last_data[delta];
            if ($port_data['out_measurement'] > $port_data['last_out_measurement']) {
                $port_data['out_delta'] = $port_data['out_measurement'] - $port_data['last_out_measurement'];
            } else {
                $port_data['out_delta'] = $port_data['last_out_delta'];
            }
        } else {
            $port_data['out_delta'] = '0';
        }
        dbInsert(array('port_id' => $port_id, 'timestamp' => $now, 'counter' => $port_data['out_measurement'], 'delta' => $port_data['out_delta']), 'port_out_measurements');
        $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'];
    }
    $last_data = getLastMeasurement($bill_id);
    if ($last_data[state] == "ok") {
        $prev_delta = $last_data[delta];
        $prev_in_delta = $last_data[in_delta];
        $prev_out_delta = $last_data[out_delta];
        $prev_timestamp = $last_data[timestamp];
        $period = dbFetchCell("SELECT UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) - UNIX_TIMESTAMP('" . mres($prev_timestamp) . "')");
    } else {
        $prev_delta = '0';
        $period = '0';
        $prev_in_delta = '0';
        $prev_out_delta = '0';
    }
    if ($delta < '0') {
        $delta = $prev_delta;
        $in_delta = $prev_in_delta;
        $out_delta = $prev_out_delta;
    }
    if ($period < "0") {
        logfile("BILLING: negative period! id:{$bill_id} period:{$period} delta:{$delta} in_delta:{$in_delta} out_delta:{$out_delta}");
    } else {
        dbInsert(array('bill_id' => $bill_id, 'timestamp' => $now, 'period' => $period, 'delta' => $delta, 'in_delta' => $in_delta, 'out_delta' => $out_delta), 'bill_data');
    }
}