Разработка электроники,
Систем автоматики,
Программного обеспечения
ООО "Антех ПСБ",
Санкт-Петербург
+79811865082
anteh@bk.ru
https://anteh.ru
Исходник не выкладывается, исполняемым файлом для некоммерческих целей можно пользоваться без ограничений. Лицензионное соглашение 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 минут на собиралось.
Далее настраиваем всё по потребностям