2008-03-09 17:45:30 +00:00
<? php
2011-03-15 15:39:57 +00:00
function getDates ( $dayofmonth )
{
2011-03-23 09:54:56 +00:00
$dayofmonth = zeropad ( $dayofmonth );
2011-04-11 09:22:12 +00:00
$year = date ( 'Y' );
$month = date ( 'm' );
2011-03-15 15:39:57 +00:00
2011-03-23 09:54:56 +00:00
if ( date ( 'd' ) > $dayofmonth )
{
2011-09-05 17:09:50 +00:00
$newmonth = zeropad ( $month + 1 );
2011-03-23 09:54:56 +00:00
if ( $newmonth == 13 )
2011-03-15 15:39:57 +00:00
{
2011-09-05 17:09:50 +00:00
$newmonth = "01" ;
$newyear = $year + 1 ;
2011-03-23 09:54:56 +00:00
} else {
$newyear = $year ;
2011-03-15 15:39:57 +00:00
}
2011-03-23 09:54:56 +00:00
2011-09-05 17:09:50 +00:00
$lastmonth = zeropad ( $month - 1 );
if ( $lastmonth == 0 )
{
$lastmonth = 12 ;
$lastyear = $year - 1 ;
} else {
$lastyear = $year ;
}
2011-03-23 09:54:56 +00:00
$date_from = $year . $month . $dayofmonth ;
$date_to = $newyear . $newmonth . $dayofmonth ;
2011-09-05 17:09:50 +00:00
$last_from = $lastyear . $lastmonth . $dayofmonth ;
$last_to = $year . $month . $dayofmonth ;
2011-03-23 09:54:56 +00:00
}
else
{
2011-09-05 17:09:50 +00:00
$newmonth = zeropad ( $month - 1 );
2011-03-23 09:54:56 +00:00
if ( $newmonth == 0 )
2011-03-15 15:39:57 +00:00
{
2011-03-23 09:54:56 +00:00
$newmonth = 12 ;
$newyear = $year - 1 ;
} else {
$newyear = $year ;
2011-03-15 15:39:57 +00:00
}
2011-09-05 17:09:50 +00:00
$lastmonth = zeropad ( $month - 2 );
if ( $lastmonth == - 1 )
{
$lastmonth = 10 ;
$lastyear = $year - 1 ;
2011-09-20 09:55:11 +00:00
} elseif ( $lastmonth == 0 )
2011-09-05 17:09:50 +00:00
{
$lastmonth = 11 ;
$lastyear = $year - 1 ;
} else {
$lastyear = $year ;
}
2011-03-23 09:54:56 +00:00
$date_from = $newyear . $newmonth . $dayofmonth ;
$date_to = $year . $month . $dayofmonth ;
2008-03-09 17:45:30 +00:00
2011-09-05 17:09:50 +00:00
$last_from = $lastyear . $lastmonth . $dayofmonth ;
$last_to = $newyear . $newmonth . $dayofmonth ;
}
2008-03-09 17:45:30 +00:00
2011-09-05 17:09:50 +00:00
$return [ '0' ] = $date_from . "000001" ;
$return [ '1' ] = $date_to . "000000" ;
$return [ '2' ] = $last_from . "000001" ;
$return [ '3' ] = $last_to . "000000" ;
2008-03-09 17:45:30 +00:00
2011-03-23 09:54:56 +00:00
return ( $return );
2008-03-09 17:45:30 +00:00
}
2011-03-22 12:09:25 +00:00
function getValue ( $host , $port , $id , $inout )
2011-03-15 15:39:57 +00:00
{
2011-03-23 09:54:56 +00:00
global $config ;
2011-03-15 15:39:57 +00:00
2011-03-23 09:54:56 +00:00
$oid = "IF-MIB::ifHC" . $inout . "Octets." . $id ;
2011-05-12 11:58:17 +00:00
$device = dbFetchRow ( "SELECT * from `devices` WHERE `hostname` = '" . mres ( $host ) . "' LIMIT 1" );
2011-03-23 09:54:56 +00:00
$value = snmp_get ( $device , $oid , "-O qv" );
2008-03-09 17:45:30 +00:00
2011-03-23 09:54:56 +00:00
if ( ! is_numeric ( $value ))
{
$oid = "IF-MIB::if" . $inout . "Octets." . $id ;
$value = snmp_get ( $device , $oid , "-Oqv" );
}
2011-03-15 15:39:57 +00:00
2011-03-23 09:54:56 +00:00
return $value ;
2008-03-09 17:45:30 +00:00
}
2011-03-15 15:39:57 +00:00
function getLastPortCounter ( $port_id , $inout )
{
2011-05-12 11:58:17 +00:00
$rows = dbFetchCell ( "SELECT count(counter) from `port_" . mres ( $inout ) . "_measurements` WHERE `port_id`='" . mres ( $port_id ) . "'" );
2011-03-23 09:54:56 +00:00
if ( $rows > 0 )
{
2011-05-12 11:58:17 +00:00
$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' ];
2011-03-23 09:54:56 +00:00
$return [ state ] = "ok" ;
} else {
$return [ state ] = "failed" ;
}
return ( $return );
2008-03-09 17:45:30 +00:00
}
2011-03-15 15:39:57 +00:00
function getLastMeasurement ( $bill_id )
{
2011-05-12 11:58:17 +00:00
$rows = dbFetchCell ( "SELECT count(delta) from bill_data WHERE bill_id='" . mres ( $bill_id ) . "'" );
2011-03-23 09:54:56 +00:00
if ( $rows > 0 )
{
2011-05-12 11:58:17 +00:00
$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' ];
2011-03-23 09:54:56 +00:00
$return [ state ] = "ok" ;
} else {
$return [ state ] = "failed" ;
}
return ( $return );
2008-03-09 17:45:30 +00:00
}
2011-03-15 15:39:57 +00:00
function get95thin ( $bill_id , $datefrom , $dateto )
{
2011-05-12 11:58:17 +00:00
$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 );
2011-03-23 09:54:56 +00:00
$measurement_95th = round ( $measurements / 100 * 95 ) - 1 ;
2011-05-12 11:58:17 +00:00
$q_95_sql = "SELECT (in_delta / period / 1000 * 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 in_delta ASC" ;
$a_95th = dbFetchColumn ( $q_95_sql );
$m_95th = $a_95th [ $measurement_95th ];
2011-03-23 09:54:56 +00:00
return ( round ( $m_95th , 2 ));
2008-03-09 17:45:30 +00:00
}
2011-03-15 15:39:57 +00:00
function get95thout ( $bill_id , $datefrom , $dateto )
{
2011-05-12 11:58:17 +00:00
$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 );
2011-03-23 09:54:56 +00:00
$measurement_95th = round ( $measurements / 100 * 95 ) - 1 ;
2011-05-12 11:58:17 +00:00
$q_95_sql = "SELECT (out_delta / period / 1000 * 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 out_delta ASC" ;
$a_95th = dbFetchColumn ( $q_95_sql );
$m_95th = $a_95th [ $measurement_95th ];
2011-03-23 09:54:56 +00:00
return ( round ( $m_95th , 2 ));
2008-03-09 17:45:30 +00:00
}
2011-03-15 15:39:57 +00:00
function getRates ( $bill_id , $datefrom , $dateto )
{
2011-03-23 09:54:56 +00:00
$mq_text = "SELECT count(delta) FROM bill_data " ;
2011-05-12 11:58:17 +00:00
$mq_text .= " WHERE bill_id = '" . mres ( $bill_id ) . "'" ;
$mq_text .= " AND timestamp > '" . mres ( $datefrom ) . "' AND timestamp <= '" . mres ( $dateto ) . "'" ;
$measurements = dbFetchCell ( $mq_sql );
2011-03-23 09:54:56 +00:00
$measurement_95th = round ( $measurements / 100 * 95 ) - 1 ;
2011-05-12 11:58:17 +00:00
$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 ];
$mtot = getTotal ( $bill_id , $datefrom , $dateto );
2011-09-05 17:09:50 +00:00
$ptot = getPeriod ( $bill_id , $datefrom , $dateto );
2011-03-23 09:54:56 +00:00
$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' ] = round ( $mtot / 1000 / 1000 , 2 );
2011-09-05 17:09:50 +00:00
$data [ 'rate_average' ] = round ( $mtot / $ptot / 1000 * 8 , 2 );
# print_r($data);
2011-03-23 09:54:56 +00:00
return ( $data );
2008-03-09 17:45:30 +00:00
}
2011-03-15 15:39:57 +00:00
function getTotal ( $bill_id , $datefrom , $dateto )
{
2011-05-12 11:58:17 +00:00
$mtot = dbFetchCell ( "SELECT SUM(delta) FROM bill_data WHERE bill_id = '" . mres ( $bill_id ) . "' AND timestamp > '" . mres ( $datefrom ) . "' AND timestamp <= '" . mres ( $dateto ) . "'" );
2011-03-23 09:54:56 +00:00
return ( $mtot );
2008-03-09 17:45:30 +00:00
}
2011-09-05 17:09:50 +00:00
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 );
}
2011-05-12 11:58:17 +00:00
?>