Вопрос по netup_netflow с записью в файлы

Вопросы по UTM 3.0 и UTM 4.0 (поддержка прекращена)
Закрыто
ilya_evseev
Сообщения: 48
Зарегистрирован: Сб ноя 25, 2006 05:05
Откуда: Saint-Petersburg, Russia
Контактная информация:

Вопрос по netup_netflow с записью в файлы

Сообщение ilya_evseev »

Решил поменять стандартный netup_netflow 1.2,
который пишет данные в sql-таблицу traffic_netflow,
на исправленный, который создаёт файл /usr/tmp/netflow.tmp
Если послать работающему коллектору сигнал SIGHUP,
netflow.tmp переименуется в netflow.tsave и начнёт заполняться с нуля.

Вопрос: что с этим файлом делать?
Встроенной поддержки для него в /netup/utm/bin/tsave не видно.
Количество и состав полей в строках, на первый взгляд, такие же,
как таблице traffic_netflow, но их порядок отличается,
например, t_class и uid поменяны местами.
Также большие сомнения насчёт полей dst_mask, pad и tcp_flags.

В-общем, просьба поделиться командой LOAD DATA INFILE
для переноса строк из файла netflow.tsave в таблицу traffic_tmp.

ilya_evseev
Сообщения: 48
Зарегистрирован: Сб ноя 25, 2006 05:05
Откуда: Saint-Petersburg, Russia
Контактная информация:

Сообщение ilya_evseev »

Для перемещения данных из /usr/tmp/netflow.tmp в SQL-таблицу
использую следующий сценарий:

Код: Выделить всё

#!/usr/bin/perl

use strict;
use warnings;

my $netflow_srcfile = '/usr/tmp/netflow.tmp';
my $netflow_dstfile = '/usr/tmp/netflow.tsave';
my $process_name = 'netup_netflow';

my $force = (@ARGV and $ARGV[0] eq '--force') ? shift @ARGV : undef;

die "File $netflow_srcfile is not found, maybe $process_name is not running?\n"
        if ! -f $netflow_srcfile and not $force;
die "File $netflow_dstfile is found, check your activity!\n"
        if   -f $netflow_dstfile and not $force;

my $dbh = DBI->connect(...);
my $now = time;

`/usr/bin/killall -HUP $process_name`;
sleep 1;
die "File $netflow_dstfile is not found, maybe $process_name is not running?\n"
        if ! -f $netflow_dstfile and not $force;

$dbh->do("LOCK TABLES traffic_tmp WRITE");
$dbh->do("LOAD DATA INFILE '$netflow_dstfile'"
        ." INTO TABLE traffic_tmp FIELDS TERMINATED BY ','"
        ." (bytes_all, ip_from, ip_to, nexthop, input, output, packets, bytes_data,"
        ." First, Last, srcport, dstport, pad, tcp_flags, prot, tos, src_as, dst_as,"
        ." src_mask, dst_mask, uid, t_class)"
);
$dbh->do("UPDATE traffic_tmp SET ftime=$now, ltime=$now, bytes_all=bytes_data");
$dbh->do("UNLOCK TABLES");

unlink $netflow_dstfile;
Проблема: примерно в 23:30 netup_netflow (версия 1.2_nodb) сваливается с сигналом 11 = SIGSEGV:

Код: Выделить всё

Received HUP signal
Received signal 11
exiting
NetUP NetFlow collector ver. 1.2 started.
Listening on 9996
WatchDog: child[69476]: 11 return code...
WatchDog: terminating...
Второй день тестирую - второй день одно и то же.
Никто не сталкивался?
Система: FreeBSD 6.2 RELEASE, ядро GENERIC. Нагрузка минимальная.
Запущенность netup_netflow проверяю раз в 10 минут.

Закрыто