Анализ логов cnupm
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- проходил мимо
Анализ логов cnupm
Здравствуйте.
Есть сервер под OpenBSD. Трафик на нем считается через cnupm.
Есть нужда анализировать .dupm спирта и составлять отчеты, кто и сколько трафика сожрал.
Чем?
Заранее спасибо.
Есть сервер под OpenBSD. Трафик на нем считается через cnupm.
Есть нужда анализировать .dupm спирта и составлять отчеты, кто и сколько трафика сожрал.
Чем?
Заранее спасибо.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- manefesto
- Группенфюррер
- Сообщения: 6934
- Зарегистрирован: 2007-07-20 8:27:30
- Откуда: Пермь
- Контактная информация:
Re: Анализ логов cnupm
здесь народ писал http://osdir.com/ml/openbsd.misc.ru/200 ... 00191.html
Анализатора логов нету. Есть самописный.
Надо посмотреть ваш спирт, не зря же я перл учил
Анализатора логов нету. Есть самописный.
Надо посмотреть ваш спирт, не зря же я перл учил
-
- проходил мимо
Re: Анализ логов cnupm
Формат фалйа, после перегонки бинарного в текстовый:
<beg_date> <end_date> <src_addr> <dst_addr> <ip_proto> <nbytes>
Желательно енто разобрать и загнать в БД, суммируя трафик по IP. Чтобы потом привинтить отчеты по юзерам и Web-интерфейс.
<beg_date> <end_date> <src_addr> <dst_addr> <ip_proto> <nbytes>
Желательно енто разобрать и загнать в БД, суммируя трафик по IP. Чтобы потом привинтить отчеты по юзерам и Web-интерфейс.
-
- проходил мимо
Re: Анализ логов cnupm
Примеры записей с боевого сервера:
2007-12-07 11:47:54 2007-12-07 11:52:54 212.23.83.157:443 195.58.28.249:63754 tcp 5433
2007-12-07 11:47:54 2007-12-07 11:52:54 212.23.83.157:443 195.58.28.249:50706 tcp 3632
2007-12-07 11:47:54 2007-12-07 11:52:54 212.23.83.157:443 195.58.28.249:54547 tcp 2434
2007-12-07 11:47:54 2007-12-07 11:52:54 212.23.83.157:443 195.58.28.249:52250 tcp 1533
2007-12-07 11:47:54 2007-12-07 11:52:54 212.23.83.157:443 195.58.28.249:63754 tcp 5433
2007-12-07 11:47:54 2007-12-07 11:52:54 212.23.83.157:443 195.58.28.249:50706 tcp 3632
2007-12-07 11:47:54 2007-12-07 11:52:54 212.23.83.157:443 195.58.28.249:54547 tcp 2434
2007-12-07 11:47:54 2007-12-07 11:52:54 212.23.83.157:443 195.58.28.249:52250 tcp 1533
- manefesto
- Группенфюррер
- Сообщения: 6934
- Зарегистрирован: 2007-07-20 8:27:30
- Откуда: Пермь
- Контактная информация:
Re: Анализ логов cnupm
давай кидай мне пример лог файла по почте. буду вечером смотреть
-
- проходил мимо
Re: Анализ логов cnupm
Весь логфайл - это 250 метров бинарника или 280 текста 
Точно весь кинуть?

Точно весь кинуть?
- manefesto
- Группенфюррер
- Сообщения: 6934
- Зарегистрирован: 2007-07-20 8:27:30
- Откуда: Пермь
- Контактная информация:
Re: Анализ логов cnupm
блин....давай не больше метра....аналайзер постараюсь наколупать из имеющегоса....
Или давай 1000 строк....думаю хватит
============================
И напиши как ты видишь интерфейс
Или давай 1000 строк....думаю хватит
============================
И напиши как ты видишь интерфейс
- Alex Keda
- стреляли...
- Сообщения: 35418
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Re: Анализ логов cnupm
текст как вы привели - пожёмтся раз в 10
так что
искать ключик
так что
Код: Выделить всё
man bzip2
Код: Выделить всё
--best
Убей их всех! Бог потом рассортирует...
-
- проходил мимо
Re: Анализ логов cnupm
http://ifolder.ru/7465736
1000 строк лога в текстовом формате, 11кб
Интерфейс: мне лично нужен список ТОП10 людей по количеству скачанного и по каждому из людей - топ10 хостов, откуда качали. В идеале.
Если никак - можно просто выгрузку в БД, а вывод в веб я сам нарисую
1000 строк лога в текстовом формате, 11кб
Интерфейс: мне лично нужен список ТОП10 людей по количеству скачанного и по каждому из людей - топ10 хостов, откуда качали. В идеале.

Если никак - можно просто выгрузку в БД, а вывод в веб я сам нарисую

- Alex Keda
- стреляли...
- Сообщения: 35418
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Re: Анализ логов cnupm
Код: Выделить всё
# loading data from file into temporary table
${mysql_conn} --execute="LOAD DATA INFILE '${tmp_file}' INTO TABLE \`tmp_traffic_table\` FIELDS TERMINATED BY ' ' LINES TERMINATED BY '\n'"
хотя, идея должна быть и так ясна

Убей их всех! Бог потом рассортирует...
- manefesto
- Группенфюррер
- Сообщения: 6934
- Зарегистрирован: 2007-07-20 8:27:30
- Откуда: Пермь
- Контактная информация:
Re: Анализ логов cnupm
выгрузку то как нефиг нафиг в бд, а вот топ10 на самом деле можешь через sql сделатьdifferent писал(а):http://ifolder.ru/7465736
1000 строк лога в текстовом формате, 11кб
Интерфейс: мне лично нужен список ТОП10 людей по количеству скачанного и по каждому из людей - топ10 хостов, откуда качали. В идеале.
Если никак - можно просто выгрузку в БД, а вывод в веб я сам нарисую
Щас попробуем.
- manefesto
- Группенфюррер
- Сообщения: 6934
- Зарегистрирован: 2007-07-20 8:27:30
- Откуда: Пермь
- Контактная информация:
Re: Анализ логов cnupm
короче написал часть скрипта. Но вот insert в мусуль у меня застопорился, ибо чото с мускулем у меня не очень лады. Постараюсь завтра закинуть черновой вариант.
- manefesto
- Группенфюррер
- Сообщения: 6934
- Зарегистрирован: 2007-07-20 8:27:30
- Откуда: Пермь
- Контактная информация:
Re: Анализ логов cnupm
короче ниже код. Заносит все данные в базу.
я назвал его parse.pl
запускается так:
Может кто-то и сделал бы всё это на sh, но я сделал как умею.
Совсем забыл. Надо будет поставить p5-DBI-mysql.
Потом попробую как нибудь web-морду прикрутить и сделать графики в mrtg если народ скажет что это ООчень надо.
Код: Выделить всё
#!/usr/bin/perl
use DBI;
#connect with database
my $dsn = 'DBI:mysql:cnupm:127.0.0.1';
my $db_user_name = 'root';
my $db_password = 'your_password';
my ($id, $password);
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);
#read all data from logfile
open(LOG,$ARGV[0]);
@content=<LOG>;
close(LOG);
#split and insert into database
foreach $line(@content){
($stdate,$sttime,$enddate,$endtime,$srcadrport,$dstadrport,$proto,$port)=split(/\s/,$line);
($srcadr,$srcport)=split(/\:/,$srcadrport);
($dstadr,$dstport)=split(/\:/,$dstadrport);
$sth = $dbh->prepare("INSERT INTO logs VALUES('".$stdate."','".$sttime."','".$enddate."','".$endtime."',
'".$srcadr."','".$srcport."','".$dstadr."','".$dstport."','".$proto."','".$port."')");
$sth->execute;
$sth->finish;
}
запускается так:
Код: Выделить всё
parse.pl log1k.log
Совсем забыл. Надо будет поставить p5-DBI-mysql.
Потом попробую как нибудь web-морду прикрутить и сделать графики в mrtg если народ скажет что это ООчень надо.
- manefesto
- Группенфюррер
- Сообщения: 6934
- Зарегистрирован: 2007-07-20 8:27:30
- Откуда: Пермь
- Контактная информация:
Re: Анализ логов cnupm
короче я понял что я ничего не сделал.
Вечером посижу. Попробую написать чтобы top10 выводил из лога. Да и чтобы диапазон дат можно было указывать.
Напомни,а то забуду.
Вечером посижу. Попробую написать чтобы top10 выводил из лога. Да и чтобы диапазон дат можно было указывать.
Напомни,а то забуду.
-
- проходил мимо
Re: Анализ логов cnupm
Мы свой вариант накатали - завтра выложу
Вроде работает.

Вроде работает.
-
- проходил мимо
Re: Анализ логов cnupm
В Simple Traffic Billing такой скрипт есть, как раз на перле:
Код: Выделить всё
#!/usr/bin/perl
# STB - Simple Traffic Billing
# Version-0.1.1-beta
# Author: Boo (yolkapalka@bk.ru)
use Time::localtime;
use Fcntl ':flock';
$tm = localtime;
$y = $tm->year + 1900;
$m = $tm->mon + 1;
$d = $tm->mday;
$h = $tm->hour;
$dir = $0;
$dir =~ s/[^\/]{1,}$//;
require "$dir/readcfg.inc";
($mask) = ($localnet =~ /(\d+.\d+).\d+.\d+/);
$net = $mask;
system("/sbin/pfctl -q -Tl -f /etc/pf.conf");
foreach $int (@int_if) {
open(pid, "<$cnupm_path/cnupm-$int.pid");
while(<pid>) {
chomp;
kill "HUP", $_;
kill "INFO", $_;
}
sleep(10);
if(open(Dump ,"<$cnupm_path/cnupm-$int.dump")) {
while(1) {
if(flock(Dump, LOCK_EX)) {
@temp = `/usr/local/sbin/cnupmstat -B -E -P $int`;
unlink "$cnupm_path/cnupm-$int.dump";
flock(Dump, LOCK_UN);
last;
}
}
}
close(Dump);
foreach $string (@temp) {
push @dump, $string;
}
}
my @ip;
if (@dump) {
open(traffic, "+<$stb_path/etc/traffic.ip");
flock(traffic, LOCK_EX);
while(<traffic>) {
chomp;
next unless $_;
@t = split(':');
$tr_name{$t[1]} = $t[0];
push @ip, $t[1];
$tr_out{$t[1]} = $t[2];
$tr_in{$t[1]} = $t[3];
$tr_all_old{$t[1]} = $t[2] + $t[3];
$tr_last{$t[1]} = $t[4];
$last_update{$t[1]} = $t[5];
$last_traff{$t[1]} = $t[6];
$last_date{$t[1]} = $t[7];
$fio{$t[1]} = $t[8];
$adr{$t[1]} = $t[9];
$phone{$t[1]} = $t[10];
}
foreach $f (@ip) {
$startcurhour = 0;
$endcurhour = 0;
open(reports, "<$stb_path/reports/$y-$m-$d\_$f");
while (<reports>) {
chomp;
next unless $_;
if($_ eq "<h=$h>") {
$startcurhour = 1; next;
}
if(($startcurhour == 1)and($_ eq "</h>")) {
$endcurhour = 1; last;
}
if(($startcurhour == 1)and($endcurhour != 1)) {
@t = split(':');
$hosts_traff{$f}{$t[0]} = "$t[1]:$t[2]";
} else {
push @{$other_reports{$f}}, $_;
}
}
close(reports);
}
open(passip, "<$stb_path/etc/pass.ip");
while(<passip>) {
chomp;
next unless $_;
push @passip, $_;
}
close(passip);
chomp(@dump);
foreach $i (@dump) {
$i =~ /(\d+.\d+)(.\d+.\d+) (\d+.\d+)(.\d+.\d+) (\w+) (\d+)/;
if ($1 eq $net) {
$tr_out{"$1$2"} = $tr_out{"$1$2"} + $6;
@i = split(':', $hosts_traff{"$1$2"}{"$3$4"});
$hout = $i[0] + $6;
if ($hout eq "") { $hout = 0; }
if ($i[1] eq "") { $i[1] = 0; }
$hosts_traff{"$1$2"}{"$3$4"} = "$hout:$i[1]";
} elsif ($3 eq $net) {
$tr_in{"$3$4"} = $tr_in{"$3$4"} + $6;
@i = split(':', $hosts_traff{"$3$4"}{"$1$2"});
$hin = $i[1] + $6;
if ($i[0] eq "") { $i[0] = 0; }
if ($hin eq "") { $hin = 0; }
$hosts_traff{"$3$4"}{"$1$2"} = "$i[0]:$hin";
}
}
seek(traffic, 0, 0);
foreach $i (@ip) {
$tr_last{$i} = ($tr_last{$i} - (($tr_in{$i} + $tr_out{$i}) - $tr_all_old{$i}));
printf traffic "$tr_name{$i}:$i:$tr_out{$i}:$tr_in{$i}:$tr_last{$i}:$last_update{$i}:$last_traff{$i}:$last_date{$i}:$fio{$i}:$adr{$i}:$phone{$i}\n";
foreach $t (@passip) {
if ($t eq $i) {
$pass = $i;
}
}
if ($tr_last{$i} > 0) {
if ($pass eq $i) {
system("/sbin/pfctl -q -t passip -Ta $i");
} else {
system("/sbin/pfctl -q -t passip -Td $i");
system("/sbin/pfctl -q -k $i");
}
} else {
if ($pass eq $i) {
system("/sbin/pfctl -q -t passip -Td $i");
system("/sbin/pfctl -q -k $i");
open(passip, ">$stb_path/etc/pass.ip");
flock(passip, LOCK_EX);
foreach $t (@passip) {
if ($t ne $i) {
printf passip "$t\n";
}
}
flock(passip, LOCK_UN);
close(passip);
}
}
}
flock(traffic, LOCK_UN);
close(traffic);
foreach $f (@ip) {
%tr = %{$hosts_traff{$f}};
if((%tr != "")or($other_reports{$f}[0] ne "")) {
$no_rep = "0";
unless(-e "$stb_path/reports/$y-$m-$d\_$f") {
$no_rep = "1";
}
open(reports, ">$stb_path/reports/$y-$m-$d\_$f") or die "$!\n";
flock(reports, LOCK_EX);
if($other_reports{$f}[0] ne "") {
foreach $other_report (@{$other_reports{$f}}) {
printf reports "$other_report\n";
}
}
if(%tr != "") {
printf reports "<h=$h>\n";
}
foreach $l (sort {$tr{$a} <=> $tr{$b} } keys %tr) {
printf reports "$l:$tr{$l}\n";
}
if(%tr != "") {
printf reports "</h>\n";
}
flock(reports, LOCK_UN);
close(reports);
if($no_rep eq "1") {
my ($uid, $gid) = (getpwnam("$httpd_user"))[2,3];
chown($uid, $gid, "$stb_path/reports/$y-$m-$d\_$f");
}
}
}
}
-
- мл. сержант
- Сообщения: 116
- Зарегистрирован: 2007-07-16 11:28:42
Re: Анализ логов cnupm
да на самом деле просто кто нить взял да доделал STB хорошая софтина минус в том что там просто недоделаны отчеты по протоколам и нету тупо возможности указать чтобы считал по месяцам и все 

- ~>cerber<~
- мл. сержант
- Сообщения: 112
- Зарегистрирован: 2007-06-23 0:58:32
- Откуда: [UKRAINE]
- Контактная информация:
Re: Анализ логов cnupm
manefesto, different,
что-то доделали, поделитесь? чтоб с 0-я не писать..
что-то доделали, поделитесь? чтоб с 0-я не писать..
;aka coolchevy
live free or die;
live free or die;
- manefesto
- Группенфюррер
- Сообщения: 6934
- Зарегистрирован: 2007-07-20 8:27:30
- Откуда: Пермь
- Контактная информация:
Re: Анализ логов cnupm
я честно ничо не делал.
Меня никто не просил.
Я тока в базу писать начал.
Надо будет...напишу.
Меня никто не просил.
Я тока в базу писать начал.
Надо будет...напишу.
- dynax60
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2010-06-23 9:21:18
Re: Анализ логов cnupm
Если это еще актуально. Я как-то давно делал на perl, если интересно:
http://dynax60.blogspot.com/2010/06/cnu ... msave.html
http://dynax60.blogspot.com/2010/06/cnu ... msave.html