vFlows2 (считалка трафика)
“Приблуда” для анализа логов собранных flow-tools
СРАЗУ ПРЕДУПРЕЖДАЮ: Писал для себя. Нормальной документации нет. настроек из командной строки тоже нет. веб интерфейса пока тоже нету (может быть найдется доброволец написать и поделиться???)Как-то заякнулся на opennet вот тут что есть самописная приблуда для анализа flow-tools. В мыло прилетело несколько просьб поделится.
Собираю я статистику через flow-tools: средства сбора - нормальны, средства анализа - никакие. Как-то мне приспичило все считать так. как мне хочется. Написал я тулзу назвал vflows. поюзав месяц понял что допустил много архитектурных ошибок и переписал ее заново и получлось vflows2.
Что она делает:
Ей в качестве аргумента подается список файлов собранных flow-tools (точнее собранных flow-capture и возможно обработанных другими тулзами :). Она загружает файл с ACLями (ну я их так назвал, на самом деле правельнне было-бы называть их rules :) брет она его из текущей директории (если надо из другого места править в районе 43 строки vflows2.cpp).
файл представляет собой XML файл с описанием правил подсчета.
В программе имеется несколько… как-бы их назвать…. объектов.
counter Это по сути переменная хранящая объем переданной информации
acl Это правило определяющих какие данные будут попадать в counter
acl-set Это группировщик правил, для задания более гибких условий.
начнем по порядку.
counter:В конфиге counter описывается с одной целью. Чтобы потом его можно было положить в БД
если где-то встречается номер незнакомого каунтера, то каунтер с таким номером будет создан. Естественно что без имени и описания.
формат вот такой:
1 RtCom IN Входящий трафик с РтКОМа uid - номер каунтера (отовсюду к несу ссылаться надо именно по номеру)
name - имя (короткое)
text - описание
acl:Задаем критерии попадания пакетов в каунтер или ACL-SET
3 10.0.0.0/8 1024 15 10.0.0.0/8 1024 15 11 Если задан uid то этот ACL можно юзать из ACL-SETа
prefix указывает префикс, который будет попадать под равило
port указывает порт
у порта имеется модификатор (свойство op)
может принимать вот такие значения:
eq проверяем на равенство (это по умолчанию)
neq - не равно
le - меньше
ge - больше
leq - меньше или равно
geq - больше или равно
interface номер интерфейса маршрутизатора
у всех этих 3х параметров еще есть свойство dir. Оно может принимать значение src или dst. по умолчанию dst. src это применяем к адресу отправителя dst получателя (на инетфейсе роутера исходный и выходной интерфейс соответственно)
далее counter это номер счетчика куда “положить” этот пакет(их может быть много)
если у ACLя нету поля counter то его можно использовать только в ACL-SETах если нету uid а то должен быть counter. если нету ни того ни другого он игнорируется.
acl-set: (самое интересное :)Вобщем у ACL-SETа указан counter на какой действовать.(их может быть много)
параметр takeacl
в нем указывается номер ACLя, action что делать в случае совпадения ACLя
Действие напрямую зависит от типа ACL-SETа
Типы бывают:
and это должны совпасть все takeacl (action=”reject” инвертирует действие aclя т.е. он должен НЕ совпасть)
first - Проверяется до первого совпадения. как только нашли совпавший ACL возвращаем результат, которы зависит от action. Если action равен accept или qaccept то счетчик увеличиваем. Иначе - нет.
last - так коротко не опишешь:
при совпадении правила если у правила было действие accept или reject. то ACL-SET запоминает этот результат. он вернет его, если дойдет до конца и не встретит больше подходящих правил.
Если-же действие было qaccept или qreject то просмотр ACL-SETа прекращается и он возвращает соответствующй результат.
в конце концов программа выдаст результат в виду csv файла. в котором указан номер счетчика, кол-во пакетов и кол-во байтов в нем. А так-же название счетчика, его описание.
Это файл можно скормить скрипту parse_counters.pl (лежит там-же) который поместит их в базу данных PostgreSQL. Я думаю кому нужно спортировать на mysql проблем не возникнет, т.к. в данном слушае в БД не используются какие-то хитрые вещи. схема БД лежит там-же в файле vflows.sql
Для сборки необходимо поставить flow-tools
Лежит сеё чудо вот тут лицензия BSD
- March 10th

не качается :( хотелось бы посмотреть…
насколько flow-tools стабильно себя ведет при большом потоке статистики?
Поправил, теперь качается. Помоему flow-tools достаточно стабилен, если при этом проц. нагружен мне сильно. Если сильно - то возможны потери статистики. Обычно если сетевой адаптер хороший то можно netflow о сотнях мегабит собирать без проблем