LINUX.ORG.RU
решено ФорумAdmin

Скормить NetFlow v9 в InfluxDB

 , , ,


0

1

В продолжение вот этой темы про подкроватный мониторинг. Есть ли у кого-либо идеи или (вдруг) готовые скрипты/решения на тему того, как сохранять данные с коллекторов NetFlow v9 в InfluxDB или что-нибудь подобное?

Нужен именно NetFlow, sFlow не подойдёт, т. к. коллектор — это роутер MikroTik.

★★★★★

если ты не встретил в гугле готового решения, значит его нет

собери свой велосипед, flowd+go-скрипт+garfana

hizel ★★★★★
()
Ответ на: комментарий от hizel

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

Но вообще —

flowd

— как минимум за это спасибо.

intelfx ★★★★★
() автор топика

Вот, что с ходу придумал:
Вариант 1:
sflowtool -> sflow2graphite -> influxdb-graphite-plugin -> influxdb -> grafana
Вариант 2:
logstash c logstash-codec-netflow -> elasticsearch -> grafana
Вариант 3:
logstash c logstash-codec-netflow -> -> influxdb-graphite-plugin(?) -> influxdb -> grafana (см. тут)
Вариант 4:
sflowtool -> your convertor or another convertor -> influxdb -> grafana

anonymous_sama ★★★★★
()
Последнее исправление: anonymous_sama (всего исправлений: 1)
Ответ на: комментарий от intelfx

нет классическим велосепидистам не нужен influxdb, им нужно хранить сырой нетфлов для органов и агрегацию пихать в билинг

hizel ★★★★★
()
Ответ на: комментарий от anonymous_sama

Насколько я понимаю, в этом режиме оно принимает sFlow, конвертирует и отправляет NetFlow v5. А мне нужно хотя бы наоборот.

intelfx ★★★★★
() автор топика
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

ntopng 100% умеет NetFlow v9, дальше можно либо завернуть на elasticsearch, и на некотором этапе развития были скрипты для InfluxDB, которые наверняка все еще работают.

anonymous_sama ★★★★★
()
Ответ на: комментарий от af5

nfsen мне не подходит (по крайней мере без написания плагинов). В простейшем случае я бы хотел видеть на stacked-графике суммарный трафик по разным пользовательским машинам из своей сети. Их хоть и конечное количество, но адреса не фиксированные, поэтому я не могу захардкодить их фильтрами.

intelfx ★★★★★
() автор топика
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от intelfx

Свистни если найдешь что-то лучше

af5 ★★★★★
()
Ответ на: комментарий от intelfx

Да, но вариант все равно не плохой, был еще какой-то платный плагин к grafana, который умеет в том числе и netflow.

anonymous_sama ★★★★★
()
Ответ на: комментарий от intelfx

по разным пользовательским машинам из своей сети. Их хоть и конечное количество, но адреса не фиксированные, поэтому я не могу захардкодить их фильтрами.

Юзеров надо распихивать по индивидуальным VLAN, тогда проще

af5 ★★★★★
()
Ответ на: комментарий от af5

Ну кто будет заниматься этим в домашней сети? :) Так бы я смог и адреса статической арендой раздать.

intelfx ★★★★★
() автор топика
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от anonymous_sama

Посмотрю, спасибо.

Главное — не насобирать сейчас энтерпрайзного софта на половину рамы в сервере.

intelfx ★★★★★
() автор топика

На https://linux.die.net/man/1/flow-tools смотрел?

Netflow v5 (микротик должен уметь его экспортировать) кстати довольно простой протокол, можно за день написать «парсер».

адреса не фиксированные

А как ты адреса связываешь с хостами? Берешь из DHCP?

Deleted
()
Ответ на: комментарий от Deleted

На https://linux.die.net/man/1/flow-tools смотрел?

Не смотрел. Посмотрю. С его помощью можно обрабатывать записи своим скриптом в потоковом режиме (без сбора в промежуточный файл)?

А как ты адреса связываешь с хостами? Берешь из DHCP?

Да, я хочу брать их из DHCP (если точнее, обратными запросами ко встроенному в микротик DNS-кэшу, в который вносятся искусственные записи согласно выданным адресам). По этой причине мне как раз нужно уметь пропускать все flow-ы через кастомный скрипт-фильтр в реальном времени перед отправкой в InfluxDB. Но flowd, nfdump так не умеют, а fluentd, кажется, только на рубях.

intelfx ★★★★★
() автор топика
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от intelfx

С его помощью можно обрабатывать записи своим скриптом в потоковом режиме

Да, там в мане есть примеры

       Listen on port 9800 on any local interface from any IP address, display the received flows with flow-print.

       flow-receive 0/0/9800 | flow-print

пропускать все flow-ы через кастомный скрипт-фильтр

Записей же может быть дофига? Если на каждую серию записей ходить к DNS-кешу микротика, ему плохо не станет? Придется делать какой-то локальный кеш. Хотя, надо пробовать, конечно, может все не так страшно

Deleted
()
Ответ на: комментарий от Deleted

Да, там в мане есть примеры

Ага, хорошо. А с netflow v9 у него как? Или он не нужен?

Если на каждую серию записей ходить к DNS-кешу микротика, ему плохо не станет? Придется делать какой-то локальный кеш.

Да, у меня локально resolved работает.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от intelfx

А с netflow v9 у него как?

Не знаю, я им пользовался только с v5. Даже «пользовался» громко сказано, скорее тестировал некоторые штуки.

Для твоих целей v5 должно хватить. Недавно, кстати, был тред с проблемой на микротике и netflow v9:

mikrotik + nfdump = где локальный трафик?

Deleted
()
Ответ на: комментарий от Deleted

Недавно, кстати, был тред с проблемой на микротике и netflow v9

Ага, спасибо, учту.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от intelfx

flow-print у меня не заработал ­— просто ничего не выводит

Может буферизирует? У него вроде есть ключ -l Unbuffer output, но я щас попробовал, выглядит так как будто он его игнорирует. То есть да, сначала ничего не печатает, потом вываливает стену текста.

Ну, если уж совсем все будет плохо, всегда можно навелосипедить парсер этого netflow. v5, повторюсь, очень простой формат: http://www.cisco.com/c/en/us/td/docs/net_mgmt/netflow_collection_engine/3-6/u...

Deleted
()
Ответ на: комментарий от Deleted

Да, пробовал этот ключ, тоже безрезультатно. Видимо, тогда я просто возьму nfcapd и заставлю его ротировать файлы каждую минуту.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от intelfx

если точнее, обратными запросами ко встроенному в микротик DNS-кэшу

и что, эти обратные запросы работают?

идея с netflow v9 была более реальной, там хоть по макам можно было бы посчитать

hizel ★★★★★
()
Ответ на: комментарий от hizel

и что, эти обратные запросы работают?

Да, работают, я уже набросал прототип на шелле. Только для IP-адреса внешнего интерфейса микротика всё равно отдельный костыль нужен.

идея с netflow v9 была более реальной, там хоть по макам можно было бы посчитать

Не понял. При чём тут netflow v9 и маки?

intelfx ★★★★★
() автор топика
Ответ на: комментарий от hizel

А. Ну я вроде обошёлся.

So far, пока что наиболее реальной выглядит nfcapd + nfdump + скрипт на питоне + HTTP API графаны. А flowd какой-то странный — апстрим мёртвый, требует каких-то захардкоженных пользователей, API только для второго питона и т. п.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от hizel

Я посмотрел на этот ужас с v9 и похакал v5 для ipv6 :)

vel ★★★★★
()
Ответ на: комментарий от anonymous_sama

В общем, fluentd так и не осилил. Взял nfcapd, заставил его генерировать выходные файлы каждую минуту и набросал за пару дней на питоне «транслятор»-обёртку вокруг nfdump. Заодно прикрутил туда какой-то препроцессинг (отресолвить адреса, обменять местами src и dst, чтобы в src всегда был локальный адрес). Вроде работает.

intelfx ★★★★★
() автор топика
Последнее исправление: intelfx (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.