Gunner Опубликовано 11 мая, 2011 · Жалоба Блин помогите с нетфлоу. Колектор работает нормально флоу валится в файлы - проблема с фильтрами. Помогите с примером фильтра выдернуть статистику по определеному ип за определенное время. Просто раньше такую статистику с билинга выдавали. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
fedusia Опубликовано 11 мая, 2011 · Жалоба #!/usr/bin/perl -w use strict; if ($#ARGV == -1){ print "Usage ./catdetails <netflow_file> <IP>\n"; exit 1; } my %count = (); open (CMD, '/usr/bin/flow-cat '."$ARGV[0]".' | /usr/bin/flow-export -f2|') or die "Can't open flows: $!\n"; while (<CMD>){ my @array = (split /,/, $_); if ($array[11] eq $ARGV[1]) { #11dst, 10 -src my $time = localtime($array[0]); print "$time\t$array[10]\t\t$array[5]\tdstport\t$array[15]\n"; $count{$array[10]} += $array[5]; } } print "Detail statistic by source in bits:\n"; foreach(sort {$count{$b} <=> $count{$a}} keys %count) { print "$_\t\t$count{$_}\n"; } Как пример привожу свой скрипт по вытаскиванию детальной статистики. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Gunner Опубликовано 11 мая, 2011 · Жалоба не спец в перле но не работает /1.prl /var/log/flow/2011/2011-05/2011-05-09/ft-v05.2011-05-09.000001+0800 *.*.*.* /usr/bin/flow-export: Exported 211235 records Detail statistic by source in bits: Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
fedusia Опубликовано 11 мая, 2011 · Жалоба не спец в перле но не работает /1.prl /var/log/flow/2011/2011-05/2011-05-09/ft-v05.2011-05-09.000001+0800 *.*.*.* /usr/bin/flow-export: Exported 211235 records Detail statistic by source in bits: К сожалению я за вас не могу разбираться. Скрипт рабочий, проверить пути и все должно работать, так как сам его использовал на нескольких системах. Вы уверены что скрипт вам выдал ошибку? А не просто отработал и не найдя нужно информации вывел вам пустую строку? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 11 мая, 2011 · Жалоба Мой вариант: http://sources.homelink.ru/flowfilter/flowfilter.pl.txt Подразумевается, что свежие ft-файлы и старые архивы, перепакованные в bz2, лежат в /var/db/netflow. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Gunner Опубликовано 11 мая, 2011 · Жалоба не спец в перле но не работает /1.prl /var/log/flow/2011/2011-05/2011-05-09/ft-v05.2011-05-09.000001+0800 *.*.*.* /usr/bin/flow-export: Exported 211235 records Detail statistic by source in bits: К сожалению я за вас не могу разбираться. Скрипт рабочий, проверить пути и все должно работать, так как сам его использовал на нескольких системах. Вы уверены что скрипт вам выдал ошибку? А не просто отработал и не найдя нужно информации вывел вам пустую строку? Что выдал я написал - то есть ничего Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Gunner Опубликовано 11 мая, 2011 · Жалоба Мой вариант: http://sources.homelink.ru/flowfilter/flowfilter.pl.txt Подразумевается, что свежие ft-файлы и старые архивы, перепакованные в bz2, лежат в /var/db/netflow. Большое спасибо Илья отработало все на ура великолепно - сейчас чуть помаракую как юникстайм в нормальное время перевести. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
gavru Опубликовано 11 мая, 2011 (изменено) · Жалоба Может проще всё в базу писать сразу постгреса или мускула? от туда и выборку делать проще сукильными запросами. Да и в том же мускуле есть тип таблиц arh. Изменено 11 мая, 2011 пользователем gavru Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Gunner Опубликовано 11 мая, 2011 · Жалоба Может проще всё в базу писать сразу постгреса или мускула? от туда и выборку делать проще сукильными запросами. Да и в том же мускуле есть тип таблиц arh. У меня гиг нетфлоу в день - как ты думаешь выдержит база ? Что-то с юникстаймом плохо там в прямую в файл пишется из экспорта строки - буду думать о парсере. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 11 мая, 2011 · Жалоба как юникстайм в нормальное время перевести. http://perldoc.perl.org/POSIX.html -- strftime Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
gavru Опубликовано 11 мая, 2011 (изменено) · Жалоба А если применить агрегацию например суточную по посещённым ресурсам и группировать их со сложением трафа? Думаю после этого гиг в сутки превратится в метров 200. Хозяин барин, я просто предложил. Изменено 11 мая, 2011 пользователем gavru Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 11 мая, 2011 · Жалоба Да и в том же мускуле есть тип таблиц arh. Вообще-то archive. В любом случае, затея сомнительная. flow-tools-ng и nfdump пишут в файлы, то есть для прямой записи в sql пришлось бы либо дописывать их, либо сочинять собственный сборщик. Ядро SQL создаст лишнюю нагрузку. Данные нужны редко - хранить их в базе незачем. А если применить агрегацию например суточную по посещённым ресурсам и группировать их со сложением трафа? Это не может служить заменой детальной статистике. По договору нужно хранить сырые flows. Для биллинга такие кучерявые отчёты тоже ни к чему, для него достаточно записей tstamp-userid-trafclass-sumbytes каждые несколько минут. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
gavru Опубликовано 11 мая, 2011 · Жалоба flow-tools-ng и nfdump пишут в файлы, то есть для прямой записи в sql пришлось бы либо дописывать их, либо сочинять собственный сборщик.Ядро SQL создаст лишнюю нагрузку. Данные нужны редко - хранить их в базе незачем Ну в какой то степени согласен, перелопачивать готовые не имеет смысла. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Gunner Опубликовано 11 мая, 2011 · Жалоба А если применить агрегацию например суточную по посещённым ресурсам и группировать их со сложением трафа? Думаю после этого гиг в сутки превратится в метров 200. Хозяин барин, я просто предложил. А прокурору как отдавать ? Им желательно поточнее. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Gunner Опубликовано 11 мая, 2011 · Жалоба как юникстайм в нормальное время перевести. http://perldoc.perl.org/POSIX.html -- strftime я в перле вообще почти никак, но мне показалось там тупо с вывода flow-export строка пишется на прямую в файл как ее там разобрать парсером я хз. Сможете помочь ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ilya Evseev Опубликовано 11 мая, 2011 · Жалоба я в перле вообще почти никак, но мне показалось там тупо с вывода flow-export строка пишется на прямую в файл как ее там разобрать парсером я хз. Примерно так: perl -MPOSIX -ne 'chomp my @w = split(/,/, $_); $w[0] = POSIX::strftime("%Y-%m-%d %H:%M:%S", localtime($w[0])); print join(",", @w), "\n"' < /tmp/detailed_*.txt Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Gunner Опубликовано 11 мая, 2011 (изменено) · Жалоба Яснее не стало =) Но спасибо за помощь буду рыть в ту сторону next unless /^\d/; print $_; my @w = split(/,/, $_); $w[0] = strftime("%Y-%m-%d %H:%M:%S", localtime($w[0])); print join(",", @w), "\n"; #print R $_; $nlines++; Кусок принял такой вид но есть ошибка Undefined subroutine &main::strftime called at ./flowfilter.pl.txt line 88, <F> line 2. При использовании use POSIX; Вылетает ошибка Can't use string ("/tmp/filew8Krjr") as a symbol ref while "strict refs" in use at. Еще раз я в перле 0 =) Изменено 12 мая, 2011 пользователем Gunner Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Giga-Byte Опубликовано 12 мая, 2011 · Жалоба А если применить агрегацию например суточную по посещённым ресурсам и группировать их со сложением трафа? Думаю после этого гиг в сутки превратится в метров 200. Хозяин барин, я просто предложил. А прокурору как отдавать ? Им желательно поточнее. пофиг как отдавать, нет конкретного описания. без аггрегации оператору проще разобраться в проблеме, но тяжелее хранить, только диски нынче дешевые, рейд не нужен, там данные тупо пишутся Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...