URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 52929
[ Назад ]

Исходное сообщение
"flow-tools"

Отправлено vda256 , 31-Янв-05 18:08 
Друзья, кто пользовался на практике flow-export для перевода данных flows в mysql, помогите определиться с синтаксисом, желательно конечно примеры на практике.
согласно man: flow-export -f3 -mSRCADDR,DSTADDR,DOCTETS -u "user:password:host:port:name:table" < flows  
Я решил попробовать: flow-export -f3 -mSRCADDR,DSTADDR,DOCTETS -u "user:password:host:port:name:table" < flows
где user - root
    password - он самый
    host - написал ip
    port - 3306
    name - flow (имя базы)
    table - test (созданная мной таблица с соответствующими полями)
    flows - путь к файлу
Ругается следующим образом:
flow-tools: format not supported
flow-tools: exported 0 records
Понятно что не нравится фомат, но что не так не понятно. Вроде бы простая команда, а не хотит....  
Ps: И flow-tools и mysql на одной машине (FreeBSD)


Содержание

Сообщения в этом обсуждении
"flow-tools"
Отправлено Sergei Wind , 31-Янв-05 20:36 
<?php
$workdir="/var/flow/router/";
$dh=dir($workdir);
while ($entry=$dh->read()) {
    if ($entry[0]=='f')
    {
        echo("Processing NetFlow File:".$entry."\n");
        $strtoexecute='flow-export -f3 -mDOCTETS,SRCADDR,DSTADDR -u "DBNAME:PASSWD:IP.IP.IP.IP:PORT:DBNAME:TABLENAME" <'.$workdir.$entry;
        exec($strtoexecute);
        $filetodelete=$workdir.$entry;
        unlink($filetodelete);
    };
};
$dh->close;
?>

Скрипт выгребает все flow файлы из workdir и запихивает их в базу. Работает 100%. Прописываешь его в крон например раз в час. Удачи.


"flow-tools"
Отправлено vda256 , 01-Фев-05 16:02 
Спасибо за отзывчивость.
Но прошу немного подкорректировать мои действия.
С PHP вплотную не занимался....
Установил php-4-4.3.6,запустил скрипт сл. образом...
#!/usr/local/bin/php -q
<?php
$workdir="/usr/flow/php/ft-v05.2005-01-31"; (я для теста поместил одну 15-ти минутку в отдельный каталог)
$dh=dir($workdir);
while ($entry=$dh->read()) {
    if ($entry[0]=='f')
    {
        echo("Processing NetFlow File:".$entry."\n");
        $strtoexecute='flow-export -f3 -mDOCTETS,SRCADDR,DSTADDR -u
"root::(пароль):(IP лок машины):3306:flow:test" <'.$workdir.$entry;
        exec($strtoexecute);
        $filetodelete=$workdir.$entry;
        unlink($filetodelete);
    };
};
$dh->close;
?>
В ответ следующее ..
Warning: dir(/usr/flow/php/ft-v05.2005-01-31.181501+0000): failed to open dir: Not a directory in /usr/flow/php/flow-exp.php on line 4
Fatal error: Call to a member function on a non-object in /usr/flow/php/flow-exp.php on line 5
Если можно прошу пояснить в чем могут быть еще особенности (). Спасибо.

"flow-tools"
Отправлено A Clockwork Orange , 01-Фев-05 16:25 
Проверь, может в этом
$workdir="/usr/flow/php/ft-v05.2005-01-31"; - это запись, вероятно должно быть
$workdir="/usr/flow/php/";

"flow-tools"
Отправлено Simps , 01-Фев-05 17:06 
>Проверь, может в этом
>$workdir="/usr/flow/php/ft-v05.2005-01-31"; - это запись, вероятно должно быть
>$workdir="/usr/flow/php/";

Странно ...
flow-tools version 0.67: built by simps@router on Fri Jun 18 14:34:14 MSD 2004

В этих исходниках был нерабочий flow-export точнее та часть что пихала в mysql мне пришлось исходники править


"flow-tools"
Отправлено Sergei Wind , 01-Фев-05 17:26 
>Странно ...
>flow-tools version 0.67: built by simps@router on Fri Jun 18 14:34:14 MSD
>2004
>
>В этих исходниках был нерабочий flow-export точнее та часть что пихала в
>mysql мне пришлось исходники править

Честно говоря не скажу какой у меня билд, но я наступил на те же грабли, что и автор топика - просто не соблюден порядок полей. Он их может экспортить только в "естественном" порядке, так как они в потоке идут.


"flow-tools"
Отправлено Simps , 01-Фев-05 17:27 
>>Странно ...
>>flow-tools version 0.67: built by simps@router on Fri Jun 18 14:34:14 MSD
>>2004
>>
>>В этих исходниках был нерабочий flow-export точнее та часть что пихала в
>>mysql мне пришлось исходники править
>
>Честно говоря не скажу какой у меня билд, но я наступил на
>те же грабли, что и автор топика - просто не соблюден
>порядок полей. Он их может экспортить только в "естественном" порядке, так
>как они в потоке идут.

Да да да что то похожее на правду =) Только походу я сходу полез без разбора в дебри =)


"flow-tools"
Отправлено vda256 , 01-Фев-05 20:34 
Я так понимаю, что порядок DOCTETS,SRCADDR,DSTADDR правильный.
Кстати, у меня  версия 0.66 - какие-нибудь мнения есть?  

"flow-tools"
Отправлено Sergei Wind , 01-Фев-05 17:24 
>Проверь, может в этом
>$workdir="/usr/flow/php/ft-v05.2005-01-31"; - это запись, вероятно должно быть
>$workdir="/usr/flow/php/";

Да, это имя директории, не файла. Скрипт выгребает все файлы из этой директории. Извините, долго не отвечаю - разница во времени 8 часов :(


"flow-tools"
Отправлено vda256 , 01-Фев-05 19:36 
Да, друзья, вы правы, внес изменения.... (убрал лишнее)
Теперь при запуске ни на что не ругается, но и вообще ничего не выдает.
Ведь должен отображать то что посылает echo...
Да кстати еще один вопрос - отдельно пользователя обязательно нужно создавать на БД (у меня сейчас root как был по умолчанию) Я имею не вообще (это и так понятно что нужно), а именно для этой операции.



"flow-tools"
Отправлено Sergei Wind , 01-Фев-05 19:43 
я пускал его просто /scriptdir/php4 flowtosql.php, и echo работало. На счет пользователя в БД это скорее вопрос безопасности чем функциональности :) В идеале ты должен иметь юзера с правами на работу с таблицей куда ты вставляешь свои данные и не больше. Желательно что бы был отдельный конечно, рута рискованно оставлять.


"flow-tools"
Отправлено Sergei Wind , 01-Фев-05 20:01 
А вообще root может делать все что угодно ;)


"flow-tools"
Отправлено vda256 , 01-Фев-05 20:15 
Дело в том, что файл из директории удаляет.....
Значит скрипт отрабатывается до конца... но что-то видно еще нужно подправить....



"flow-tools"
Отправлено Sergei Wind , 01-Фев-05 20:42 
>Дело в том, что файл из директории удаляет.....
>Значит скрипт отрабатывается до конца... но что-то видно еще нужно подправить....

Это на счет того что echo не работает? да может у него стандартный вывод куда ни будь в другое место чем на активную консоль по дефолту :) честно говоря не знаю :) Да и кроме того это echo тут как зайцу стоп-сигнал :)


"flow-tools"
Отправлено undegro , 28-Дек-07 12:18 
>[оверквотинг удален]
>        exec($strtoexecute);
>        $filetodelete=$workdir.$entry;
>        unlink($filetodelete);
>    };
>};
>$dh->close;
>?>
>
>Скрипт выгребает все flow файлы из workdir и запихивает их в базу.
>Работает 100%. Прописываешь его в крон например раз в час. Удачи.

Хочу поднять тему!!!
пишу для биллинга,
написал shell скрипт для экспорта притом он файлы (5мин-ки) разбивает по дням и кладет в таблицы типа nf20071218 (я думал это ускорит) хотелось бы узнать два вопроса:
Если лить все в одну таблицу хотяб на три месяца как это повлияет на скорость;?
Или все таки обрабатывать допустим дневную таблицу или вообще 5-мин-ку но так чтоб в новой таблице был не сырой трафик netflow в формате

1.1.1.1 2.2.2.2 srcport dstport octets <-in пакет
2.2.2.2 1.1.1.1 srcport dstport octets -> out пакет

а в нормальном виде 1.1.1.1 2.2.2.2 srcport dstport !in !out .

Не могу такой sql запрос собрать - голову уже сломал, отдельно по входящему и исходящему могу выводить причем уже с посчитаными байтами на одинаковых dstip , а надо чтоб красиво было ip remip in out.

Я уже решил другой вариант пробовать, снчала flow-export ом в ascii а оттуда пхп или shellом агрегировать и закидывать в скуль уже нормальные таблицы в нормальном формате!!!

Если есть у кого наработки поделитесь чтоб велосипед не изобретать!! Очень буду рад всем ответившим!!


"flow-tools"
Отправлено Destroer Zliden , 23-Ноя-05 06:45 
Мужик, я тебе отвечу как человек который сам мучался с этим геммороем, и который мучался этим геммороем вместе со своим коллегой. Работать удалось заставить версию Flow-Tools 0.67  (Ставили на FreeBSD 4.7, 5.3 и 5.4) теоритически поможет и с другими версиями.

Итак есть несколько вариантов развития событий, но фишка в чем:
ставим Flow-Tools, предположим следуя пути меньшей гемморойности с портов
(#/usr/ports/net-mgmt/flow-tools/make install), - бинарники соотвественно свалились в /usr/local/bin, нам это по барабану (но потом пригодится, точнее надо запомнить потому что оттуда запускать мы нифига не будем), заходим в порты ищем этот порт (net-mgmt/flow-tools) и в нем директорию work, и там заходим в директорию исходников, затем даем команду:
#./configure --with-mysql=/usr/local/lib/mysql
где /usr/local/lib/mysql - путь к библиотэкам MySQL (у вас может быть не там!)
соотвественно тут два варианта развития сюжета, которые наступают после команды make
1) команда make отработала без ошибок
2) команда make отработала с ошибкой на файле flow-export (бла-бла-бла flow-export.c: In function 'format3': бла-бла-бла или потерялся файл заголовков mysql.h)

В первом случае уважаемый configure по каким-то собственным причинам решил с MySQL воопче не работать, делаем так:
открываем *configure
ищем строку
ac_cv_lib_mysqlclient_my_init=no
ставим yes
но эт еще не все
теперь надо
#./configure --with-mysql=/usr/local
спросите куда пропала /lib/mysql ? Скрипт сам допишет, поэтому если у вас библиотеки не там то гемор будет полный разбирайтесь с путями в скрипте *configure
ну соотвественно пишем #make
и снова ГЕМОР! но ГЕМОР втрого варианта который собсвенно мы и ожидали с таким нетерпением и дрожью в руках

итак второй вариант
файл flow-export.c идет с ошибками... как минимум с двумя.

Ошибка номер 1: там стоит строка в начале include <mysql.h>
меняем на то место, где у вас находится файл заголовков mysql.h
у нас например это </usr/local/include/mysql/mysql.h>

Ошибка номер 2: в файле flow-export.c есть переменная init debug, она прописана не там где надо, а надо чтобы она была прописана перед функцией int main(int arc, char **argv)
а она там неправильно прописана в ТЕЛЕ функции, т.е. после - это неправильно, она должна быть глобальной, или прописывать ее надо везде где она используется!

Вообщем, все поправили, и делаем
#make install
не забыли где ищет бинарники FreeBSD?
правильно на /usr/local/bin/ а make install все закинуло в /usr/local/netflow/bin
все сделалось, но в другом месте...
теперь пробуем экспорт в mysql...
ну там команда
#/usr/local/netflow/bin/flow-export -f3 m-чего-то там...
я дословно писать не буду... вся фишка в том,
ЧТО СНОВА МОЖЕТ НЕ ЗАРАБОТАТЬ!!!
скажет потерялась библиотэка libmysqlclient.so.14
ну тут все зависит от того как ставился mysql, можно по-тупому скопировать его библиотеки в /usr/lib

это есть неправильно, т.е. файл flow-export он собирал с библиотэками из /usr/local/lib/mysq, а работает из /usr/lib, чес слово это кривой configure, хотите доводите до ума и сохраните для потомков...

Destroer & Zliden



"flow-tools"
Отправлено 404 , 12-Авг-08 12:08 
супер помогли мужики