query(" SELECT SRC,DST, (sum(AVG_IN)*8/count(*))/1000000 AS AVG_IN, (sum(AVG_OUT)*8/count(*))/1000000 AS AVG_OUT, (max(MAX_IN)*8)/1000000 AS MAX_IN, (max(MAX_OUT)*8)/1000000 AS MAX_OUT, BANDWIDTH FROM $table_name WHERE datetime between to_date($start_time,'yyyymmdd') and to_date($end_time,'yyyymmdd') GROUP BY SRC,DST,BANDWIDTH "); $record=0; #record total monitor line if ($table_name == "MRTG_TRAFFIC_INTERNATIONAL") $network_class_id=1; if ($table_name == "MRTG_TRAFFIC_TWAREN") $network_class_id=2; if ($table_name == "MRTG_TRAFFIC_TANET") $network_class_id=3; while($result = $db->fetchArray($sth)){ $if_src=ociresult($sth,"SRC"); $if_dst=ociresult($sth,"DST"); $query_index = $db->query(" SELECT NETWORK_BACKBONE_SRC_NAME,NETWORK_BACKBONE_DST_NAME,NETWORK_BACKBONE_SRC_CNAME,NETWORK_BACKBONE_DST_CNAME FROM TRAFFIC_NETWORK_BACKBONE WHERE NETWORK_BACKBONE_SRC_NAME='$if_src' and NETWORK_BACKBONE_DST_NAME='$if_dst' and NETWORK_CLASS_ID=$network_class_id "); $result_index = $db->fetchArray($query_index); if ($result_index != NULL) { $if_src_name=ociresult($query_index,"NETWORK_BACKBONE_SRC_CNAME"); $if_dst_name=ociresult($query_index,"NETWORK_BACKBONE_DST_CNAME"); } else{ $if_src_name = $if_src; $if_dst_name = $if_dst; } $backbone_bw=ociresult($sth,"BANDWIDTH"); $avg_out=ociresult($sth,"AVG_IN"); $avg_out_ut=(ociresult($sth,"AVG_IN")/$backbone_bw)*100;#average out-traffic utilization $max_out=ociresult($sth,"MAX_IN"); $max_out_ut=(ociresult($sth,"MAX_IN")/$backbone_bw)*100; $avg_in=ociresult($sth,"AVG_OUT"); $avg_in_ut=(ociresult($sth,"AVG_OUT")/$backbone_bw)*100;#average in-traffic utilization $max_in=ociresult($sth,"MAX_OUT"); $max_in_ut=(ociresult($sth,"MAX_OUT")/$backbone_bw)*100; $total_avg=($avg_in+$avg_out)/2; $total_avg_ut=($total_avg/$backbone_bw)*100; $Traffic_Info[$record][0]=$if_src_name.'<->'.$if_dst_name; $Traffic_Info[$record][1]=$backbone_bw; $Traffic_Info[$record][2]=sprintf("%.3f",$avg_in); $Traffic_Info[$record][3]=sprintf("%.3f",$avg_in_ut).'%'; $Traffic_Info[$record][4]=sprintf("%.3f",$max_in); $Traffic_Info[$record][5]=sprintf("%.3f",$max_in_ut).'%'; $Traffic_Info[$record][6]=sprintf("%.3f",$avg_out); $Traffic_Info[$record][7]=sprintf("%.3f",$avg_out_ut).'%'; $Traffic_Info[$record][8]=sprintf("%.3f",$max_out); $Traffic_Info[$record][9]=sprintf("%.3f",$max_out_ut).'%'; $Traffic_Info[$record][10]=sprintf("%.3f",$total_avg); $Traffic_Info[$record][11]=sprintf("%.3f",$total_avg_ut).'%'; if( $max_out >= $max_in){ $Traffic_Info[$record][12]=sprintf("%.3f",$max_out); $Traffic_Info[$record][13]=sprintf("%.3f",$max_out_ut).'%'; }else{ $Traffic_Info[$record][12]=sprintf("%.3f",$max_in); $Traffic_Info[$record][13]=sprintf("%.3f",$max_in_ut).'%'; } $record=$record+1; } return $Traffic_Info; } function getNetCollectorSRCInfo($network_class_id = 0) { if(!$network_class_id) return; global $db; $query = $db->query(" select distinct NETWORK_BACKBONE_SRC_NAME, NETWORK_BACKBONE_SRC_CNAME from TRAFFIC_NETWORK_BACKBONE where NETWORK_CLASS_ID = $network_class_id order by NETWORK_BACKBONE_SRC_NAME "); $net_collector_src_list = array(); $record=0; while ($result = $db->fetchArray($query)) { $net_collector_src_list[$record][SRC] = $result[NETWORK_BACKBONE_SRC_NAME]; $net_collector_src_list[$record][SRC_CNAME] = $result[NETWORK_BACKBONE_SRC_CNAME]; $record=$record+1; } return $net_collector_src_list; } function getNetCollectorDSTInfo($network_class_id = 0,$collector_src = '') { if(!$network_class_id && !$collector_src) return; global $db; $query = $db->query(" select distinct NETWORK_BACKBONE_DST_NAME,NETWORK_BACKBONE_DST_CNAME from TRAFFIC_NETWORK_BACKBONE where NETWORK_CLASS_ID = $network_class_id and NETWORK_BACKBONE_SRC_NAME = '$collector_src' order by NETWORK_BACKBONE_DST_NAME "); $net_collector_dst_list = array(); $record=0; while ($result = $db->fetchArray($query)) { $net_collector_dst_list[$record][DST] = $result[NETWORK_BACKBONE_DST_NAME]; $net_collector_dst_list[$record][DST_CNAME] = $result[NETWORK_BACKBONE_DST_CNAME]; $record=$record+1; } return $net_collector_dst_list; } function getBackboneInfo($network_class_id = 0,$collector_src = '',$collector_dst = '') { if(!$network_class_id) return; global $db; $Backbone_info = array(); if($collector_src) $and_string = " and NETWORK_BACKBONE_SRC_NAME = '$collector_src'"; if($collector_dst) $and_string = $and_string . " and NETWORK_BACKBONE_DST_NAME = '$collector_dst'"; $query = $db->query(" SELECT NETWORK_BACKBONE_ID, NETWORK_BACKBONE_SRC_NAME,NETWORK_BACKBONE_DST_NAME,NETWORK_BACKBONE_SRC_CNAME,NETWORK_BACKBONE_DST_CNAME,NETWORK_BACKBONE_BANDWIDTH FROM TRAFFIC_NETWORK_BACKBONE WHERE NETWORK_CLASS_ID = $network_class_id $and_string"); $record=0; while($result = $db->fetchArray($query)){ $Backbone_info[$record][NETWORK_BACKBONE_SRC_NAME] = $result[NETWORK_BACKBONE_SRC_NAME]; $Backbone_info[$record][NETWORK_BACKBONE_DST_NAME] = $result[NETWORK_BACKBONE_DST_NAME]; $Backbone_info[$record][NETWORK_BACKBONE_SRC_CNAME] = $result[NETWORK_BACKBONE_SRC_CNAME]; $Backbone_info[$record][NETWORK_BACKBONE_DST_CNAME] = $result[NETWORK_BACKBONE_DST_CNAME]; $Backbone_info[$record][NETWORK_BACKBONE_BANDWIDTH] = $result[NETWORK_BACKBONE_BANDWIDTH]; $record=$record+1; } return $Backbone_info; } function getUtilizationInfo($start_time='',$end_time='',$table_name='',$src='',$dst='') { if(!$start_time&&!$end_time) return; global $db; $query = $db->query(" SELECT ROUND( (((sum(AVG_IN)*8/count(*))/1000000) + ((sum(AVG_OUT)*8/count(*))/1000000))/2 ,1) AS AVG FROM $table_name WHERE SRC = '$src' AND DST = '$dst' AND (datetime between to_date($start_time,'yyyymmdd') and to_date($end_time,'yyyymmdd')) "); $result = $db->fetchArray($query); return $result; } function getTraffTrend($query_time='',$network_class_id=0,$get_start_time=''){ $net_obj=new TRAFFIC_TREND; //creat a new object $count=0; $week_first_record=0; if($get_start_time == "2006_04_16"){ $week_first_record=1; // we need to show the first record for the weekly show type } foreach($query_time as $item){ $net_obj->traff_day("$item"); $start_time = substr($item,0,4).substr($item,5,2).substr($item,8,2).'000000'; $end_time = substr($item,11,4).substr($item,16,2).substr($item,19,2).'235959'; list($Traffic_Info,$num_line_path) = TRAFFIC::getTraffTrendInfo($start_time,$end_time,$network_class_id); $avg_sum=0; $max_one=0; foreach($Traffic_Info as $item2){ $avg_sum += $item2["avg_io"]; $temp=$item2["max_io"]; if($temp > $max_one){ // find the max traffic line path $max_one=$temp; $max_line_path=$item2["line_path"]; //record the max traffic line path } }//(foreach($Traffic_Info)) if($num_line_path == 0){ $avg_traffic = sprintf("%.1f",0); }else{ $avg_traffic = sprintf("%.1f",$avg_sum/$num_line_path); } $temp_avg_traffic[$count] = $avg_traffic; //the first week's avg_grow_rate=0 and not used, but if the start_time=2006_04_17, this avg_grow_rate //will show out if($count == 0){ $net_obj->avg_grow_rate("0 %"); }else{ if($temp_avg_traffic[$count-1] == 0){ $avg_grow_rate =sprintf("%.3f", 0); }else{ $avg_grow_rate =sprintf("%.3f", ( ($temp_avg_traffic[$count]-$temp_avg_traffic[$count-1])/$temp_avg_traffic[$count-1])*100); } $net_obj->avg_grow_rate("$avg_grow_rate %"); } $net_obj->avg_traff("$avg_traffic"); $max_one=sprintf("%.1f",$max_one); $net_obj->max_traff("$max_one"); $net_obj->max_line_path("$max_line_path"); //if($count==0 && $week_first_record==0){ // $count+=1; // continue; //} $network[]=$net_obj; $count+=1; }//(foreach($query_time)) return $network; } function getTraffTrendInfo($start_time='',$end_time='',$network_class_id=0){ if(!$start_time&&!$end_time) return; global $db; $result = array(); $result_index = array(); $Traffic_Info = array(); $network_class_info = NETWORK_CLASS::getNetworkClassInfo($network_class_id); $table_name = "MRTG_TRAFFIC_".$network_class_info[NETWORK_CLASS_NAME]; $sth = $db->query(" SELECT SRC, DST, (sum(AVG_IN)*8/count(*))/1000000 AS AVG_IN, (sum(AVG_OUT)*8/count(*))/1000000 AS AVG_OUT, (max(MAX_IN)*8)/1000000 AS MAX_IN, (max(MAX_OUT)*8)/1000000 AS MAX_OUT FROM $table_name WHERE datetime between to_date($start_time,'yyyymmdd hh24miss') and to_date($end_time,'yyyymmdd hh24miss') GROUP BY SRC,DST"); $record=0; #record total monitor line while($result = $db->fetchArray($sth)) { $if_src=ociresult($sth,"SRC"); $if_dst=ociresult($sth,"DST"); //print "$record $if_src $if_dst
"; $query_index = $db->query(" SELECT NETWORK_BACKBONE_SRC_CNAME, NETWORK_BACKBONE_DST_CNAME FROM TRAFFIC_NETWORK_BACKBONE WHERE NETWORK_BACKBONE_SRC_NAME='$if_src' and NETWORK_BACKBONE_DST_NAME='$if_dst' and NETWORK_CLASS_ID=$network_class_id "); $result_index = $db->fetchArray($query_index); $if_src_name=ociresult($query_index,"NETWORK_BACKBONE_SRC_CNAME");#interface source name $if_dst_name=ociresult($query_index,"NETWORK_BACKBONE_DST_CNAME");#interface destination name //$backbone_bw=ociresult($sth,"BANDWIDTH"); $avg_out=ociresult($sth,"AVG_IN"); $max_out=ociresult($sth,"MAX_IN"); $avg_in=ociresult($sth,"AVG_OUT"); $max_in=ociresult($sth,"MAX_OUT"); $avg_io=$avg_in+$avg_out; $max_io=$max_in+$max_out; $Traffic_Info[$record][line_path]=$if_src_name.'<->'.$if_dst_name; $Traffic_Info[$record][avg_io]=sprintf("%.3f",$avg_io); $Traffic_Info[$record][max_io]=sprintf("%.3f",$max_io); $record=$record+1; }//(while) return array($Traffic_Info,$record); } function getTrafficInfo_Table_New($start_time='',$end_time='',$table_name='') { if(!$start_time&&!$end_time) return; global $db; $result_index = array(); $Traffic_Info = array(); if ($table_name == "MRTG_TRAFFIC_INTERNATIONAL") $network_class_id=1; if ($table_name == "MRTG_TRAFFIC_TWAREN") $network_class_id=2; if ($table_name == "MRTG_TRAFFIC_TANET") $network_class_id=3; $sth = $db->query(" SELECT SRC,DST,BANDWIDTH, MIN(DATETIME) as START_DATE,MAX(DATETIME) as END_DATE, (sum(AVG_IN)*8/count(*))/1000000 AS AVG_IN, (sum(AVG_OUT)*8/count(*))/1000000 AS AVG_OUT, (max(MAX_IN)*8)/1000000 AS MAX_IN, (max(MAX_OUT)*8)/1000000 AS MAX_OUT FROM $table_name WHERE datetime between to_date($start_time,'yyyymmdd') and to_date($end_time,'yyyymmdd') GROUP BY SRC,DST,BANDWIDTH ORDER BY START_DATE,END_DATE "); while($result = $db->fetchArray($sth)){ $if_src=$result[SRC]; $if_dst=$result[DST]; $query_index = $db->query(" SELECT NETWORK_BACKBONE_SRC_NAME,NETWORK_BACKBONE_DST_NAME,NETWORK_BACKBONE_SRC_CNAME,NETWORK_BACKBONE_DST_CNAME FROM TRAFFIC_NETWORK_BACKBONE WHERE NETWORK_BACKBONE_SRC_NAME='$if_src' and NETWORK_BACKBONE_DST_NAME='$if_dst' and NETWORK_CLASS_ID=$network_class_id "); $result_index = $db->fetchArray($query_index); if ($result_index != NULL) { $if_src_name=$result_index[NETWORK_BACKBONE_SRC_CNAME]; $if_dst_name=$result_index[NETWORK_BACKBONE_DST_CNAME]; } else{ $if_src_name = $if_src; $if_dst_name = $if_dst; } $backbone_bw=$result[BANDWIDTH]; $avg_out =$result[AVG_IN]; $avg_out_ut =($result[AVG_IN]/$backbone_bw)*100; #average out-traffic utilization $max_out =$result[MAX_IN]; $max_out_ut =($result[MAX_IN]/$backbone_bw)*100; $avg_in =$result[AVG_OUT]; $avg_in_ut =($result[AVG_OUT]/$backbone_bw)*100; #average in-traffic utilization $max_in =$result[MAX_OUT]; $max_in_ut =($result[MAX_OUT]/$backbone_bw)*100; //$total_avg=($avg_in+$avg_out)/2; /*2012.12.13 平均取in 或out 的對大值,與最大平均*/ $total_avg = max($avg_in,$avg_out); $total_avg_ut = max($avg_out_ut,$avg_in_ut); //$total_avg_ut=($total_avg/$backbone_bw)*100; $Traffic_Info[$record][CIRCUIT] = $if_src_name.'<->'.$if_dst_name; $Traffic_Info[$record][START_DATE] = $result[START_DATE]; $Traffic_Info[$record][END_DATE] = $result[END_DATE]; $Traffic_Info[$record][BANDWIDTH] = $backbone_bw; $Traffic_Info[$record][AVG_IN] = sprintf("%.3f",$avg_in); $Traffic_Info[$record][AVG_IN_UT] = sprintf("%.3f",$avg_in_ut).'%'; $Traffic_Info[$record][MAX_IN] = sprintf("%.3f",$max_in); $Traffic_Info[$record][MAX_IN_UT] = sprintf("%.3f",$max_in_ut).'%'; $Traffic_Info[$record][AVG_OUT] = sprintf("%.3f",$avg_out); $Traffic_Info[$record][AVG_OUT_UT] = sprintf("%.3f",$avg_out_ut).'%'; $Traffic_Info[$record][MAX_OUT] = sprintf("%.3f",$max_out); $Traffic_Info[$record][MAX_OUT_UT] = sprintf("%.3f",$max_out_ut).'%'; $Traffic_Info[$record][TOTAL_AVG] = sprintf("%.3f",$total_avg); $Traffic_Info[$record][TOTAL_AVG_UT]= sprintf("%.3f",$total_avg_ut).'%'; /*2012.12.13 prepare for get all circuit avr value,preare for get average of all max value */ $Traffic_Info[$record][_TOTAL_AVG_UT] = sprintf("%.3f",$total_avg_ut); $Traffic_Info[$record][_TOTAL_MAX_UT] = sprintf("%.3f",max($max_out_ut,$max_in_ut)); if( $max_out >= $max_in){ $Traffic_Info[$record][MAX_IN_OUT]=sprintf("%.3f",$max_out); $Traffic_Info[$record][MAX_IN_OUT_UT]=sprintf("%.3f",$max_out_ut).'%'; }else{ $Traffic_Info[$record][MAX_IN_OUT]=sprintf("%.3f",$max_in); $Traffic_Info[$record][MAX_IN_OUT_UT]=sprintf("%.3f",$max_in_ut).'%'; } $record = $record + 1 ; } return $Traffic_Info; } function getMaxnAvgValue($test_arr=''){ foreach($test_arr as $test){ $sum_of_avg+=$test[_TOTAL_AVG_UT]; $x_arry[]=$test[_TOTAL_MAX_UT]; } $twr_core2_core_max_of_arr = max($x_arry); return array($sum_of_avg,$twr_core2_core_max_of_arr,count($test_arr)); } } //end TRAFFIC CLASS class TRAFFIC_TREND{ var $day,$max_traff,$max_line_path,$avg_traff,$avg_grow_rate; function traff_day($day){ $this->day = $day; } function max_traff($max_traff){ $this->max_traff = $max_traff; } function max_line_path($max_line_path){ $this->max_line_path = $max_line_path; } function avg_traff($avg_traff){ $this->avg_traff = $avg_traff; } function avg_grow_rate($avg_grow_rate){ $this->avg_grow_rate = $avg_grow_rate; } }//(class TRAFFIC_TREND) ?>