Разработка электроники,

Систем автоматики,

Программного обеспечения

ООО "Антех ПСБ",
Санкт-Петербург

+79811865082

anteh@bk.ru

ООО Антех ПСБ примеры

sfttonf конвертор netflow v5 статистики созданной flow-capture коллектором к формату nfdump и структуре папок используемых в nfsen web интерфейсе

https://anteh.ru

sfttonf архив

Исходник не выкладывается, исполняемым файлом для некоммерческих целей можно пользоваться без ограничений. Лицензионное соглашение sfttonf.

sfttonf нужен для преобразования файлов статистики netflow v5 созданных flow-capture коллектором к формату nfdump коллектора и размещения сконвертированных и если нужно сжатых файлов в указанной директорией с иерархией папок поддерживаемой nfsen. Через конфигурационный файл указываем откуда, куда, формат иерархии директорий, нужно ли сжатие. Есть возможность динамического конвертирования вновь появляющихся файлов статистики. Это запуск sfttonf через cron c определённой периодичностью и указание sfttonf первым парамертом количества последних минут, за которые нужно проверить наличие новых файлов коллектора flow-capture. Утилита производит преобразование форматов файлов посредством ft2nfdump и синхронизацию всех директорий, указанных в конфигурационном файле утилиты. При синхронизации создаются преобразованные копии файлов коллектора flow-capture, т.е. дискового пространства потребуется в два раза больше. Файл источник -файл flow-capture, файл приёмник -файл nfdump. Преобразуется как формат файла источника, так и его имя, например ft-v05.2012-01-17.161138+0400 будет преобразован и записан в папку назначения с именем nfcapd.201201171611. Данные коллектора нельзя просто свалить папку nfsen откуда он их будет брать, там существует жёсткая привязка в структуре папок и имён файлов. Имена файлов во встроенном в nfsen nfdump коллекторе идут только с шагом в 5 минут. Плюс ко всему для преобразованных данных не строятся графики, но работает отображение данных по фильтру.

Утилита sfttonf принимает один или два параметра: sfttonf [число последних минут за которые проверяется наличие новых файлов] <путь и имя конфигурационного файла>. Конфигурационный файл содержит строки, каждая строка описывает одну цепочку папка источник flow-capture -> папка назначение nfsen. Папка источник может содержать любое количество вложенных папок. Строк может быть любое количество, хотя в простых случаях достаточно и нескольких. Источник и назначение должны быть существующими папками. Возможно использование sfttonf как сортировщика сваленных в одну папку flow-capture данных по заданной иерархии папок.

Утилита sfttonf после запуска читает конфигурационный файл, попутно проверяется правильность записей. Одна строка содержит запись об одной паре источник(flow-capture) -> приёмник(nfsen). В строке может присуцтвовать в любом количестве и в любых местах табуляции и пробелы. В конце пути к папке источника/приёмника символ '/' должен отсуцтвовать. Символ '>' -разделитель между путём источником и путём назначения. Если первым параметром при запуске sfttonf не указано количество минут, то производится просмотр абсолютно всех файлов на стороне источника, а не только за последние столькото минут. Для каждой пары источник->приёмник можно указать свою уникальную иерархию дректорий и необходимость сжатия. Иерархия директорий задаётся ключами %Y %m %d %H. %Y-год 4символа, %m-месяц 2символа, %d-день 2символа, %H-час 2символа. Ключи можно набирать в любом сочетании и количестве, комбинируа их с обыкновенными символами. Например можно '%Y/%m/%d' или '%Y/%m/%d/%H' или '%Y-%m-%d/%H' или '%Ybla /%Ybla%m bla/%Yblaa%mee%dyoy'. Пробелы и табуляции между символами значения не имеют, при обработке строк они в расчёт не берутся. Ключ %z используем, если выходные файлы nfcapd должны быть сжаты. Если не указывать иерархию директорий на стороне приёмника, то будет созданна такаяже иерархия, как и на стороне приёмника.

Производится перебор по всем строкам конфигурационного файла. Читаются имена всех директорий находящиеся в текущей директории источника(вложенность директорий любая но не стоит из любопытства указывать директории со слишком большим количеством файлов например /usr ждать придётся не один день), производится перебор по всем директориям пути источника и поиск файлов имя которых начинается на "ft-v05.", и длина имени составляет 29 символов, если имя файла не удовлет этим условиям, то файл к дальнейшей обработке не берётся. Затем поиск соотвецтвующей папки на стороне назначения, если папки нет, то создаём. После нахождения/создания папки проверяется, существует ли файл с соотвецтвующим преобразованным именем файла источника в папке приёмника, если нет, то выполняем преобразование через ft2nfdump и запись в папку назначения. Т.е. преобразование производится только для вновь появившихся "ft-v05." Файлов, если на стороне приёмника обнаруживается файл с такимже именем, то старый файл не перезаписывается. Папка на стороне приёмника создаётся, если в одноимённой папке на стороне источника есть хотябы один "ft-v05." Файл и его длина =29 символов. Формат имени файла источника должен быть только такой ft-v05.2012-01-17.161138+0400 т.е. всего 29 символов и первые 7 должны быть равны "ft-v05.". Такое имя преобразуется к виду nfcapd.201201261950 т.е. всего 19 символов и первые 7 равны "nfcapd.".

В общем:

sfttonf [число] <путь и имя конфигурационного файла>

[число] -число последних минут за которые проверяется наличие новых файлов относительно текущего системного времени. Читается системное время, от него вычитается время записанное в имени файла, результат сравнивается с [число] минут, и если [число] больше, то файл обрабатывается дальше, если нет, то пропускается. За время создания файла принимается время считанное из имени файла источника. [число] параметр нужен для увеличения скорости работы программы, заметно должно быть при большом количестве файлов на стороне источника возможно несколько тысяч и более. На стороне источника всегда просматриваются все каталоги и файлы. На всякий: при использовании [число] для указывания больших временных интервалов(больше месяца, правда врятли такое понадобиться) берём в расчёт, что в одном месяце у sfttonf 30.4 дней. Максимальное значение [число] = 999999999. Если, например, flow-capture настроен на формирование файлов раз в 5минут и при запуске sfttonf через cron по расписанию используется параметр [число] то он должен превышать период формирования файлов flow-capture. В конкретном случае более (5+1)минут. Но лучше указывать время в несколько раз большее например 30минут.

<путь и имя конфигурационного файла> -путь к имени и имя конфигурационного файла. Если указано только имя, то конфигурационный файл и sfttonf должны находиться в одной директории.

Скомпилированный в FreeBSD 8.2 p6 исполняемый файл sfttonf можно скачать по нижеприведённой ссылке. Разумеется sfttonf вы используете на свой страх и риск и за причинение каких либо неудобств связанных с работой программы или последствиями её работы автор отвецтвенности не несёт. При использовании sfttonf никаких проблем выявленно не было.

ССЫЛКА НА sfttonf tar aрхив содержит исполняемый файл, шаблон файла конфигурации и 2 файла if_nametoindex.

В какой либо директории, можно в этой же создаём конфигурационный файл, содержимое файла приводится ниже:

# -комментарий.

НАЧАЛО

# Config file for "sfttonf" utility. Utility intended for enhansment convertion from

# flow-capture format data file to nfsen format data file. Using ft2nfdump utility.

# Max number of couple source folder -> destination folder is 255.

# Max path length for source or destination is 255 charactes.

# Space and Tab in line you can use in any combination

# data from /usr/local/etc/nfsen.conf

# Directory sub hierarchy layout:

# Possible layouts:

# 0 default no hierachy levels - flat layout - compatible with pre NfSen versio

# 1 %Y/%m/%d year/month/day

# 2 %Y/%m/%d/%H year/month/day/hour

# 3 %Y/%W/%u year/week_of_year/day_of_week

# 4 %Y/%W/%u/%H year/week_of_year/day_of_week/hour

# 5 %Y/%j year/day-of-year

# 6 %Y/%j/%H year/day-of-year/hour

# 7 %Y-%m-%d year-month-day

# 8 %Y-%m-%d/%H year-month-day/hour

# $SUBDIRLAYOUT = 1;

# For creation sub hierarchy you can use %Y %m %d %H key words and another character

# in any combination

# If key words for sub hierarche will not be used that will be used sub hierarchy the sam

#--EXAMPL-----------------------EXAMPL------------------------------EXAMPL-

#</flow-capture source folder> > </nfsen destination folder>

#</flow-capture source folder> > </nfsen destination folder> %Y / %m / % d

#</flow-capture source folder> > </nfsen destination folder> %Ybla /%Ybla%mb

#</flow-capture source folder> > </nfsen destination folder> %Y/%Y-%m/%Y-%m-%

#---------------------------------------------------------------------------

/usr/flows > /usr/local/var/nfsen/profiles-data/live/flowcapt %Y/%m/%d %z

# /3 > /T5 %Y/%m/%d

#/usr/flows > /T7 %Y/%m/%d

#/usr/flows > /T8 %Y/%m/%d %z

#/usr/flows > /T3 %Ynah%de%mhr%H/lala%H%Y/%mmumu

#/usr/flows/in > /usr/local/var/nfsen/profiles-data/live/allin

#/usr/flows/out > /usr/local/var/nfsen/profiles-data/live/allout

#ServSt

ОКОНЧАНИЕ

Первый запуск делаем без временного параметра или с очень большим временным параметром, это преобразует всю уже существующую базу данных flow-capture:

# ./sfttonf sfttonf.conf -проверка преобразование всего

# ./ sfttonf 30 sfttonf.conf -проверка преобразование всего, что за последние 30 минут на собиралось.

Далее настраиваем всё по потребностям

Copyright ©Новиков Алексей Александрович,

2023 Санкт-Петербург, 197372, ООО "Антех ПСБ",

anteh собака bk.ru