Агрегирование данных потока
Сервер сбора NetFlow в типичной крупномасштабной сети получает тысячи потоков в секунду. Сохранение всех потоков в базе данных как постоянных в течение значительного времени и быстрая загрузка их по требованию в целях визуализации потребует огромных ресурсов сервера (мощность процессора, память и место на жестком диске).
Чтобы найти компромисс между подробной статистикой данных потока и потреблением ресурсов сервера, SberMobile Network Manager использует сложное многоуровневое кэширование потока и систему агрегации. Эта система включает в себя два основных уровня:
- Кэш потоков в памяти
- Многоуровневая агрегация потоков в базе данных сервера
Настройки агрегации данных потока можно осуществить в глобальной конфигурации плагина NetFlow. Для получения доступа к этой конфигурации:
- Разверните узел Драйвера/Плагины () в системном дереве.
- Щелкните дважды на плагине NetFlow ().
Кэш потоков в памяти
Кэш потоков в памяти - это первый кэш, куда попадает полученный поток. Это также самый быстрый кэш, он гораздо быстрее по сравнению с системами хранения потоков базы данных более низкого уровня. При этом оговорокой будет использование большой оперативной памяти сервера.
Кэш-память контролируется тремя параметрами:
Свойство | Описание |
Максимальный размер кэш-памяти | Определяет максимальное количество потоков, которые могут быть собраны в памяти до начала этапа агрегации первого уровня. |
Период кэш-памяти | Определяет период агрегации первого уровня. Агрегация будет производиться в каждый период, независимо от того, достигло ли количество потоков в памяти Максимального размера кэш-памяти. |
Объем отброшенного трафика, % | Определяет, сколько потоков будет отброшено во время этапа агрегации первого уровня. |
Все потоки, полученные от устройств, изначально хранятся в кэш-памяти. Все элементы кэша обрабатываются сервером на так называемом этапе агрегации, который начинается:
- В конце каждого Периода кэша-памяти
- Если количество потоков в кэше превышает Максимальный размер кэш-памяти
Этапы агрегации потоков
Этап агрегации потоков включает несколько шагов:
- Объединение "равных" потоков в единый поток. Все потоки в кэш-памяти или хранения баз данных обрабатываются. Сервер находит потоки с такими же адресами, портами, типами трафика, а также другими показателями источников/адресатов. Эти потоки объединяются в единый поток путем суммирования их объемов перевозок. Общее количество потоков в кэше, таким образом, уменьшается.
- Отбрасывание наименее важных потоков. Потоки, отражающие небольшое количество переданных байт, считаются менее важными, чем потоки, представляющие большие объемы трафика. Сервер вычисляет общий объем трафика, представленный всеми потоками в кэше, сортирует агрегированные потоки по объему трафика и отбрасывает потоки с наименьшими счетчиками трафика один за другим, пока общий объем трафика, представленный оставшимися потоками, не снизится до процентов Объема отброженного трафика по сравнению с первоначальным объемом трафика. На практике отбрасывание всего 1-3 процентов объема трафика будет на самом деле причиной падения 80-90% потоков. Эти потоки соответствуют приложениям, которые не генерируют много трафика и, таким образом, часто не являются важными для анализа (почтовый трафик, мессенджер приложений, трафик, вызванный мониторингом сети и т.д.)
- Перемещение потоков в кэш более низкого уровня. После того, как потоки объединяются и менее важные потоки отбрасываются, число потоков в большинстве случаев сильно снижается. Остальные потоки затем переносятся в кэш более низкого уровня:
- Потоки, содержащиеся в кэше памяти, переносятся в систему хранения базы данных первого уровня
- Потоки, содержащиеся в системе хранения базы данных, переносятся в систему хранения более низкого уровня (т.е. с первого уровня на второй уровень)
Системы хранения потоков базы данных
Системы хранения потоков базы данных - это выделенные таблицы баз данных, содержащие постоянно хранимые потоки. Существует немало систем хранения, называемых "уровни", каждая система хранения во многих смыслах подобна кэшу потоков в памяти.
Каждая система хранения конфигурируется по:
- Периоду хранения, т.е. периоду этапов агрегации потоков для этой системы хранения. Эта опция подобна Периоду кэш-памяти кэша потоков в памяти.
- Проценту Объема отброшенного трафика, используемого для отбрасывания менее важных потоков на этапе агрегации.
Системы хранения потоков базы данных настраиваются через таблицу Конфигурация системы хранения базы данных. Вот как может выглядеть таблица конфигурации системы хранения по умолчанию:
Период хранения | Объем отброшенного трафика, % |
5 минут | 1 |
1 день | 5 |
1 месяц | 5 |
1 год | 5 |
После завершения этапа агрегации кэша потоков в памяти, все потоки отправляются в систему хранения базы данных первого уровня. Каждые пять минут все потоки агрегируются, 1% из наименее важных потоков отбрасывается, а оставшиеся потоки переносятся в кэш второго уровня, где они остаются в течение 1 дня, и так далее.
Агрегирование данных потока в настоящее время не работает с встроенным NoSQL хранилищем из-за использования родного функционала движков БД. |