Netflow-искания Часть 4.1 (Netflow v9 collector script)

Блог им. dreamhunter
В общем похоже некий этап преодолен и теперь можно продемонстрировать первую версию моего коллектора. И да, я расположил свой скриптец на sourceforge. Это было по крайней мере мне интересно сделать.

Возможности:
  1. Работа с протоколами NetFlow 5 и 9 версии;
  2. Работа со всеми устройствами через один или несколько портов;
  3. Хранение данных в базе MySQL;
  4. Работа с различными типами сенсоров;
  5. Работа на различных ОС.

Системные требования:
  1. PIII и выше;
  2. 512MB RAM;
  3. наличие сетевого адаптера.

Требования к ПО:
  1. OS windows/*nix/MacOS (да, эта фигня должна работать на всем подряд, вопрос в прямоте ваших рук);
  2. MySQL 5.5 версии и выше;
  3. Perl 5.14 и выше.

Вероятно, что вам придется доустановить некоторые компоненты Perl потому что скорей всего базовой установки будет недостаточно. Сообщите мне о проблемах, если будут.

Инсталляция


После того, как вы установили и настроили вашу OS, perl и MySQL, вам необходимо:
  1. Скачать и распаковать архив в любое удобное вам место.
    mkdir /usr/home/netflow
    cd /usr/home/netflow
    fetch https://downloads.sourceforge.net/project/nflowcollector/nflow-collector.tar.gz
    tar -xvf nflow-collector.tar.gz
  2. Инициализируйте базу данных с помощью скрипта dbinstall.sql
    mysql -u root -p < dbinstall.sql

    После этого будет создана начальная база данных flow и пользователь: пароль — netflow:netflow
  3. Запустите portlistener.pl. Если ошибок нет, можете запустить скрипт как демон:
    ./portlistener.pl > /dev/null &
Все, данные будут приниматься на порт 9999. Вы можете изменить пользователя, пароли, порты — все скрипты в открытом виде. Так же вы можете распределить ресурсы и нагрузку. Для этого можно:
  • Использовать выделеный сервер БД;
  • запустить коллекторы в несколько потоков на разных портах, а может быть и серверах.

Что делает программа?
В буквальном смысле она раскладывает по полочкам сырые данные. Она их не анализирует, не составляет никакие отчеты. Только структурирование. И в дальнейшем она будет делать только это.
Начальная база данных состоит из 3 таблиц, описанных выше. Если на коллектор будут посылаться данные 5 версии netflow, структура меняться не будет. Однако при направлении данных с сенсора протокола 9 версии начнут создаваться таблицы с именами, в которых будет содержаться адрес сенсора и номер шаблона.
На разных устройствах даже одного бренда данные могут быть структурированы как угодно. Номер шаблона актуален только внутри устройства. Данные в таком же шаблоне у другого устройства скорей всего будут иметь другую структуру. Поэтому для каждого сенсора приходится создавать отдельную базу.
Что бы определить, какие данные содержат поля в версии 9, необходимо пользоваться таблицей соответствия.

Планы
1) Оптимизация кода.
2) Типизация и оптимизация данных.
3) Работа с различными типами баз данных (не только mysql)
4) Улучшение логирования.

3 комментария

avatar
Переоформил статью. Теперь есть намек на релиз.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.