nuclearcat Posted August 9, 2017 Кто-то делал "postprocessing" для netflow архивов? Я запилил на C++, сижу пытаюсь сделать кое-какой статистический анализ(пытаюсь создать статистику по потребителям), но обработка(в основном, но не так уж значительно - время уходит на выдергивание ip в username) - 40 минут на миллиард записей. Интересно если у кого-то был схожий опыт. Формат - nfdump+lzo Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
snvoronkov Posted August 10, 2017 Формат - nfdump+lzo Используем flowtools. Тоже с компрессией. Самописный обработчик. Классифицирует поток по IP, суммирует и кладет в базу. Обрабатывается примерно на порядок быстрее. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nuclearcat Posted August 10, 2017 Суперинтересно! :) А какова приблизительно плотность записи и дисковая подсистема? У меня например тестовые выборки: 12.843.236 записей заняли 600 мбайт в сжатом виде(несжатые 960Mb), т.е. около 46 байт на запись в сжатом виде и ~75 в несжатом(но там сохранен практически полный netflow), сжатие lzo Ориентировочно у меня 20 гиг на миллиард записей, обычный винт - упираюсь в i/o, если не делаю соответствие ip в username (у меня динамика и адреса у юзеров часто меняются из-за перебоев с электричеством). Т.е. вычитывание 20 гиг со скоростью 90Мбайт в секунду ~511 секунд, по идее быстрее чем 8.51 минут не получится, на порядок разогнатся никак не выходит(у меня). Ну и плюс т.к. данные в тот же момент пишутся, максимальная скорость чтения ощутимо ниже. Самая главная проблема в том, что надо сделать экономное решение, можно конечно напхать SSD и памяти 128 гиг, но это нерентабельно. Хотя скорость дисковой подсистемы прийдется поднимать. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
snvoronkov Posted August 10, 2017 # Записей $ 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 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nuclearcat Posted August 10, 2017 Ааа.. блин, в кеше. В кеше у меня вообще все со свистом влетает :) Но кстати надо попробовать сделать preload данных, похоже производительность сильно падает, т.к. программа ждет вычитывания очередного куска данных. У вас еще похоже записи покороче, ~22 байта на запись, но тут у меня неизбежное зло - надо хранить максимум данных из netflow. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
ichthyandr Posted August 10, 2017 Кто-то делал "postprocessing" для netflow архивов? Я запилил на C++, сижу пытаюсь сделать кое-какой статистический анализ(пытаюсь создать статистику по потребителям), но обработка(в основном, но не так уж значительно - время уходит на выдергивание ip в username) - 40 минут на миллиард записей. Интересно если у кого-то был схожий опыт. Формат - nfdump+lzo а смысл? Записи всеравно перебирать одну за другой приходится, на чем не пиши - быстрее не будет, ибо O(n) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
nuclearcat Posted August 10, 2017 Ничуть, nfdump складывает файлами, я уже сделал thread pool по количеству процессоров (заодно подтянул SSD) - скорость выросла раз в 5. Если конечно алгоритм позволяет разбить обработку (у меня позволяет). Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
edo Posted August 10, 2017 яндексовский clickhouse не смотрели? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
pavel.odintsov Posted August 10, 2017 Угу, Clickhouse рулит. Мы его в FastNetMon Advanced используем :) Запросы за последние месяцы выполняются мгновенно :) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
wed Posted August 11, 2017 Я пока заливаю так: 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 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Sonne Posted June 18, 2018 Есть ли живые коллекторы Netflow в Clickhouse кроме упомянутого выше FastNetMon ? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Sonne Posted June 18, 2018 Нашел кое что современное. Enterprise level Netflow collector как они себя называют от Verizon: https://github.com/VerizonDigital/vflow Пишет в очередь сообщений Kafka, из которой можно лить в Clickhouse Похожая штука от ClowdFlare: https://github.com/cloudflare/goflow Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
wed Posted May 13, 2021 Тестировали коллекторы? Есть что-то новое и современное? Задумался насчет перехода. Хочется усреднить хранение, сделать агрегацию до 5ти минут например... Использовать кодеки сжатия в столбцах. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
GrandPr1de Posted May 14, 2021 pmacct умеет агрегировать по времени перед тем как отправить дальше Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
edo Posted May 17, 2021 бывает ли на свитчах 10g+ «классический» netflow? мне для логирования действий компьютеров в локалке, иногда задним числом оказывается нужно найти с какого компа были (единичные) запросы к какому-нибудь сервису, sflow такое не «заметит». Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
jffulcrum Posted May 17, 2021 1 час назад, edo сказал: бывает ли на свитчах 10g+ «классический» netflow? Nexus. CPU в них хорошие, должны вытащить. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
roysbike Posted May 17, 2021 ipt_netflow и Postgres с TimeslaceDB дает хорошие результаты. TSDB жмет до 10 раз. Чанки создаются на каждый день Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...