Jump to content
Калькуляторы

Обработка netflow

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

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

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

Формат - nfdump+lzo

Share this post


Link to post
Share on other sites

Формат - nfdump+lzo

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

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

 

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

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

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

 

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

Share this post


Link to post
Share on other sites

# Записей
$ 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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

Формат - nfdump+lzo

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.