Легкий коллектор Netflow/IPFIX/sFlow
С помощью этого коллектора и Netflow вы сможете
- Видеть трафик IP-сетей, отдельных IP-адресов или сервисов
- Мониторить сетевой трафик и быстро реагировать на всплески
- Наблюдать за характером трафика, распределением пакетов используя разные Netflow поля
Пожалуйста, прочитайте внимательно: некоторые пункты могут быть для вас неприемлемыми
- Проект находится в бета-состоянии. Коллектор работает у нас, но мы не можем дать никаких гарантий что он будет работать у вас
- Это не готовое бизнес-решение, а программа-коллектор и несколько вспомогательных скриптов. Тем не менее, с помощью коллектора вы cможете генерировать почти произвольные отчеты, строить графики, дашборды в Grafana и запускать скрипты, когда скорость трафика превышает лимиты
- Мы используем коллектор для мониторинга своих сетей. У нас используется Netflow v9 и IPFIX, поэтому коллектор поддерживает их.
- Поддерживается также Netflow v5 и sFlow.
- В отличие от многих современных коллекторов мы не используем Apache Kafka, Elastic стек или что-то подобное. Основные рассчеты происходят внутри самого коллектора
- В документации есть примеры построения простых отчетов. Для построения более сложных нужно хотя бы базовое знание SQL
- Коллектор обрабатывает данные двумя способами: агрегирует их за периоды (для получения отчетов и графиков), и использует скользящие средние для быстрой реакции на всплески
- Оба способа могут использоваться как по отдельности, так и совместно. Например, если с помощью скользящего среднего обнаружилось превышение порога, можно запустить пользовательский скрипт и сразу же включить сбор расширенной статистики
- Коллектор не очень требователен к ресурсам. Он вполне может обрабатывать данные и строить отчеты даже на Orange Pi (аналог Raspberry Pi) с 4 Гб памяти
- Ядро коллектора написано на Си
- Коллектор тестировался только под 64-битным Linux (x64, AArch64 и Эльбрус)
- Мы используем PostgreSQL в качестве хранилища для временных рядов. Туда экспортируются агрегированные по выбранным Netflow-полям данные. Агрегация происходит внутри коллектора
- Из коробки поддерживается не очень большой набор Netflow-полей, но вы можете добавить почти любое поле. Сейчас поддерживаются поля с типами «целое» (разного размера) и «адрес» (IPv4 и IPv6)
- У проекта очень либеральная лицензия ISC. У нас нет никаких планов делать коммерческие или частично коммерческие версии. Это значит, что мы не можем дать никаких прогнозов относительно будущего проекта. Но, с другой стороны:
- В коллекторе нет никаких скрытых или искусственных ограничений
Пользователи обычно интересуются хотя бы приблизительной оценкой производительности, поэтому мы сделали несколько тестов: записали в pcap-файлы реальный Netflow трафик разных роутеров и проиграли их на loopback-интерфейсе с помощью tcpreplay на разной скорости.
Тесты запускались на i3-2120 CPU @ 3.30GHz.
Очень грубо можно ориентироваться на такие цифры:
В отладочном режиме, когда в файл печатается содержимое каждого флова получилось около 100K flow в секунду на одном CPU.
В немного более приближенном к продакшен-режиму, с двумя объектами мониторинга, двумя скользящими окнами - около 700K fps на одном CPU.
Эти цифры лучше читать с пессимистичным настроением:
- если вы нагрузите коллектор многими объектами мониторинга с кучей отчетов и отладочной печатью, он может захлебнуться на 100K fps/CPU и меньше
- скорее всего 700K fps и больше на одном CPU обсчитать не получится
Про масштабирование на несколько ядер написано ниже в документации
-
Пошаговая инструкция по установке и настойке
- Сборка и установка
- Проверяем получение Netflow
- Распределение нагрузки по нескольким CPU
- Частота семплирования
- Объекты мониторинга
- IP-списки
- Конфигурируем какие данные экспортировать в СУБД
- Экспорт в СУБД
- Простые отчеты по IP-адресам
- Определяем спам-ботов и ssh-сканеры
- Строим графики с помощью gnuplot
- Графики с помощью Python Matplotlib
- Визуализация трафика в Grafana
- Скользящие средние
- Настройка и установка порогов
- Скрипты и их параметры
- Расширенная статистика
- Оповещение об аномалиях с помощью Telegram-робота
Сейчас мы не планируем добавлять новые фичи. Cмотрим на стабильность, результаты работы, пытаемся исправить ошибки и сделать код более простым и понятным