Netflow-искания Часть 2 (анализаторы)

Блог им. dreamhunter
Итак, если вы вдруг случайно настроили сенсоры, коллекторы и FlowTools, то естественно встанет вопрос с анализатором. Flow-Tools — очень хороший пакет программ. Но если вы работаете в более-менее приличной конторе, в которой есть больше одного IT работника, вам понадобится как то представлять (показывать) информацию своим коллегам и начальству для дальнейшего разбора полетов.

Задача: Подготовить отчеты по трафику для удобного просмотра.

Имеем: Данные коллектора (flow-capture).

Подготовка

В современном мире пожалуй самым удобным доступом к данным является доступ через WEB. Потому естественно нам понадобится Apache. Вероятней всего нам понадобится MySQL и PHP (но не факт). Я поставлю пакет этих программ потому что рано или поздно мне это понадобится. Еще отмечу, что если программирую я, то обычно выбираю perl, но как правило у нас будет много попутного софта, который будет написан на PHP. Как вам — решайте сами.

Обзор ПО для работы с NetFlow


Бесплатные решения

FlowViewer

Этот «продукт» первым мне на глаза попался. Набрел я на него пока устанавливал flow-tools и мастерил первый perl-скрипт для генерации отчетов. На сайте я увидел, что текущая версия 4.0, однако в (обновленной) коллекции портов FreeBSD почему то доступна только третья. Так же на сайте сказано, что их система перешла в SourceForge (читаем сырое), начинаем беспокоиться…
Сперва я попробовал установить версию из портов. Процесс установки был вполне себе простым. В конце было предложено добавить несколько строчек в Apache и гарантировалось счастье.

Но счастье не пришло. Естественно пришлось идти на сайт, качать более новую версию, долго вникать в тонкости. В результате я смог добиться невнятной картинки, на которой никаких данных так и не отображалось. Так как с двух ударов в бубен работать не начало, было принято решение двигаться дальше. Тем более пока есть куда.

Cacti

Этот комплекс позиционирует себя как «complete network graphing solution». Я слышал много положительных отзывов о этой программе от различных людей, заслуживающих уважения. В сумме звучит многообещающе. Основная статья по установке и настройке комплекса выведена в отдельную статью. Ниже будет только обзор.
Итак cacti — это комплекс мониторинга сети. Основной (базовый) модуль создан для сбора и информации по SNMP. NetFlow анализатор является подключаемым плагином, который умеет парсить (с помощью пакета программ flow-tools) и приводить в нужный вид файлы, полученные с коллекторов.
В целом комплекс очень хороший, но есть множество преодолимых проблем, которые делают этот продукт недоступным к использованию для простого системного администратора, но в принципе работоспособным. С другой стороны его понадобится заточить только один раз. Потом можно просто пользоваться.

Выводы

Итак. После наших изысканий стало ясно, что некий инструментарий мы имеем и в принципе он работоспособен. Для этого нужно не много — большой напильник, бубен и длинная-длинная борода.
Cacti нам мне удалось довести до ума. Мало того я получил тот функционал, какой был мне нужен. Однако у меня такое чувство, что FlowViewer я тоже мог бы настроить. Работоспособность плагина cacti (именно плагина) было чисто волевым решением. Может быть в дальнейшем я допилю и выложу статью про FlowViewer.

Платные решения

В рамках обзора ПО, стоит затронуть и платные продукты. Естественно деньги намекают на простоту использования и наличие техподдержки. Попробуем выбрать оптимальный вариант.

Manage Engine

Пожалуй это первое, что выдаст google если искать по слову netflow. Это решение включает в себя коллектор и анализатор.

Цена
Цена вопроса может очень сильно варьироваться. Лично мне нравится, что прайс лист гордо лежит в легко доступном месте, а не стыдливо спрятан за тысячами непонятных форм регистрации. Так что можете ознакомиться тут. Минимальная цена на момент написания статьи — 795$(лицензия) + 159$(поддержка). Лицензия включает в себя 10 интерфейсов — вполне достаточно для начала. Дополнительные лицензии можно будет докупать. Кстати если соберетесь покупать этот продукт, я бы посоветовал покупать пакет «Professional Plus» (1195$ + 239$), т.к. в простой «Professional» нельзя добавлять полезные аддоны.
Вообще этот пакет довольно демократичный. Когда вы соберетесь покупать, вы будете это делать это осознано. У программы есть 30тидневный испытательный период, в течение которого вы сможете оценить программу, собрать начальные данные и определиться с выбором нужных вам функций.

Внешний вид
Сразу предупрежу: Русификации нет. Правда она и не нужна т.к. сама по себе технология Netflow придумана не у нас, так что смиритесь господа.
После авторизации вас встретит Dashboard. Его можно настроить под себя. Мало того вы сможете настроить несколько различных конфигураций. Зная ключевые слова по Netflow идеологии и пробежавшись по вкладкам вы быстро освоитесь. Отмечу большое количество графиков даже там где они неинформативны, а порой даже не уместны. Вероятно это сделано разработчиками для менеджеров. Они же любят графики.
Еще хочу отметить навязчивую идеологию разбивать траффик на 4 группы: In+source, Out+source, In+Destination, Out+Destination. Проблема в том что в такой разбивке трафика тяжело ориентироваться. И эта идеология бесполезна в группировании трафика, которое включено в систему.

Функционал
Этот пакет программ умеет многое.
— Динамическое отображение данных по NetFlow
— Работа с NetFlow V9
— Графики
— Настраиваемый Dashboard
— Множество плагинов
Вот полный список возможностей.

Минусы
Минусов немного, но они есть.
— Избыточность графиков
— При обновлении Dashboard обновляется вся страница. По глазам режет. Смогли же сделать нормально обновление графиков — могли бы и это сделать.
— Windows only. Я так понял понятие мультиплатформенности отсутствует.

Выводы
Пакет в целом неплох. Серьезных багов найти не удалось. Есть модные фичи как Customisation и Dashboard. Для настройки действительно не нужно обладать серьезными знаниями. Достаточно быть администратором windows (надо закопирайтить фразу).

Галерея
ManageEngineLogin
ManageEngineDashboard

P.S. Уважаемые читатели! Я вас очень прошу оценивать мои статьи. Причем мне очень важна ваша конструктивная критика. Если вы поставите отрицательную оценку, то я вас прошу, обязательно напишите в комментариях ваши замечания по статье. Если же вы хотите меня похвалить — достаточно просто нажать лайк.

P.S.P.S. Это оригинальная статья и может быть источником для репостов. Просьба делать пометку со сылкой на источник.

12 комментариев

avatar
Отлично. Может только в название добавить, что речь про cacti?
avatar
Добавил в ключи.
avatar
Хорошо, плюсик поставил и вывел на главную.
avatar
Я все данные кладу в базу. Уже около 120млн строк накопилось (около 9GB за 4 месяца). Недавно начал писать на python обработчик этих самых данных. Все получилось, но так как Перфекционизм взял верх, переписываю. Уж больно сильно хотелось получить первые результаты. Пока все выводится в консоль (можно '>>'). Но в планах выдавать результат в html.

В день набегает около 1.5млн. записей. Выборка этих записей около 3.5-4 минут, подсчет трафика для каждого хоста (55-70) еще минуты 2. В планах сделать еще более детальный отчет для каждого хоста.
avatar
с одного коллектора? Можно посмотреть структуру таблицы? (не содержимое)
avatar
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| UNIX_SECS | int(255)    | NO   |     | NULL    |       |
| DOCTETS   | int(255)    | NO   |     | NULL    |       |
| SRCADDR   | varchar(45) | NO   |     | NULL    |       |
| DSTADDR   | varchar(45) | NO   |     | NULL    |       |
| PROT      | int(11)     | NO   |     | NULL    |       |
| SRCPORT   | int(5)      | NO   |     | NULL    |       |
| DSTPORT   | int(5)      | NO   |     | NULL    |       |
| DPKTS     | int(11)     | NO   |     | NULL    |       |
| FIRST     | int(255)    | NO   |     | NULL    |       |
| LAST      | int(255)    | NO   |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
avatar
Я тоже вел исследования и некоторые расчеты, а именно.
В максимальной детализации мы имеем следующие данные:
+-------------+------------+-------+
|  Field      | Type       | Size  |
|             |            |(byte) |
+-------------+------------+-------+
|Start        | DATATIME   | 8     |
|End          | DATATIME   | 8     |
|Sif          | SMALLINT   | 2     |
|SrcIPaddress | MEDIUMINT  | 3     |
|SrcP         | SMALLINT   | 2     |
|DIf          | SMALLINT   | 2     |
|DstIPaddress | MEDIUMINT  | 3     |
|DstP         | SMALLINT   | 2     |
|P(rotocol)   | TINYINT    | 1     |
|Fl(ows)      | MEDIUMINT  | 3     |
|Pkts         | INTEGER    | 4     |
|Octets       | BIGINT     | 8     |
+-------------+------------+-------+
| Summary:                 | 46    |
+-------------+------------+-------+

То есть даже если мы возьмем с запасом, запись в таблице должна занимать не более 50 байт;
1500000 записей * 50 байт = 75мбайт
4 месяца * 30 * 75 = 9000мбайт.

Что ж, вполне адекватные размеры. Вот только не понятно: зачем хранить данные за 4 месяца?
avatar
Я стал записывать данные в базу и хотел было начать их обрабатывать. Но потом как-то руки не доходили. Трафик стал безлимитным и вот уже нет первоочередной необходимости видеть кто сколько накачал. В середине января стал изучать python: есть новый для меня язык, есть задача = идеально для изучения нового языка (если уже знаете 2-3 языка изучить новый не так сложно). Вот и история.

Я хоту обрабатывать данные в базе, потом писать туда результат, вести историю. Исходные данные удалять. Если дотянусь — строить графики.
avatar
Еще хочу сделать как в ligthsquid: у кого какой трафик в определенный момент времени. Но это не скоро, пока даже не представляю как это сделать.
avatar
В определенный момент времени ты не сможешь получить, ибо скорость это трафик * время. То есть в любом случае у тебя будет интервал вместо момента.
Что же касается интервалов, то тут как бы все относительно просто. Например делаем выборку по какому-то IP (или группе адресов), из этого надо выбрать так же только те сессии, которые принадлежат к этому интервалу.
Потом нужно выяснить, какая часть этого интервала касается заданного и вычислить…

То есть тебе надо дискретезировать.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.