Агрегация детального траффика

Технические вопросы по UTM 5.0
Ответить
integral
Сообщения: 75
Зарегистрирован: Чт авг 14, 2008 14:15

Агрегация детального траффика

Сообщение integral »

Детальный трафик создается скриптом raw_fd_script некогда выложенным на форуме (за что большое спасибо создателю) и складывается по папочкам, в случае необходимости генерится в текстовый формат утилитой unpack-ds (тоже спасибо создателю).
Вопрос чем можно с агрегировать трафик за месяц из этих файлов (текстового, либо из того что создает raw_fd_script x.ds.gz) чтоб определить с какой сайта больше всего накачали?
Excel не справляется с таким количесвтом строк, пробовали делить файл на куски по 65000 строк что тоже очень неудобно. Может у кого есть какой-либо парсер для этого дела?
Видел парсер на фореме DRG но он как я понял парсит только сырой формат *.utm (а он у нас не хранится) :(

Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Re: Агрегация детального траффика

Сообщение Magnum72 »

integral писал(а):Детальный трафик создается скриптом raw_fd_script некогда выложенным на форуме (за что большое спасибо создателю) и складывается по папочкам, в случае необходимости генерится в текстовый формат утилитой unpack-ds (тоже спасибо создателю).
Вопрос чем можно с агрегировать трафик за месяц из этих файлов (текстового, либо из того что создает raw_fd_script x.ds.gz) чтоб определить с какой сайта больше всего накачали?
Excel не справляется с таким количесвтом строк, пробовали делить файл на куски по 65000 строк что тоже очень неудобно. Может у кого есть какой-либо парсер для этого дела?
Видел парсер на фореме DRG но он как я понял парсит только сырой формат *.utm (а он у нас не хранится) :(
2007 excel может работать с файлами до 1000000 строк. еще есть access

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

Используйте SQLite для агрегации. У перла драйвер есть.

dk
Сообщения: 424
Зарегистрирован: Чт авг 10, 2006 08:52

Сообщение dk »

Если разово, проще всего поменять под эти цели unpack-ds. Что-то вроде

Код: Выделить всё

if ( 10 == $t_class ) {
	$traffic_from_ip{$src_ip} += $bytes;
}

...

for my $ip ( keys %traffic_from_ip ) {
	printf "%s\t%d\n", $ip, $traffic_from_ip{$ip} >> 20;
}


integral
Сообщения: 75
Зарегистрирован: Чт авг 14, 2008 14:15

Сообщение integral »

dk писал(а):Если разово, проще всего поменять под эти цели unpack-ds.
Да, разово нужно.. А не подскажешь куда подставить ?

Код: Выделить всё

#!/usr/bin/perl                                                                                                                                              
                                                                                                                                                             
use Socket;                                                                                                                                                  
use Carp;                                                                                                                                                    
                                                                                                                                                             
$fileUTM = shift;                                                                                                                                            
$SID     = shift;                                                                                                                                            
open ( FH, "gunzip -c $fileUTM |" ) or die ( " Error open file $fileUTM" );                                                                                  
open ( TH, ">$SID" ) or die ( " Error open file $fileUTM" );                                                                                                 
print TH <FH>;                                                                                                                                               
close FH;                                                                                                                                                    
close TH;                                                                                                                                                    
$size = &#40; stat&#40; "$SID" &#41; &#41;&#91;7&#93;;                                                                                                                               
$rec  = $size/26;                                                                                                                                            
                                                                                                                                                             
open &#40; FH, "<$SID" &#41; or die &#40; " Error open fole $fileUTM" &#41;;                                                                                                 
                                                                                                                                                             
print "Date       Time\t\tIP_from\t\tPort\tIP_to\t\tPort\tPkts\tByte\tType\n";                                                                               
                                                                                                                                                             
for &#40; $i=1; $i<=$rec; $i++ &#41; &#123;                                                                                                                               
    read &#40; FH, $src_ip, 4 &#41;;            # 1-4                                                                                                                
    read &#40; FH, $dst_ip, 4 &#41;;            # 5-8                                                                                                                
    read &#40; FH, $packets, 4 &#41;;           # 9-12                                                                                                               
    read &#40; FH, $bytes, 4 &#41;;             # 13-16                                                                                                              
    read &#40; FH, $src_port, 2 &#41;;          # 17-18                                                                                                              
    read &#40; FH, $dst_port, 2 &#41;;          # 19-20                                                                                                              
    read &#40; FH, $t_class, 2 &#41;;           # 21-22                                                                                                              
    read &#40; FH, $timestamp, 4 &#41;;         # 23-26                                                                                                              
                                                                                                                                                             
    $src_ip = inet_ntoa &#40; pack &#40; "N", unpack &#40; "%32l" , $src_ip &#41; &#41; &#41;;                                                                                       
    $dst_ip = inet_ntoa &#40; pack &#40; "N", unpack &#40; "%32l" , $dst_ip &#41; &#41; &#41;;                                                                                       
    $bytes = unpack &#40; "%32I" , $bytes &#41;;                                                                                                                     
    $packets = unpack &#40; "%32I" , $packets &#41;;                                                                                                                 
    $src_port = unpack &#40; "%16S" , $src_port &#41;;                                                                                                               
    $dst_port = unpack &#40; "%16S" , $dst_port &#41;;                                                                                                               
    $t_class = unpack &#40; "%16S" , $t_class &#41;;                                                                                                                 
    $timestamp = unpack &#40; "%32I" , $timestamp &#41;;                                                                                                             
                                                                                                                                                             
    @time = localtime&#40; $timestamp &#41;;                                                                                                                         
    $time&#91;5&#93; += 1900;                                                                                                                                        
    $time&#91;3&#93; = sprintf&#40; "%02d", $time&#91;3&#93; &#41;;                                                                                                                  
    $time&#91;4&#93; = sprintf&#40; "%02d", $time&#91;4&#93;+1 &#41;;                                                                                                                
    $time&#91;2&#93; = sprintf&#40; "%02d", $time&#91;2&#93; &#41;;                                                                                                                  
    $time&#91;1&#93; = sprintf&#40; "%02d", $time&#91;1&#93; &#41;;                                                                                                                  
    $time&#91;0&#93; = sprintf&#40; "%02d", $time&#91;0&#93; &#41;;                                                                                                                  
                                                                                                                                                             
    $dt = "$time&#91;3&#93;-$time&#91;4&#93;-$time&#91;5&#93; $time&#91;2&#93;&#58;$time&#91;1&#93;&#58;$time&#91;0&#93;";                                                                                           
                                                                                                                                                             
print "$dt\t$src_ip\t$src_port\t$dst_ip\t$dst_port\t$packets\t$bytes\t$t_class\n";                                                                           
&#125;                                                                                                                                                            
close FH;                                                                                                                                                    
unlink $SID;                                                                                                                                                 
exit 0;

integral
Сообщения: 75
Зарегистрирован: Чт авг 14, 2008 14:15

Сообщение integral »

Всё, спасибо за подсказку получилось то что нужно.

anclbob
Сообщения: 55
Зарегистрирован: Сб окт 31, 2009 19:39

Сообщение anclbob »

15

Ответить