Skip to content

Latest commit

 

History

History
105 lines (80 loc) · 11.8 KB

README.ru.md

File metadata and controls

105 lines (80 loc) · 11.8 KB

xenoeye

Легкий коллектор 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.

Эти цифры лучше читать с пессимистичным настроением:

  1. если вы нагрузите коллектор многими объектами мониторинга с кучей отчетов и отладочной печатью, он может захлебнуться на 100K fps/CPU и меньше
  2. скорее всего 700K fps и больше на одном CPU обсчитать не получится

Про масштабирование на несколько ядер написано ниже в документации

Документация

Планы на будущее

Сейчас мы не планируем добавлять новые фичи. Cмотрим на стабильность, результаты работы, пытаемся исправить ошибки и сделать код более простым и понятным