Ejemplo n.º 1
0
// $count = round($counttot / 260, 0);
// if ($count <= 1) { $count = 2; }
// $max = dbFetchCell("SELECT delta FROM bill_data WHERE bill_id = ? AND `timestamp` >= FROM_UNIXTIME( ? ) AND `timestamp` <= FROM_UNIXTIME( ? ) ORDER BY delta DESC LIMIT 0,1", array($bill_id, $start, $end));
// if ($max > 1000000) { $div = "1000000"; $yaxis = "Mbit/sec";  } else { $div = "1000"; $yaxis = "Kbit/sec"; }
$i = '0';
foreach (dbFetch('SELECT *, UNIX_TIMESTAMP(timestamp) AS formatted_date FROM bill_data WHERE bill_id = ? AND `timestamp` >= FROM_UNIXTIME( ? ) AND `timestamp` <= FROM_UNIXTIME( ? ) ORDER BY timestamp ASC', array($bill_id, $start, $end)) as $row) {
    $timestamp = $row['formatted_date'];
    if (!$first) {
        $first = $timestamp;
    }
    $delta = $row['delta'];
    $period = $row['period'];
    $in_delta = $row['in_delta'];
    $out_delta = $row['out_delta'];
    $in_value = delta_to_bits($in_delta, $period);
    $out_value = delta_to_bits($out_delta, $period);
    $last = $timestamp;
    $iter_in += $in_delta;
    $iter_out += $out_delta;
    $iter_period += $period;
    if ($iter == $count) {
        $out_data[$i] = round($iter_out * 8 / $iter_period, 2);
        $out_data_inv[$i] = $out_data[$i] * -1;
        $in_data[$i] = round($iter_in * 8 / $iter_period, 2);
        $tot_data[$i] = $out_data[$i] + $in_data[$i];
        $tot_data_inv[$i] = $tot_data[$i] * -1;
        if ($tot_data[$i] > $max_value) {
            $max_value = $tot_data[$i];
        }
        $ticks[$i] = $timestamp;
        $per_data[$i] = $rate_95th;
Ejemplo n.º 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');
    }
}