librenms/includes/billing.php
Tom Laermans 4fad2ccc68 syntaxer run
git-svn-id: http://www.observium.org/svn/observer/trunk@2967 61d68cd4-352d-0410-923a-c4978735b2b8
2012-04-05 16:44:58 +00:00

204 lines
6.7 KiB
PHP

<?php
function format_bytes_billing($value)
{
global $config;
return format_number($value, $config['billing']['base'])."B";
}
function format_bytes_billing_short($value)
{
global $config;
return format_number($value, $config['billing']['base'], 2, 3);
}
function getDates($dayofmonth, $months=0)
{
$dayofmonth = zeropad($dayofmonth);
$year = date('Y');
$month = date('m');
if (date('d') > $dayofmonth) // Billing day is past, so it is next month
{
$date_end = date_create($year.'-'.$month.'-'.$dayofmonth);
$date_start = date_create($year.'-'.$month.'-'.$dayofmonth);
date_add($date_end, date_interval_create_from_date_string('1 month'));
} else { // Billing day will happen this month, therefore started last month
$date_end = date_create($year.'-'.$month.'-'.$dayofmonth);
$date_start = date_create($year.'-'.$month.'-'.$dayofmonth);
date_sub($date_start, date_interval_create_from_date_string('1 month'));
}
if ($months > 0)
{
date_sub($date_start, date_interval_create_from_date_string($months.' month'));
date_sub($date_end, date_interval_create_from_date_string($months.' month'));
}
# date_sub($date_start, date_interval_create_from_date_string('1 month'));
date_sub($date_end, date_interval_create_from_date_string('1 day'));
$date_from = date_format($date_start, 'Ymd') . "000000";
$date_to = date_format($date_end, 'Ymd') . "235959";
date_sub($date_start, date_interval_create_from_date_string('1 month'));
date_sub($date_end, date_interval_create_from_date_string('1 month'));
$last_from = date_format($date_start, 'Ymd') . "000000";
$last_to = date_format($date_end, 'Ymd') . "235959";
$return['0'] = $date_from;
$return['1'] = $date_to;
$return['2'] = $last_from;
$return['3'] = $last_to;
return($return);
}
function getValue($host, $port, $id, $inout)
{
global $config;
$oid = "IF-MIB::ifHC" . $inout . "Octets." . $id;
$device = dbFetchRow("SELECT * from `devices` WHERE `hostname` = '".mres($host)."' LIMIT 1");
$value = snmp_get($device, $oid, "-O qv");
if (!is_numeric($value))
{
$oid = "IF-MIB::if" . $inout . "Octets." . $id;
$value = snmp_get($device, $oid, "-Oqv");
}
return $value;
}
function getLastPortCounter($port_id,$inout)
{
$rows = dbFetchCell("SELECT count(counter) from `port_" . mres($inout) . "_measurements` WHERE `port_id`='" . mres($port_id)."'");
if ($rows > 0)
{
$row = dbFetchRow("SELECT counter,delta FROM `port_".mres($inout)."_measurements` WHERE `port_id`='".mres($port_id)."' ORDER BY timestamp DESC");
$return[counter] = $row['counter'];
$return[delta] = $row['delta'];
$return[state] = "ok";
} else {
$return[state] = "failed";
}
return($return);
}
function getLastMeasurement($bill_id)
{
$rows = dbFetchCell("SELECT count(delta) from bill_data WHERE bill_id='".mres($bill_id)."'");
if ($rows > 0)
{
$row = dbFetchRow("SELECT timestamp,delta,in_delta,out_delta FROM bill_data WHERE bill_id='".mres($bill_id)."' ORDER BY timestamp DESC");
$return[delta] = $row['delta'];
$return[delta_in] = $row['delta_in'];
$return[delta_out] = $row['delta_out'];
$return[timestamp] = $row['timestamp'];
$return[state] = "ok";
} else {
$return[state] = "failed";
}
return($return);
}
function get95thin($bill_id,$datefrom,$dateto)
{
$mq_sql = "SELECT count(delta) FROM bill_data WHERE bill_id = '".mres($bill_id)."'";
$mq_sql .= " AND timestamp > '".mres($datefrom)."' AND timestamp <= '".mres($dateto)."'";
$measurements = dbFetchCell($mq_sql);
$measurement_95th = round($measurements /100 * 95) - 1;
$q_95_sql = "SELECT (in_delta / period * 8) AS rate FROM bill_data WHERE bill_id = '".mres($bill_id)."'";
$q_95_sql .= " AND timestamp > '".mres($datefrom)."' AND timestamp <= '".mres($dateto)."' ORDER BY rate ASC";
$a_95th = dbFetchColumn($q_95_sql);
$m_95th = $a_95th[$measurement_95th];
return(round($m_95th, 2));
}
function get95thout($bill_id,$datefrom,$dateto)
{
$mq_sql = "SELECT count(delta) FROM bill_data WHERE bill_id = '".mres($bill_id)."'";
$mq_sql .= " AND timestamp > '".mres($datefrom)."' AND timestamp <= '".mres($dateto)."'";
$measurements = dbFetchCell($mq_sql);
$measurement_95th = round($measurements /100 * 95) - 1;
$q_95_sql = "SELECT (out_delta / period * 8) AS rate FROM bill_data WHERE bill_id = '".mres($bill_id)."'";
$q_95_sql .= " AND timestamp > '".mres($datefrom)."' AND timestamp <= '".mres($dateto)."' ORDER BY rate ASC";
$a_95th = dbFetchColumn($q_95_sql);
$m_95th = $a_95th[$measurement_95th];
return(round($m_95th, 2));
}
function getRates($bill_id,$datefrom,$dateto)
{
$mq_text = "SELECT count(delta) FROM bill_data ";
$mq_text .= " WHERE bill_id = '".mres($bill_id)."'";
$mq_text .= " AND timestamp > '".mres($datefrom)."' AND timestamp <= '".mres($dateto)."'";
$measurements = dbFetchCell($mq_sql);
$measurement_95th = round($measurements /100 * 95) - 1;
$q_95_sql = "SELECT delta FROM bill_data WHERE bill_id = '".mres($bill_id)."'";
$q_95_sql .= " AND timestamp > '".mres($datefrom)."' AND timestamp <= '".mres($dateto)."' ORDER BY delta ASC";
$a_95th = dbFetchColumn($q_95_sql);
$m_95th = $a_95th[$measurement_95th];
$sum_data = getSum($bill_id,$datefrom,$dateto);
$mtot = $sum_data['total'];
$mtot_in = $sum_data['inbound'];
$mtot_out = $sum_data['outbound'];
$ptot = $sum_data['period'];
$data['rate_95th_in'] = get95thIn($bill_id,$datefrom,$dateto);
$data['rate_95th_out'] = get95thOut($bill_id,$datefrom,$dateto);
if ($data['rate_95th_out'] > $data['rate_95th_in'])
{
$data['rate_95th'] = $data['rate_95th_out'];
$data['dir_95th'] = 'out';
} else {
$data['rate_95th'] = $data['rate_95th_in'];
$data['dir_95th'] = 'in';
}
$data['total_data'] = $mtot;
$data['total_data_in'] = $mtot_in;
$data['total_data_out'] = $mtot_out;
$data['rate_average'] = $mtot / $ptot * 8;
# print_r($data);
return($data);
}
function getTotal($bill_id,$datefrom,$dateto)
{
$mtot = dbFetchCell("SELECT SUM(delta) FROM bill_data WHERE bill_id = '".mres($bill_id)."' AND timestamp > '".mres($datefrom)."' AND timestamp <= '".mres($dateto)."'");
return($mtot);
}
function getSum($bill_id,$datefrom,$dateto)
{
$sum = dbFetchRow("SELECT SUM(period) as period, SUM(delta) as total, SUM(in_delta) as inbound, SUM(out_delta) as outbound FROM bill_data WHERE bill_id = '".mres($bill_id)."' AND timestamp > '".mres($datefrom)."' AND timestamp <= '".mres($dateto)."'");
return($sum);
}
function getPeriod($bill_id,$datefrom,$dateto)
{
$ptot = dbFetchCell("SELECT SUM(period) FROM bill_data WHERE bill_id = '".mres($bill_id)."' AND timestamp > '".mres($datefrom)."' AND timestamp <= '".mres($dateto)."'");
return($ptot);
}
?>