forum.bitel.ru http://forum.bitel.ru/ |
|
Как получить детализацию трафика в 5.2 http://forum.bitel.ru/viewtopic.php?f=22&t=8039 |
Страница 1 из 1 |
Автор: | iseed [ 16 май 2013, 14:10 ] |
Заголовок сообщения: | Как получить детализацию трафика в 5.2 |
Доброго дня. Сегодня возникла проблема получить детализацию трафика по номеру договора (соответсвенно логина DialUp и так далее). Встроенная возможность детализации описанная в http://bgbilling.ru/v5.0/doc/ch03s16s01.html к 5.2 не подошла. Единственный выход это както парсить руками имеющиеся собраные данные вида log_xxx-xx-xx-xx.000.bgdl и log_xxx-xx-xx-xx.000.data. Стандартный flow-cat тут не помогает (ругается на неверную структуру), viewtopic.php?f=25&p=54623#p54623 - в 5.2 к сожалению два файла и скрипт не подходит. Если кто сталкивался с подобной задачей - поделитесь экспой ... |
Автор: | iseed [ 22 май 2013, 10:27 ] |
Заголовок сообщения: | Re: Как получить детализацию трафика в 5.2 |
Похоже экспой делиться некому =( Как решили проблему? 1) Из БД получили данные по сессиям абонента за месяц. Сохранено в файл search_ip.csv --- select cast(INET_NTOA(l.ipaddr)AS CHAR) as ip,unix_timestamp(session_start),unix_timestamp(session_stop) from log_session_1_201210 as l,user_login_1 as u,contract as c where c.id = u.cid AND u.id = l.lid AND session_start>='2012-10-19' AND c.title = <номер договра> --- 2) Поднимаем тестовый биллинг (activemq, mysql, BGBilling server); 3) Копируем куда либо из архива упакованные файлы netflow за нужный период. (за месяц получилось 150Gb упакованного, > 500gb развернутого) 4) Создаем папку netflow_logs в корне. 5) Распаковываем tar xjf <file.tar.bz2> в папку /netflow_logs - должны появиться папки source_x (где х номер ресурса который парсил и упаковывал netflow) 6) Запускаем IPnetflowCollector в папке биллинга. 7) Состряпан getNetflow.pl --- #!/usr/bin/perl -w use Data::Dumper; $dir_to_NF='/usr/local/BGIPNetflowCollector/netflow.sh'; $dir_to_save='/netflow_logs/data'; @source = (3,4,5); $start_time=time(); open(IP,'search_ip.csv') or die ("Cant open IP list\n"); open(DUMP,">>$dir_to_save/dump.csv") or die ("Cant save DUMP file\n"); $num=0; while($line = <IP>){ chomp $line; my($ip,$stime,$etime)=split(/,/,$line); my @sdate = localtime($stime); my @edate = localtime($etime); $sdate5 = 1900; $sdate4 += 1; $sdate4 = &addNull($sdate4); $sdate3 = &addNull($sdate3); $sdate2 = &addNull($sdate2); $edate5 += 1900; $edate4 += 1; $edate4 = &addNull($edate4); $edate3 = &addNull($edate3); $edate2 = &addNull($edate2); #$stime = $sdate5."-".$sdate4."-".$sdate3."-".$sdate2; #$etime = $edate5."-".$edate4."-".$edate3."-".$edate2; $count = ($edate5-$sdate5)*262800($edate4-$sdate4)*720+($edate3-$sdate3)*24+($edate2-$sdate2); #if ($count == 0){$count=1;} $count++; print "===\n"; print "Start Get_netflow ".(($edate4-$sdate4)*720)." mon ".(($edate3-$sdate3)*24)." day ".($edate2-$sdate2)."\n"; for($n=0;$n<$count;$n++){ foreach $sd (@source){ my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($stime+($n*3600)); $year = &addNull($year+1900); $mon = &addNull($mon+1); $mday = &addNull($mday); $hour = &addNull($hour); print $dir_to_NF." save $sd $year-$mon-$mday-$hour $dir_to_save/s$sd.csv\n"; $line = `$dir_to_NF save $sd $year-$mon-$mday-$hour $dir_to_save/s$sd.csv`; sleep(1); } $num=0; $timer=0; undef @ldata; my @ldata; $end=0; while($end==0){ foreach $sd (@source){ if ((-s "$dir_to_save/s$sd.csv") $ldata[$sd]){ $num++; } if ($num3){$end=1;} $ldata[$sd]=(-s "$dir_to_save/s$sd.csv"); } print $timer++."\n"; sleep(1); } sleep(20); print "\nGetdump from netflow\n"; open(S3,"$dir_to_save/s3.csv") or die ("Cant open S3 dump\n"); undef $ss3 if ($ss3); undef $ss4 if ($ss4); undef $ss5 if ($ss5); while($raw = <S3>){ chomp $raw; if($raw =~ /$ip/){ $raw =~ s/\s+/ /; my ($e_date,$e_sip,$e_sport,$e_dip,$e_dport,$e_byte,$tail)=split(" ",$raw); my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(substr($e_date,0,10)); if(substr($e_date,0,10) > $stime && substr($e_date,0,10) < $etime){ $year = &addNull($year+1900); $mon = &addNull($mon+1); $mday = &addNull($mday); $hour = &addNull($hour); $min = &addNull($min); $sec = &addNull($min); print DUMP $mday.".".$mon.".".$year." ".$hour.":".$min.":".$sec."\t$e_sip\t$e_sport\t$e_dip\t$e_dport\t$e_byte\n"; $ss3 = "$ip S3 Catch\n" if (!$ss3); } } } close(S3); open(S4,"$dir_to_save/s4.csv") or die ("Cant open S4 dump\n"); while($raw = <S4>){ chomp $raw; if($raw =~ /$ip/){ $raw =~ s/\s+/ /; my ($e_date,$e_sip,$e_sport,$e_dip,$e_dport,$e_byte,$tail)=split(" ",$raw); my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(substr($e_date,0,10)); if(substr($e_date,0,10) > $stime && substr($e_date,0,10) < $etime){ $year = &addNull($year+1900); $mon = &addNull($mon+1); $mday = &addNull($mday); $hour = &addNull($hour); $min = &addNull($min); $sec = &addNull($min); print DUMP $mday.".".$mon.".".$year." ".$hour.":".$min.":".$sec."\t$e_sip\t$e_sport\t$e_dip\t$e_dport\t$e_byte\n"; $ss4 = "$ip S4 Catch\n" if (!$ss4); } } } close(S4); open(S5,"$dir_to_save/s5.csv") or die ("Cant open S5 dump\n"); while($raw = <S5>){ chomp $raw; if($raw =~ /$ip/){ $raw =~ s/\s+/ /; my ($e_date,$e_sip,$e_sport,$e_dip,$e_dport,$e_byte,$tail)=split(" ",$raw); my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(substr($e_date,0,10)); if(substr($e_date,0,10) > $stime && substr($e_date,0,10) < $etime){ $year = &addNull($year+1900); $mon = &addNull($mon+1); $mday = &addNull($mday); $hour = &addNull($hour); $min = &addNull($min); print DUMP $mday.".".$mon.".".$year." ".$hour.":".$min.":".$sec."\t$e_sip\t$e_sport\t$e_dip\t$e_dport\t$e_byte\n"; $ss5 = "$ip S5 Catch\n" if (!$ss5); } } } close(S5); print "$ss3" if ($ss3); print "$ss4" if ($ss4); print "$ss5" if ($ss5); print "\n"; print "===\n"; } } close(IP); sub addNull(){ my $num = shift(@_); if ($num < 10){ $num = '0'.$num; } return $num; } $end_time=time(); print "Execute from ".($end_time-$start_time)." sec\n"; --- Скрипт парсит распакованные логи и складывает в папку $dir_to_save dump.csv даныне вида: <Дата Время> <Source_ip> <Source_port> <Destination_ip> <Desctination_port> <Send_byte> |
Автор: | skyb [ 27 май 2013, 08:13 ] |
Заголовок сообщения: | Re: Как получить детализацию трафика в 5.2 |
а почему не подошла 16.1.1. Детализация трафика за сессию |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |