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