Перейти к содержимому
Калькуляторы

Обработка netflow

Кто-то делал "postprocessing" для netflow архивов?

Я запилил на C++, сижу пытаюсь сделать кое-какой статистический анализ(пытаюсь создать статистику по потребителям), но обработка(в основном, но не так уж значительно - время уходит на выдергивание ip в username) - 40 минут на миллиард записей.

Интересно если у кого-то был схожий опыт.

Формат - nfdump+lzo

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Формат - nfdump+lzo

Используем flowtools. Тоже с компрессией. Самописный обработчик. Классифицирует поток по IP, суммирует и кладет в базу.

Обрабатывается примерно на порядок быстрее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Суперинтересно! :)

 

А какова приблизительно плотность записи и дисковая подсистема?

У меня например тестовые выборки:

12.843.236 записей заняли 600 мбайт в сжатом виде(несжатые 960Mb), т.е. около 46 байт на запись в сжатом виде и ~75 в несжатом(но там сохранен практически полный netflow), сжатие lzo

 

Ориентировочно у меня 20 гиг на миллиард записей, обычный винт - упираюсь в i/o, если не делаю соответствие ip в username (у меня динамика и адреса у юзеров часто меняются из-за перебоев с электричеством).

Т.е. вычитывание 20 гиг со скоростью 90Мбайт в секунду ~511 секунд, по идее быстрее чем 8.51 минут не получится, на порядок разогнатся никак не выходит(у меня).

Ну и плюс т.к. данные в тот же момент пишутся, максимальная скорость чтения ощутимо ниже.

 

Самая главная проблема в том, что надо сделать экономное решение, можно конечно напхать SSD и памяти 128 гиг, но это нерентабельно. Хотя скорость дисковой подсистемы прийдется поднимать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

# Записей
$ for arg in ft-*; do flow-header < $arg; done | awk '/capture flows:/{s+=$4}END{print s}'
684362648
# Объем
$ du -sk .
15281288
# Время на чтение
$ time cat * > /dev/null

real	1m58.828s
user	0m0.273s
sys	0m14.857s

Но оно обсчитывается тупо раз в 10 минут. Файло пока в кэше обсчет идет бодренько. :-)

Да, HP Smart Array E200, 128 mBps

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ааа.. блин, в кеше. В кеше у меня вообще все со свистом влетает :)

Но кстати надо попробовать сделать preload данных, похоже производительность сильно падает, т.к. программа ждет вычитывания очередного куска данных.

У вас еще похоже записи покороче, ~22 байта на запись, но тут у меня неизбежное зло - надо хранить максимум данных из netflow.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кто-то делал "postprocessing" для netflow архивов?

Я запилил на C++, сижу пытаюсь сделать кое-какой статистический анализ(пытаюсь создать статистику по потребителям), но обработка(в основном, но не так уж значительно - время уходит на выдергивание ip в username) - 40 минут на миллиард записей.

Интересно если у кого-то был схожий опыт.

Формат - nfdump+lzo

а смысл? Записи всеравно перебирать одну за другой приходится, на чем не пиши - быстрее не будет, ибо O(n)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ничуть, nfdump складывает файлами, я уже сделал thread pool по количеству процессоров (заодно подтянул SSD) - скорость выросла раз в 5.

Если конечно алгоритм позволяет разбить обработку (у меня позволяет).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Угу, Clickhouse рулит. Мы его в FastNetMon Advanced используем :) Запросы за последние месяцы выполняются мгновенно :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я пока заливаю так:

nfdump -x ch_netflow.sh

cat ch_netflow.sh
#!/bin/bash
nfdump -R /backup/nfdump/$1 -q -o pipe | /bin/sed 's/|/ /g' | /usr/bin/awk '{print strftime ("%F", $2)","strftime ("%F %T", $2)","$10","$11","$15","$16","$24","$6}' | clickhouse-client --host 127.0.0.1 --query="INSERT INTO netflow FORMAT CSV" && nfdump -r /backup/nfdump/$1 -bzw /backup/nfdump/$1-agg && rm /backup/nfdump/$1

 

Так же находил проект https://github.com/filonov-a/simplenat

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть ли живые коллекторы Netflow в Clickhouse кроме упомянутого выше FastNetMon ? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нашел кое что современное.
Enterprise level Netflow collector как они себя называют от Verizon: https://github.com/VerizonDigital/vflow

 

Пишет в очередь сообщений Kafka, из которой можно лить в Clickhouse 
 

Похожая штука от ClowdFlare: https://github.com/cloudflare/goflow

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тестировали коллекторы? Есть что-то новое и современное? Задумался насчет перехода. 

Хочется усреднить хранение, сделать агрегацию до 5ти минут например... Использовать кодеки сжатия в столбцах. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

pmacct умеет агрегировать по времени перед тем как отправить дальше

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

бывает ли на свитчах 10g+ «классический» netflow? мне для логирования действий компьютеров в локалке, иногда задним числом оказывается нужно найти с какого компа были (единичные) запросы к какому-нибудь сервису, sflow такое не «заметит».

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 час назад, edo сказал:

бывает ли на свитчах 10g+ «классический» netflow?

Nexus. CPU в них хорошие, должны вытащить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ipt_netflow и Postgres с TimeslaceDB дает хорошие результаты. TSDB жмет до 10 раз. Чанки создаются на  каждый день

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.