Исходные данные:
flow-tools version = 0.68 собрано с поддержкой MySQL из портов
OS =FreeBSD 5.4Потоки собираются нормально, с этим проблем нет. Но когда пытаюсь сделать экспорт то:
$ flow-export -f3 -m0x383043 -u"user:pass:localhost:3306:flowdb:actions" < ./ft-v05.2006-03-14.111301+0300
flow-export: Format not supported
flow-export: Exported 0 recordsпри этом экспорт в аски проходит без проблем(с -m0x383043).
Вопрос:
В чем проблема? чего в MANe не увидел? какой формат таблицы?ЗЫ до соединения с БД дело не доходит.
>Исходные данные:
>flow-tools version = 0.68 собрано с поддержкой MySQL из портов
>OS =FreeBSD 5.4
>
>Потоки собираются нормально, с этим проблем нет. Но когда пытаюсь сделать
>экспорт то:
>$ flow-export -f3 -m0x383043 -u"user:pass:localhost:3306:flowdb:actions" < ./ft-v05.2006-03-14.111301+0300
>flow-export: Format not supported
>flow-export: Exported 0 records
>
>при этом экспорт в аски проходит без проблем(с -m0x383043).
>
>Вопрос:
>В чем проблема? чего в MANe не увидел? какой формат таблицы?
>
>ЗЫ до соединения с БД дело не доходит.Порт собран БЕЗ поддержки MySQL. Пересобери порт правильно:
make -D WITH_MYSQL
make installСоздаешь таблицу
CREATE TABLE `raw` (
`unix_secs` int(11) unsigned NOT NULL default '0',
`unix_nsecs` int(11) unsigned NOT NULL default '0',
`sysuptime` int(11) unsigned NOT NULL default '0',
`exaddr` varchar(45) NOT NULL default '0',
`dflows` int(11) unsigned NOT NULL default '0',
`dpkts` int(11) unsigned NOT NULL default '0',
`doctets` int(11) unsigned NOT NULL default '0',
`first` int(11) unsigned NOT NULL default '0',
`last` int(11) unsigned NOT NULL default '0',
`engine_type` tinyint(3) unsigned NOT NULL default '0',
`engine_id` tinyint(3) unsigned NOT NULL default '0',
`srcaddr` varchar(45) NOT NULL default '0',
`dstaddr` varchar(45) NOT NULL default '0',
`nexthop` varchar(45) NOT NULL default '0',
`input` smallint(5) unsigned NOT NULL default '0',
`output` smallint(5) unsigned NOT NULL default '0',
`srcport` smallint(5) unsigned NOT NULL default '0',
`dstport` smallint(5) unsigned NOT NULL default '0',
`prot` tinyint(3) unsigned NOT NULL default '0',
`tos` tinyint(3) unsigned NOT NULL default '0',
`tcp_flags` tinyint(3) unsigned NOT NULL default '0',
`src_mask` tinyint(3) unsigned NOT NULL default '0',
`dst_mask` tinyint(3) unsigned NOT NULL default '0'
) TYPE=MyISAM;в БД netflow, после чего
flow-export -f3 -mUNIX_SECS,UNIX_NSECS,SYSUPTIME,EXADDR,DFLOWS,DPKTS,DOCTETS, \
FIRST,LAST,ENGINE_TYPE,ENGINE_ID,SRCADDR,DSTADDR,NEXTHOP,INPUT, \
OUTPUT,SRCPORT,DSTPORT,PROT,TOS,TCP_FLAGS,SRC_MASK,DST_MASK < file
>>Исходные данные:
>>flow-tools version = 0.68 собрано с поддержкой MySQL из портов
>>OS =FreeBSD 5.4
>>
>>Потоки собираются нормально, с этим проблем нет. Но когда пытаюсь сделать
>>экспорт то:
>>$ flow-export -f3 -m0x383043 -u"user:pass:localhost:3306:flowdb:actions" < ./ft-v05.2006-03-14.111301+0300[CUT]
> `tcp_flags` tinyint(3) unsigned NOT NULL default '0',
> `src_mask` tinyint(3) unsigned NOT NULL default '0',
> `dst_mask` tinyint(3) unsigned NOT NULL default '0'
>) TYPE=MyISAM;
>
>в БД netflow, после чего
>
>flow-export -f3 -mUNIX_SECS,UNIX_NSECS,SYSUPTIME,EXADDR,DFLOWS,DPKTS,DOCTETS, \
>FIRST,LAST,ENGINE_TYPE,ENGINE_ID,SRCADDR,DSTADDR,NEXTHOP,INPUT, \
>OUTPUT,SRCPORT,DSTPORT,PROT,TOS,TCP_FLAGS,SRC_MASK,DST_MASK < fileк сожалению после сборки ситуация не изменилась. к мускулу коннекта все равно нет :(
flow-export -f3 -mUNIX_SECS,UNIX_NSECS,SYSUPTIME,EXADDR,DFLOWS,DPKTS,DOCTETS,FIRST,LAST,ENGINE_TYPE,ENGINE_ID,SRCADDR,DSTADDR,NEXTHOP,INPUT,OUTPUT,SRCPORT,DSTPORT,PROT,TOS,TCP_FLAGS,SRC_MASK,DST_MASK -u"root:_PASS_:localhost:3306:flowdb:raw" <./ft-v05.2006-03-14.131001+0300
flow-export: Format not supported
flow-export: Exported 0 records
>>>Исходные данные:
>>>flow-tools version = 0.68 собрано с поддержкой MySQL из портов
>>>OS =FreeBSD 5.4
[CUT]
>
>к сожалению после сборки ситуация не изменилась. к мускулу коннекта все равно
>нет :(
>
>flow-export -f3 -mUNIX_SECS,UNIX_NSECS,SYSUPTIME,EXADDR,DFLOWS,DPKTS,DOCTETS,FIRST,LAST,ENGINE_TYPE,ENGINE_ID,SRCADDR,DSTADDR,NEXTHOP,INPUT,OUTPUT,SRCPORT,DSTPORT,PROT,TOS,TCP_FLAGS,SRC_MASK,DST_MASK -u"root:_PASS_:localhost:3306:flowdb:raw" <./ft-v05.2006-03-14.131001+0300
>flow-export: Format not supported
>flow-export: Exported 0 records
также могу предположить что MySQL вообще не цепляется... кусок из вывода:source='acl2.c' object='acl2.o' libtool=no depfile='.deps/acl2.Po' tmpdepfile='.deps/acl2.TPo' depmode=gcc3 /bin/sh ../depcomp cc -I./../lib -L./../lib -I. -I. -I../lib -g -Wall -g -Wall -fPIC -c `test -f 'acl2.c' || echo './'`acl2.c
cc -g -Wall -g -Wall -fPIC -o flow-filter -L../lib flow-filter.o aclyacc.o acllex.o acl2.o -lft -lfl -ly -lwrap -lz
source='flow-export.c' object='flow_export-flow-export.o' libtool=no depfile='.deps/flow_export-flow-export.Po' tmpdepfile='.deps/flow_export-flow-export.TPo' depmode=gcc3 /bin/sh ../depcomp cc -I./../lib -L./../lib -I. -I. -I../lib -g -Wall -fPIC -c -o flow_export-flow-export.o `test -f 'flow-export.c' || echo './'`flow-export.c
cc -g -Wall -g -Wall -fPIC -o flow-export -L../lib flow_export-flow-export.o -lft -lwrap -lz
source='flow-header.c' object='flow-header.o' libtool=no depfile='.deps/flow-header.Po' tmpdepfile='.deps/flow-header.T
В общем, посредством лома и какой-то матери :) все это дело заработало.1) make extract
топаем в /usr/ports/net-mgmt/flow-tools/work/flow-tools-0.68/src и правим flow-export.c, в самом начале добавляем #define HAVE_MYSQL 1 , немного ниже #include <mysql.h> меняем на #include </usr/local/include/mysql/mysql.h> тамже можно указать user/pass/db? но это по вкусу...
2)возвращаемся в /usr/ports/net-mgmt/flow-tools правим makefile, в CONFIGURE_ARGS+ добовляем --with-mysql
3) делаем симлинк /usr/local/lib/mysql в /usr/lib/mysql
4)make -D WITH_MYSQL install
5)enjoy :)
>В общем, посредством лома и какой-то матери :) все это дело заработало.
>
>
>1) make extract
> топаем в /usr/ports/net-mgmt/flow-tools/work/flow-tools-0.68/src и правим flow-export.c, в самом начале добавляем #define HAVE_MYSQL 1 , немного ниже #include <mysql.h> меняем на #include </usr/local/include/mysql/mysql.h> тамже можно указать user/pass/db? но это по вкусу...
>2)возвращаемся в /usr/ports/net-mgmt/flow-tools правим makefile, в CONFIGURE_ARGS+ добовляем --with-mysql
>3) делаем симлинк /usr/local/lib/mysql в /usr/lib/mysql
>4)make -D WITH_MYSQL install
>5)enjoy :)При стандартном PREFIX при установке MySQL никаких дополнительных телодвижений делать не приходиться. Но если MySQL был установлен с PREFIX!=/usr/local, то достаточно было добавить --prefix=<путь>. К сожалению, установить flow-tools и MySQL с разными PREFIX нельзя, не изменив Makefile порта.
Проверить, скомпилировался ли порт с поддержкой MySQL или нет можно посмотрев в файл ./work/flow-tools-0.68/confdefs.h:...
#define HAVE_MYSQL 1
...Наличие этой строки говорит положительном ответе. Если строки нет - взгляните в файл config.log (там же):
...
$ ./configure --localstatedir=/usr/local --with-mysql=/usr/local --prefix=/usr/local i386-portbld-freebsdX.XX
...если параметр --with-mysql=/usr/local в командной строке конфигуратора присутствует, значит имеются какие-то проблемы с самим MySQL (для любопытных - изучайте лог более подробно). В этом случае, более простым решением остается:
1. make extract
2. cd ./work/flow-tools-0.68
3. ./configure --with-mysql=<путь_к_mysql> --prefix=/usr/local
4. редактируем файл ./lib/ftconfig.h изменив...
/* MYSQL */
/* #undef HAVE_MYSQL */
...на
...
/* MYSQL */
#define HAVE_MYSQL 1
...если ./configure не сделал это за вас
5. make
6. make installP.S.
При установке mysql по умолчанию порт легко собирается класическим make -D WITH_MYSQL
Разумеется в системе должен быть установлен сервер MySQL
>>В общем, посредством лома и какой-то матери :) все это дело заработало.
>>
>>
>>1) make extract
>> топаем в /usr/ports/net-mgmt/flow-tools/work/flow-tools-0.68/src и правим flow-export.c, в самом начале добавляем #define HAVE_MYSQL 1 , немного ниже #include <mysql.h> меняем
[CUT]
>#define HAVE_MYSQL 1
>...
>
>если ./configure не сделал это за вас
>5. make
>6. make install
>
>P.S.
>При установке mysql по умолчанию порт легко собирается класическим make -D WITH_MYSQL
>
>Разумеется в системе должен быть установлен сервер MySQL
так в том то и дело что стандартно мускул стоит, но как я уже написал, заработало, а без всех этих манипуляций(только make -D WITH_MYSQL) не собрался с MySQL. но как говорится главное результат.Также ГРОМАДНОЕ :) спасибо за помощь и участие в успешном решении задачи.
>[оверквотинг удален]
>>1) make extract
>> топаем в /usr/ports/net-mgmt/flow-tools/work/flow-tools-0.68/src и правим flow-export.c, в самом начале добавляем #define HAVE_MYSQL 1 , немного ниже #include <mysql.h> меняем на #include </usr/local/include/mysql/mysql.h> тамже можно указать user/pass/db? но это по вкусу...
>>2)возвращаемся в /usr/ports/net-mgmt/flow-tools правим makefile, в CONFIGURE_ARGS+ добовляем --with-mysql
>>3) делаем симлинк /usr/local/lib/mysql в /usr/lib/mysql
>>4)make -D WITH_MYSQL install
>>5)enjoy :)
>
>При стандартном PREFIX при установке MySQL никаких дополнительных телодвижений делать не приходиться. Но если MySQL был установлен с PREFIX!=/usr/local, то достаточно было добавить --prefix=<путь>. К сожалению, установить flow-tools и MySQL с разными PREFIX нельзя, не изменив Makefile порта.
>Проверить, скомпилировался ли порт с поддержкой MySQL или нет можно посмотрев в
>файл ./work/flow-tools-0.68/confdefs.h:вот мое know-how по сборке flow-tools с mysql
patch-configure.diff:
--- patch-configure.orig 2007-01-08 12:39:50.000000000 +0600
+++ patch-configure 2008-07-30 16:00:22.000000000 +0700
@@ -39,6 +39,15 @@
echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
if test "${ac_cv_prog_cc_stdc+set}" = set; then
+@@ -3262,7 +3246,7 @@
+ if test $ac_cv_lib_mysqlclient_my_init = yes; then
+
+ MYSQLCFLAGS="-L$WHERE_MYSQL/lib/mysql -I$WHERE_MYSQL/include/mysql"
+- MYSQLLIB="-lmysqlclient"
++ MYSQLLIB="-lmysqlclient -L$WHERE_MYSQL/lib/mysql "
+ cat >>confdefs.h <<\_ACEOF
+ #define HAVE_MYSQL 1
+ _ACEOF
@@ -3345,7 +3329,7 @@
patch-configure.in:
--- configure.in.orig 2008-07-30 15:52:51.000000000 +0700
+++ configure.in 2008-07-30 15:37:09.000000000 +0700
@@ -70,7 +70,7 @@
AC_CHECK_LIB(mysqlclient, my_init,
[
MYSQLCFLAGS="-L$WHERE_MYSQL/lib/mysql -I$WHERE_MYSQL/include/mysql"
- MYSQLLIB="-lmysqlclient"
+ MYSQLLIB="-lmysqlclient -L$WHERE_MYSQL/lib/mysql"
AC_DEFINE(HAVE_MYSQL)
]
)
>Порт собран БЕЗ поддержки MySQL. Пересобери порт правильно:
>make -D WITH_MYSQL
>make installможет таки пакадж собран? да и в конце то концов, когда люди научасться сапать порты и Makefile изучать а? ПОДДЕРЖКА MY/PGSQL БЫЛА ДОБАВЛЕНА В ПОРТ 9 ДЕКАБРЯ 2005 ГОДА!
make WITH_MYSQL=yes
или
make WITH_PGSQL=yes
и все! проблема решена ;) а вы тут флейм развели...
да, кстати, посмотрите даты постов ;) и сравните с датой апдейта... всех неверующих пошлю на http://www.freshports.org/net-mgmt/flow-tools/>
>Создаешь таблицу
>
>CREATE TABLE `raw` (
> `unix_secs` int(11) unsigned NOT NULL default '0',
> `unix_nsecs` int(11) unsigned NOT NULL default '0',
> `sysuptime` int(11) unsigned NOT NULL default '0',
> `exaddr` varchar(45) NOT NULL default '0',
> `dflows` int(11) unsigned NOT NULL default '0',
> `dpkts` int(11) unsigned NOT NULL default '0',
> `doctets` int(11) unsigned NOT NULL default '0',
> `first` int(11) unsigned NOT NULL default '0',
> `last` int(11) unsigned NOT NULL default '0',
> `engine_type` tinyint(3) unsigned NOT NULL default '0',
> `engine_id` tinyint(3) unsigned NOT NULL default '0',
> `srcaddr` varchar(45) NOT NULL default '0',
> `dstaddr` varchar(45) NOT NULL default '0',
> `nexthop` varchar(45) NOT NULL default '0',
> `input` smallint(5) unsigned NOT NULL default '0',
> `output` smallint(5) unsigned NOT NULL default '0',
> `srcport` smallint(5) unsigned NOT NULL default '0',
> `dstport` smallint(5) unsigned NOT NULL default '0',
> `prot` tinyint(3) unsigned NOT NULL default '0',
> `tos` tinyint(3) unsigned NOT NULL default '0',
> `tcp_flags` tinyint(3) unsigned NOT NULL default '0',
> `src_mask` tinyint(3) unsigned NOT NULL default '0',
> `dst_mask` tinyint(3) unsigned NOT NULL default '0'
>) TYPE=MyISAM;
>не советуйте новичкам таких таблиц! ;) где это видано чтоб IP писать как varchar(45)? это вы что на IPv6 перешли? сомневаюсь... давайте посчитаем ;) 255.255.255.255 = 15 знаков, а значит для IPv4 с головой хватит varchar(15), что в памяти будет занимать 16 байт, если действовать по вашему совету, то памяти уйдет 46 байт, а учитывая то что база будет пухнуть даже не на дрожжах а быстрее, то размеры ее при нормальном траффике будут - мама не горюй ;) да, все будет потом сортироваться и суммироваться, но зачем жеж вот так сразу ее увеличивать то?
>в БД netflow, после чего
>
>flow-export -f3 -mUNIX_SECS,UNIX_NSECS,SYSUPTIME,EXADDR,DFLOWS,DPKTS,DOCTETS, \
>FIRST,LAST,ENGINE_TYPE,ENGINE_ID,SRCADDR,DSTADDR,NEXTHOP,INPUT, \
>OUTPUT,SRCPORT,DSTPORT,PROT,TOS,TCP_FLAGS,SRC_MASK,DST_MASK < fileвам реально нужно столько инфы для учета траффика?
>>Порт собран БЕЗ поддержки MySQL. Пересобери порт правильно:
>>make -D WITH_MYSQL
>>make install
>
>может таки пакадж собран? да и в конце то концов, когда люди
>научасться сапать порты и Makefile изучать а? ПОДДЕРЖКА MY/PGSQL БЫЛА ДОБАВЛЕНА
>В ПОРТ 9 ДЕКАБРЯ 2005 ГОДА!
>make WITH_MYSQL=yes
>или
>make WITH_PGSQL=yes
>и все! проблема решена ;) а вы тут флейм развели...не вижу проблемы...
>>
>>Создаешь таблицу
>>
>>CREATE TABLE `raw` (
>> `unix_secs` int(11) unsigned NOT NULL default '0',
>> `unix_nsecs` int(11) unsigned NOT NULL default '0',
>> `sysuptime` int(11) unsigned NOT NULL default '0',
>> `exaddr` varchar(45) NOT NULL default '0',
>> `dflows` int(11) unsigned NOT NULL default '0',
>> `dpkts` int(11) unsigned NOT NULL default '0',
>> `doctets` int(11) unsigned NOT NULL default '0',
>> `first` int(11) unsigned NOT NULL default '0',
>> `last` int(11) unsigned NOT NULL default '0',
>> `engine_type` tinyint(3) unsigned NOT NULL default '0',
>> `engine_id` tinyint(3) unsigned NOT NULL default '0',
>> `srcaddr` varchar(45) NOT NULL default '0',
>> `dstaddr` varchar(45) NOT NULL default '0',
>> `nexthop` varchar(45) NOT NULL default '0',
>> `input` smallint(5) unsigned NOT NULL default '0',
>> `output` smallint(5) unsigned NOT NULL default '0',
>> `srcport` smallint(5) unsigned NOT NULL default '0',
>> `dstport` smallint(5) unsigned NOT NULL default '0',
>> `prot` tinyint(3) unsigned NOT NULL default '0',
>> `tos` tinyint(3) unsigned NOT NULL default '0',
>> `tcp_flags` tinyint(3) unsigned NOT NULL default '0',
>> `src_mask` tinyint(3) unsigned NOT NULL default '0',
>> `dst_mask` tinyint(3) unsigned NOT NULL default '0'
>>) TYPE=MyISAM;
>>
>
>не советуйте новичкам таких таблиц! ;) где это видано чтоб IP писать
>как varchar(45)? это вы что на IPv6 перешли? сомневаюсь... давайте посчитаем
>;) 255.255.255.255 = 15 знаков, а значит для IPv4 с головой
>хватит varchar(15), что в памяти будет занимать 16 байт, если действовать
>по вашему совету, то памяти уйдет 46 байт, а учитывая то
>что база будет пухнуть даже не на дрожжах а быстрее, то
>размеры ее при нормальном траффике будут - мама не горюй ;)
>да, все будет потом сортироваться и суммироваться, но зачем жеж вот
>так сразу ее увеличивать то?
>Прежде чем писать сей бред, ознакомтесь с различиями в типах MySQL char и varchar http://www.mysql.ru/docs/man/CHAR.html
Вот из-за таких "оптимизаторов" как вы у людей возникают дополнительные проблемы. Поясню. flow-export расчитан на экспорт в БД и IPv4 и IPv6 протокола. Думаю излишне объяснять что произойдет при экспорте IPv6 адресов в 15-и символьное поле. И как раз таки новичкам совсем ни к чему такие проблемы. А таблица, в случае IPv4 адресов будет занимать ровно столько же, сколько и в случае с типом varchar(15). Это я вам говорю как человек, что-то в этом понимающий за 6 лет API-программирования mysql.>>в БД netflow, после чего
>>
>>flow-export -f3 -mUNIX_SECS,UNIX_NSECS,SYSUPTIME,EXADDR,DFLOWS,DPKTS,DOCTETS, \
>>FIRST,LAST,ENGINE_TYPE,ENGINE_ID,SRCADDR,DSTADDR,NEXTHOP,INPUT, \
>>OUTPUT,SRCPORT,DSTPORT,PROT,TOS,TCP_FLAGS,SRC_MASK,DST_MASK < file
>
>вам реально нужно столько инфы для учета траффика?Я привел полный пример. Каждый вправе сам решать что ему нужно для учета, а что нет.
>не вижу проблемы...
а ее и небыло... надо было просто человеку сказать как порт собрать с мускулом, а тут все вдарились в дискуссии...
>Прежде чем писать сей бред, ознакомтесь с различиями в типах MySQL char
>и varchar http://www.mysql.ru/docs/man/CHAR.html
читал и? в чем смысл меня тыкать туда где я бываю счасто ибо всего не упомнишь?
>Вот из-за таких "оптимизаторов" как вы у людей возникают дополнительные проблемы.
может быть... а может и нет ;)
>flow-export расчитан на экспорт в БД и IPv4 и IPv6 протокола.
никто и не спорит
>Думаю излишне объяснять что произойдет при экспорте IPv6 адресов в 15-и
>символьное поле. И как раз таки новичкам совсем ни к чему
>такие проблемы. А таблица, в случае IPv4 адресов будет занимать ровно
>столько же, сколько и в случае с типом varchar(15). Это я
>вам говорю как человек, что-то в этом понимающий за 6 лет
>API-программирования mysql.
преклоняюсь перед Вашими знаниями но, скажите честно - Вы используете IPv6? а новички используют? кетайцы конечно этот форум посещают, им это точно пригодится, но вот у нас в стране (Россия) вообще есть реально работающий IPv6? скажите где, я очень хочу посмотреть...
>Я привел полный пример. Каждый вправе сам решать что ему нужно для
>учета, а что нет.
воистину!
>>не вижу проблемы...
>а ее и небыло... надо было просто человеку сказать как порт собрать
>с мускулом, а тут все вдарились в дискуссии...
Дискуссии у нас с Вами, а человек в довольно короткие сроки сам разобрался с небольшой помощью. Хотя согласен, проблема у него неординарная, классическая сборка с поддержкой MySQL не помогла.
>>Прежде чем писать сей бред, ознакомтесь с различиями в типах MySQL char
>>и varchar http://www.mysql.ru/docs/man/CHAR.html
>читал и? в чем смысл меня тыкать туда где я бываю счасто
>ибо всего не упомнишь?
Прочитайте. Там немного... но полезно.>>Думаю излишне объяснять что произойдет при экспорте IPv6 адресов в 15-и
>>символьное поле. И как раз таки новичкам совсем ни к чему
>>такие проблемы. А таблица, в случае IPv4 адресов будет занимать ровно
>>столько же, сколько и в случае с типом varchar(15). Это я
>>вам говорю как человек, что-то в этом понимающий за 6 лет
>>API-программирования mysql.
>преклоняюсь перед Вашими знаниями но, скажите честно - Вы используете IPv6? а
>новички используют? кетайцы конечно этот форум посещают, им это точно пригодится,
>но вот у нас в стране (Россия) вообще есть реально работающий
>IPv6? скажите где, я очень хочу посмотреть...Речь не о экспортируемом протоколе, а о вреде/пользе varchar(45). Вы утверждаете что таблица с varchar(45) разрастется быстрее чем таблица varchar(15) при экспорте IPv4, я убеждаю Вас в обратном (см. ссылку). Поэтому НИКАКОГО вреда от моего варианта структуры базы нет, а преимущества очевидны: заложенный потенциал, согласованность с внутренними структурами flow-export, косвенная диагностика ошибок...
Если уж волноваться о размере таблицы, то следует исключить ненужные/неиспользуемые поля - вот где реальная польза.
>Дискуссии у нас с Вами,
always welcome ;)
> а человек в довольно короткие сроки сам разобрался с небольшой помощью.
хвала ему! (серьезно!!!) ибо он есть образец сисадмина с коего многим стоит брать пример... IMO
> Хотя согласен, проблема у него неординарная, классическая сборка с поддержкой MySQL не помогла.
вот это меня и удручает :( что за [censored] выходки порта такие!?!
>Прочитайте. Там немного... но полезно.
я предпочитаю первоисточники в лице http://dev.mysql.com/doc/refman/4.1/en/storage-requirements.... да, я ошибался начет 46 байт (только вот сейчас опять спецом перечитал), но тем не менее я думаю что это излишнее раздувательство базы вносящее в неокрепшие умы ненужную _сейчас_ инфу...
>Речь не о экспортируемом протоколе, а о вреде/пользе varchar(45). Вы утверждаете что таблица с varchar(45) разрастется быстрее чем таблица varchar(15) при экспорте IPv4, я убеждаю Вас в обратном
> (см. ссылку). Поэтому НИКАКОГО вреда от моего варианта структуры базы нет, а преимущества очевидны:
> заложенный потенциал, согласованность с внутренними структурами flow-export, косвенная диагностика ошибок...
я выше описал что я таки перечитал линк который дал я и если вас успокоят мои глубочайшие извинения (я уже говорил что ценю Ваш опыт... мускул для меня есть почти M$ Exel (то что это не postgres я думаю глупо спорить) и если Вас это успокоит, то поверьте, бездна моего раскаяния настолько глубока, что начни я говорить сейчас, мои слова шли бы к Вам вечность) то давайте перестанем судить о размере полей (тем паче что каждое поле в своей БД лично я определял с точки зрения оптимального использования памяти/места исходя из мноогих факторов (порой не явных)), а вернемся на грешную землю в лице РФ где IPv6 несмотря на всю "согласованность с внутренними структурами flow-export"(с) Ваша shema не имеет сверхважного (она на это и не претендовала) значения для довольно таки непростой задачи как то "учет IP траффика средствами flow-tools" там же есть еще фильтры и т.д. и т.п. которые человеку надо настроить... опять же перловка (или любой другой знаемый язык, который позволит быстро парсить данные из мускула) для данной этой задачи пойдет как нельзя лучше ;)
> Если уж волноваться о размере таблицы, то следует исключить ненужные/неиспользуемые поля - вот где реальная польза.
я думаю каждому стоит выбрать необходимое ему лично количестово полей для внесения в базу (выше я описал почти самый минимум для анализа, если убрать src/dst порты - то в общем то самый минимум)... но опять таки т.к. Вы специалист в области мускула то вы не сможете не согласиться с тем что большой объем таки проще загружать из файла чем непосредственной вставкой ;) а данные flow-tools - это не маленький объем (тут все конечно зависит от временного периода) а так же с тем что его таки лучше потом всетаки пересохранить в каком нибудь более-менее сжатом виде...З.Ы. я извиняюсь перед всеми читателями сего за оффтоп!
З.З.Ы. ув. veng, если вы хотите продолжить дискуссии - пишите в мыло (этот форум не знает про ПМ :( ) если же нет - то давайте не будем с вами трясти седыми мудями перед лицом публики, IMHO это неприлично...
>>Прочитайте. Там немного... но полезно.
>я предпочитаю первоисточники в лице http://dev.mysql.com/doc/refman/4.1/en/storage-requirements.... да, я ошибался начет 46 байт
>(только вот сейчас опять спецом перечитал), но тем не менее я
>думаю что это излишнее раздувательство базы вносящее в неокрепшие умы ненужную
>_сейчас_ инфу...
Признались в неправоте, но продолжаете твердить о "раздувательстве". Что это? Стереотип?
Повторю еще раз: размеры баз хоть с varchar(15), хоть с varchar(1000) будут абсолютно одинаковыми (при одинаковых экспортируемых данных IPv4)!>... а вернемся на грешную
>землю в лице РФ где IPv6 несмотря на всю "согласованность с
>внутренними структурами flow-export"(с) Ваша shema не имеет сверхважного (она на это
>и не претендовала) значения
Я не понимаю, зачем искусственно увеличивать число тонких мест в системе. В данной задаче их и так хватает (часть из них ниже Вы и описали). Неужели Вас покоробит от правильного ее решения?
>но опять таки т.к. Вы специалист в области мускула то вы не
>сможете не согласиться с тем что большой объем таки проще загружать
>из файла чем непосредственной вставкой ;)
абсолютно с Вами согласен ;)
>а данные flow-tools - это не маленький объем (тут все конечно зависит от временного
>периода) а так же с тем что его таки лучше потом всетаки пересохранить
>в каком нибудь более-менее сжатом виде...Именно поэтому мне пришлось переписать часть flow-tools порта под свои нужды. И от MySQL я уже давно отказался (как впрочем и от любой другой базы). ИМХО в сжатых файлах лишь реально сохранить большой объем. Но для мелких задач MySQL вовсе не плох.
>
>З.Ы. я извиняюсь перед всеми читателями сего за оффтоп!
>З.З.Ы. ув. veng, если вы хотите продолжить дискуссии - пишите в мыло
>(этот форум не знает про ПМ :( ) если же нет
>- то давайте не будем с вами трясти седыми мудями перед
>лицом публики, IMHO это неприлично...Для себя я закрываю эту тему, ибо ломать стереотипы - занятие неблагодарное. Да и тема дискуссии давно вышла за рамки темы форума. Надеюсь только, что впредь вы не будете столь категоричны в своих высказываниях.
>>Порт собран БЕЗ поддержки MySQL. Пересобери порт правильно:
>>make -D WITH_MYSQL
>>make install
>
>может таки пакадж собран? да и в конце то концов, когда люди
[CUT]
>>flow-export -f3 -mUNIX_SECS,UNIX_NSECS,SYSUPTIME,EXADDR,DFLOWS,DPKTS,DOCTETS, \
>>FIRST,LAST,ENGINE_TYPE,ENGINE_ID,SRCADDR,DSTADDR,NEXTHOP,INPUT, \
>>OUTPUT,SRCPORT,DSTPORT,PROT,TOS,TCP_FLAGS,SRC_MASK,DST_MASK < file
>
>вам реально нужно столько инфы для учета траффика?2Павел,Vault_Dweller
Что разорались, в низу прочитали что проблема решена? порты свежие только все равно не собирался, если прочитаете внимательно то я написал то что я САМ перековырял исходник и запустил с мускулом. Да я новичек, но в отличии от ваших постов, его(veng), принесли пользу, лично мне. А пустые коменты что это не так,а это не сяк любой может кинуть. Если есть что поделу, говорите, нет, то и нечего флудить.P.S. Извените если обидел.
>2Павел,Vault_Dweller
Ai-Roboform подставляет разные имена... :( то нужное, то дефолтное
>Что разорались, в низу прочитали что проблема решена?
я сразу прочитал что проблема решена, мне было непонятно зачем был избран такой длинный путь... не думаю что тут все поголовно комсомольцы ;)
>порты свежие только все равно не собирался, если прочитаете внимательно
>то я написал то что я САМ перековырял исходник и запустил с мускулом.
у меня все собирается... что я делал не так? только вчера специально попробывал на тестовой машинке - работает! естественно сначала собирается мускул, а только потом flow-tools ;)
уже и не помню когда, я тоже испытал в этом затык (когда в портах небыло поддержки мускула), но ниче... его (flow-tools) майллист быстро все поставил на свои места...
>Да я новичек, но в отличии от ваших постов, его(veng), принесли пользу, лично мне.
тем что таблицу дали? ее самому нужно было рисовать, так правильнее с точки зрения осознания присходящего, IMO...
>А пустые коменты что это не так,а это не сяк любой может кинуть. Если есть что поделу, говорите, нет, то и нечего флудить.
через месяц/полгода (зависит от объемов траффика) посмотрите как нить на объем вашей базы и потом вы вспомните и мои пустые комменты и то что я вам сейчас по секрету скажу что raw flow-ики стоит кидать в базу только для того чтобы потом перевести IP адреса в цифру int(10) unsigned (для IPv4!!!) и/или просуммировать или хотя бы просто для анализа... хранить raw данные в БД при нормальных объемах траффика почти нереально... поверьте, я не первый год собираю по netflow данные... приведу пример, на одном из линков клиенту надо было сообщить что происходит с его линком, ну дело не хитрое, настроил экспорт и за неделю получил raw базу только с нужными полями (src_ip, dst_ip, spc_port, dst_port, in_octets, out_octets + время в формате unixtime) объемом чуть больше 1Gb... пересчитанная с 5 минутными интервалами она занимала ~200Mb (правда без инфы по портам, ну да лично мне это было и не нужно), а сколько занимала raw БД за месяц сами думаю можете представить... надеюсь понятно зачем я флейм насчет varchar разводил? поищите в майллисте flow-tools-а патчик для работы с мускулом - там точно найдете для себя много интересного ;)
>P.S. Извените если обидел.
господь с вами, для меня главное - чтобы у вас все получилось... неважно с чьей помощью...
еще раз сори что так отреагировал... просто вчера сумасшедший день был...я не знаю в чем была трабла но после обновления портов он все равно не собрался с мускулом, в итоге я напильником его подогнал...
да мне тоже далеко не все надо в базу пихать, у меня бинарики сохраняются, а раз в час обновления фильтруются и нужное в базу...
тока в процессе выяснилось что некоторые данные теряются, т.е. показания прова и мои достаточно сильно расходятся. нет сессий которые заведомо были. Сейчас источник ng_netflow, а сервак практически не загружен...
>еще раз сори что так отреагировал... просто вчера сумасшедший день был...
"забей Сеня!"(с) мы же все тут люди в конце то концов...
>я не знаю в чем была трабла но после обновления портов он
>все равно не собрался с мускулом, в итоге я напильником его
>подогнал...
а вот это странно... очень странно... честно слово... мускула как ставили? из портов? и еще - какого именно мускула? может он либу не находит на которую ссылка идет...
>да мне тоже далеко не все надо в базу пихать, у меня
>бинарики сохраняются, а раз в час обновления фильтруются и нужное в
>базу...
обычно так и делают... удобнее правда rotate настроить при помощи скрипта запуска... тогда у вас все вообще на автомате пойдет ;)
>тока в процессе выяснилось что некоторые данные теряются, т.е. показания прова и
>мои достаточно сильно расходятся. нет сессий которые заведомо были. Сейчас источник
>ng_netflow, а сервак практически не загружен...
странно... данные могут и будут расходиться (из за размеров заголовков пакетов и т.д.), но не критично... а то что есть потерянные данные - это уже плёхо! ng_netflow и коллектор на одном компе как я понял? т.е. потери в сети можно исключить, тогда вообще странно ... надо гуру по hg_netflow попытать, они подскажут... я с кошкароутеров снимаю в основном там у некоторых бывают траблы с active записями (пока таймаут не истечет - запись не появится, а человек волнуется на предмет "где она?!?"), а вот с ng_ не работал, поэтому извините, но помочь не смогу :( кстати где именно потеря данных видна? в flow-иках или мускуле?
>>еще раз сори что так отреагировал... просто вчера сумасшедший день был...
>"забей Сеня!"(с) мы же все тут люди в конце то концов...
>>я не знаю в чем была трабла но после обновления портов он
>>все равно не собрался с мускулом, в итоге я напильником его
>>подогнал...
>а вот это странно... очень странно... честно слово... мускула как ставили? из
>портов? и еще - какого именно мускула? может он либу не
из портов 4.1>находит на которую ссылка идет...
находит, и явно указывал.. в нете вычитал, кричат makefile кривой...>>да мне тоже далеко не все надо в базу пихать, у меня
>>бинарики сохраняются, а раз в час обновления фильтруются и нужное в
>>базу...
>обычно так и делают... удобнее правда rotate настроить при помощи скрипта запуска...
>тогда у вас все вообще на автомате пойдет ;)
а у меня и так по cron :)>>тока в процессе выяснилось что некоторые данные теряются, т.е. показания прова и
>>мои достаточно сильно расходятся. нет сессий которые заведомо были. Сейчас источник
>>ng_netflow, а сервак практически не загружен...
>странно... данные могут и будут расходиться (из за размеров заголовков пакетов и
>т.д.), но не критично... а то что есть потерянные данные -
ну про заголовки знаю но дельта больше 5%>это уже плёхо! ng_netflow и коллектор на одном компе как я
>понял? т.е. потери в сети можно исключить, тогда вообще странно ...
>надо гуру по hg_netflow попытать, они подскажут... я с кошкароутеров снимаю
>в основном там у некоторых бывают траблы с active записями (пока
>таймаут не истечет - запись не появится, а человек волнуется на
>предмет "где она?!?"), а вот с ng_ не работал, поэтому извините,
>но помочь не смогу :( кстати где именно потеря данных видна?
>в flow-иках или мускуле?
в flow уже нет... правда сначала собирал softflowd он точно терял... а NG... пока не уверен...
>из портов 4.1
мистика блин, чесслово...
>а у меня и так по cron :)
не... крон - это крон, а тут можно flow-capture ключик -R указать и имя скрипта... при ротейте файла этому скрипту будет передано в качестве аргумента имя вновь созданного ft-*** и вот этот скрипт пущай все разбирает и по полочкам раскладывает ;)
>ну про заголовки знаю но дельта больше 5%
хм...
>в flow уже нет...
значит теряется где то в при вбивании в мускул...
> правда сначала собирал softflowd он точно терял... а NG... пока не уверен...
нетграф вообще замудреная штука %) одних HOWTO я штук *дцать видел и многие противоречат друг другу... вы ipcad пробывали? он может и ip accounting и netflow v5 отдавать... те кто юзает - говорят что им сухо и комфортно :) я тока ip accounting с него пробывал - арбайтен...
Кстати а web морды случайно нет для просмотра? ;) а то изобретать велосипед не охота...
>Кстати а web морды случайно нет для просмотра? ;) а то изобретать
>велосипед не охота...если точнее то вопрос в том, каким образом из получившейся базы время вытягивать в скрипте(php). С полем `unix_secs` думаю разберусь(хотя инфа не помешает) а вот с `unix_nsecs` что делать?
>Кстати а web морды случайно нет для просмотра? ;) а то изобретать
>велосипед не охота...Может быть это подойдет http://www.ccs.ru/kons/flow/
Только оно не с базой работает...
>>Кстати а web морды случайно нет для просмотра? ;) а то изобретать
>>велосипед не охота...
>
>Может быть это подойдет http://www.ccs.ru/kons/flow/
>Только оно не с базой работает...Да меня больше интересует как дату из unix формата перевести в читабельный средствами PHP, а также то как по этому unixtime делать выборку за диапазон времени(мысль у меня есть переделать отчет от freenibs)
>>>Кстати а web морды случайно нет для просмотра? ;) а то изобретать
>>>велосипед не охота...
>>
>>Может быть это подойдет http://www.ccs.ru/kons/flow/
>>Только оно не с базой работает...
>
>Да меня больше интересует как дату из unix формата перевести в читабельный
>средствами PHP, а также то как по этому unixtime делать
>выборку за диапазон времени(мысль у меня есть переделать отчет от freenibs)
>А доку на MySQL посмотреть тяжело?
SELECT * FROM raw WHERE FROM_UNIXTIME(unix_secs) BETWEEN '2006-03-01 00:00:00' AND '2006-03-31 23:59:59'
>>>>Кстати а web морды случайно нет для просмотра? ;) а то изобретать
>>>>велосипед не охота...
>>>
>>>Может быть это подойдет http://www.ccs.ru/kons/flow/
>>>Только оно не с базой работает...
>>
>>Да меня больше интересует как дату из unix формата перевести в читабельный
>>средствами PHP, а также то как по этому unixtime делать
>>выборку за диапазон времени(мысль у меня есть переделать отчет от freenibs)
>>
>
>А доку на MySQL посмотреть тяжело?
>SELECT * FROM raw WHERE FROM_UNIXTIME(unix_secs) BETWEEN '2006-03-01 00:00:00' AND '2006-03-31 23:59:59'
>ну начинающий я :) все приходит со временем :) Огромное спасибо!!!! буду эксперементировать.... о результатах и проблемах в процессе сообщу ;)
>>>>Кстати а web морды случайно нет для просмотра? ;) а то изобретать
>>>>велосипед не охота...
>>>
>>>Может быть это подойдет http://www.ccs.ru/kons/flow/
>>>Только оно не с базой работает...
>>
>>Да меня больше интересует как дату из unix формата перевести в читабельный
>>средствами PHP, а также то как по этому unixtime делать
>>выборку за диапазон времени(мысль у меня есть переделать отчет от freenibs)
>>
>
>А доку на MySQL посмотреть тяжело?
>SELECT * FROM raw WHERE FROM_UNIXTIME(unix_secs) BETWEEN '2006-03-01 00:00:00' AND '2006-03-31 23:59:59'
>кстати поле unix_secs и unix_nsecs я так понимаю тут указывается start/stoptime. с unix_secs понятно, а unix_nsecs с чем едят?
>>>>>Кстати а web морды случайно нет для просмотра? ;) а то изобретать
>>>>>велосипед не охота...
>>>>
>>>>Может быть это подойдет http://www.ccs.ru/kons/flow/
>>>>Только оно не с базой работает...
>>>
>>>Да меня больше интересует как дату из unix формата перевести в читабельный
>>>средствами PHP, а также то как по этому unixtime делать
>>>выборку за диапазон времени(мысль у меня есть переделать отчет от freenibs)
>>>
>>
>>А доку на MySQL посмотреть тяжело?
>>SELECT * FROM raw WHERE FROM_UNIXTIME(unix_secs) BETWEEN '2006-03-01 00:00:00' AND '2006-03-31 23:59:59'
>>
>
>кстати поле unix_secs и unix_nsecs я так понимаю тут указывается start/stoptime.
>с unix_secs понятно, а unix_nsecs с чем едят?unix_secs - временная отметка. Число секунд от 1970 г.
unix_nsecs - временная отметка. Наносекундный остаток от 1970 г.
sysUpTime - текущее время в ms от последней загрузки роутера
First - sysUpTime начала потока
Last - sysUpTime конца потокавот пожалуй и все временные поля...
>>>>>>Кстати а web морды случайно нет для просмотра? ;) а то изобретать
[CUT]
>>>SELECT * FROM raw WHERE FROM_UNIXTIME(unix_secs) BETWEEN '2006-03-01 00:00:00' AND '2006-03-31 23:59:59'
>>>
>>
>>кстати поле unix_secs и unix_nsecs я так понимаю тут указывается start/stoptime.
>>с unix_secs понятно, а unix_nsecs с чем едят?
>
>unix_secs - временная отметка. Число секунд от 1970 г.
>unix_nsecs - временная отметка. Наносекундный остаток от 1970 г.
>sysUpTime - текущее время в ms от последней загрузки роутера
>First - sysUpTime начала потока
>Last - sysUpTime конца потока
>
>вот пожалуй и все временные поля...
sysUpTime размерность милисекунды если мне склероз не зменяет...
>>unix_secs - временная отметка. Число секунд от 1970 г.
>>unix_nsecs - временная отметка. Наносекундный остаток от 1970 г.
>>sysUpTime - текущее время в ms от последней загрузки роутера
>>First - sysUpTime начала потока
>>Last - sysUpTime конца потока
>>
>>вот пожалуй и все временные поля...
>
>
>sysUpTime размерность милисекунды если мне склероз не зменяет...а я что написал? ms <=> миллисекунды
>>>unix_secs - временная отметка. Число секунд от 1970 г.
>>>unix_nsecs - временная отметка. Наносекундный остаток от 1970 г.
>>>sysUpTime - текущее время в ms от последней загрузки роутера
>>>First - sysUpTime начала потока
>>>Last - sysUpTime конца потока
>>>
>>>вот пожалуй и все временные поля...
>>
>>
>>sysUpTime размерность милисекунды если мне склероз не зменяет...
>
>а я что написал? ms <=> миллисекунды
сори не заметил..что-то не выходит каменный цветок.... продолжаю битву с php....
>>>>unix_secs - временная отметка. Число секунд от 1970 г.
>>>>unix_nsecs - временная отметка. Наносекундный остаток от 1970 г.
>>>>sysUpTime - текущее время в ms от последней загрузки роутера
>>>>First - sysUpTime начала потока
>>>>Last - sysUpTime конца потока
>>>>
>>>>вот пожалуй и все временные поля...
>>>
>>>
>>>sysUpTime размерность милисекунды если мне склероз не зменяет...
>>
>>а я что написал? ms <=> миллисекунды
>сори не заметил..
>
>что-то не выходит каменный цветок.... продолжаю битву с php....Все сделал!!! работает!!!
>Кстати а web морды случайно нет для просмотра? ;) а то изобретать
>велосипед не охота...
не могу понять как вот из этих данных сделать понятную дату?unix_secs unix_nsecs sysuptime first last
1038166717 987986016 289644980 289637272 289643360
>не могу понять как вот из этих данных сделать понятную дату?
>
>unix_secs unix_nsecs sysuptime first
> last
>1038166717 987986016 289644980 289637272 289643360select from_unixtime(1038166717);
>>не могу понять как вот из этих данных сделать понятную дату?
>>
>>unix_secs unix_nsecs sysuptime first
>> last
>>1038166717 987986016 289644980 289637272 289643360
>
>select from_unixtime(1038166717);ну и получается 2002-11-25 00:38:37 когда эти данные с прошлой недели были взяты
>>>не могу понять как вот из этих данных сделать понятную дату?
>>>
>>>unix_secs unix_nsecs sysuptime first
>>> last
>>>1038166717 987986016 289644980 289637272 289643360
>>
>>select from_unixtime(1038166717);
>
>ну и получается 2002-11-25 00:38:37 когда эти данные с прошлой недели были
>взятыну так поставь на маршрутизаторе время правильно и будет тебе счастье
>[оверквотинг удален]
>>>>unix_secs unix_nsecs sysuptime first
>>>> last
>>>>1038166717 987986016 289644980 289637272 289643360
>>>
>>>select from_unixtime(1038166717);
>>
>>ну и получается 2002-11-25 00:38:37 когда эти данные с прошлой недели были
>>взяты
>
>ну так поставь на маршрутизаторе время правильно и будет тебе счастьеспс, оказалось все просто))
а как вывести за определенное время не используя файл фильтров? может можно как-то в одну строку прописать период времени?
>а как вывести за определенное время не используя файл фильтров? может можно
>как-то в одну строку прописать период времени?все можно!
sql далеко не самое сложное из того что не помешает знать, дерзайте