Биллинговая система Nodeny

Главная категория => Nodeny 50 => Тема начата: PBNM от 14 Апреля 2010, 16:49:13



Название: снова netflow
Отправлено: PBNM от 14 Апреля 2010, 16:49:13
Есть необходимость собирать трафик с нескольких коллекторов по netflow (на портах 8888 и 8887 например) соответсвенно запущено
/usr/local/bin/flow-capture -R /usr/local/nodeny/netflow_8888.pl -p /var/run/flow-capture/flow-capture.pid -w /var/db/flows -n1 -N0 main_IP/sat1_IP/8888

и

/usr/local/bin/flow-capture -R /usr/local/nodeny/netflow_8887.pl -p /var/run/flow-capture/flow-capture.pid -w /var/db/flows -n1 -N0 main_IP/sat2_IP/8887

трафик снимается и заносится в базу . Через несколько минут  2 процес вываливается .
Причем если процесы запустить в другой очеродности то последний процес убивается через несколько минут.

FreeBSD 8.0 amd64

Есть какие либо соображения по этому поводу ?


Название: Re: снова netflow
Отправлено: Andrey Zentavr от 22 Апреля 2010, 23:53:56
а не кущает ли у тебя процесс много памяти на 64 битах?


Название: Re: снова netflow
Отправлено: Maks от 23 Апреля 2010, 12:47:12
У меня похожая ситуация но на FreeBSD 7.2

Если снимать статистику с одного сателлита все ок, если  с 2. то через минуту перестает снимать статистику с первого.
Вот что с вижу в мониторинте.
23.04.10 13:25   Не получен трафик от netflow:192.168.3.16 (8888).
23.04.10 13:23   
23.04.10 13:23   Не получен трафик от netflow:192.168.254.123 (8889).
23.04.10 13:21

Если статистику с 192.168.254.123 (8889) не снимать, то 192.168.3.16 (8888) не вылетает.


Название: Re: снова netflow
Отправлено: Maks от 23 Апреля 2010, 20:19:38
И подскажите как подправить запускной скрипт под другой порт нетфло.
Сейчас используется этот
#!/bin/sh
# PROVIDE: netflow_start
. /etc/rc.subr
name="netflow"
rcvar=`set_rcvar`
: ${netflow_enable="NO"}
start_cmd="${name}_start"
stop_cmd="${name}_stop"
restart_cmd="${name}_restart"
netflow_start()
{
    echo "Starting $name..."
    /usr/local/bin/flow-capture -R /usr/local/nodeny/netflow_8888.pl -p /var/run/flow-capture/flow-capture.pid -w /var/db/flows -n1 -N0 0.0.0.0/0.0.0.0/8888
}
netflow_stop()
{
    echo "Stopping $name..."
    killall flow-capture &
}
netflow_restart()
{
    netflow_stop
    sleep 2
    netflow_start
}
load_rc_config $name
run_rc_command "$1"


Попробовал его подредактировать под другой порт, и вот что вышло:

#!/bin/sh
# PROVIDE: netflow2_start
. /etc/rc.subr
name="netflow2"
rcvar=`set_rcvar`
: ${netflow2_enable="NO"}
start_cmd="${name}_start"
stop_cmd="${name}_stop"
restart_cmd="${name}_restart"
netflow2_start()
{
    echo "Starting $name..."
    /usr/local/bin/flow-capture -R /usr/local/nodeny/netflow_8889.pl -p /var/run/flow-capture/flow-capture2.pid -w /var/db/flows -n1 -N0 0.0.0.0/0.0.0.0/8889
}
netflow2_stop()
{
    echo "Stopping $name..."
    killall flow-capture &
}
netflow2_restart()
{
    netflow2_stop
    sleep 2
    netflow2_start
}
load_rc_config $name
run_rc_command "$1"

Но он не работает, и после того как я его пытаюсь запустить( он не запускается)
localhost# /usr/local/etc/rc.d/netflow2 start
localhost# ps -ax | grep net
   15  ??  WL     0:02.02 [swi1: net]
   37  ??  DL    11:58.84 [dummynet]
39831  p0  D+     0:00.00 grep net
 статистика с порта 8888 перестает сниматься.


Название: Re: снова netflow
Отправлено: Maks от 23 Апреля 2010, 21:56:55
Решение: Запускать все сервера на одном порту, т.к c разный Netflow отказался собирать статистику


Название: Re: снова netflow
Отправлено: PBNM от 23 Апреля 2010, 22:55:59
Описал ситуацию когда на mikrotikе было
ip traffic-flow target add address=A.B.C.D:8888 version=5
при изменении на
ip traffic-flow target add address=A.B.C.D:8888 version=1
статистика с 2 коллекторов снималась нормально, а надо 4 ...
Процес вываливался когда  WCPU 100% у flow-print ...


Название: Re: снова netflow
Отправлено: Maks от 24 Апреля 2010, 06:32:36
Так ты это как то поборол ?
Или пока отложил?


Название: Re: снова netflow
Отправлено: PBNM от 24 Апреля 2010, 10:19:28
3 коллектора через порт 8888 и 1 через 8885.


Название: Re: снова netflow
Отправлено: Maks от 24 Апреля 2010, 10:38:08
А  как ты запустил на 8885 ?


Название: Re: снова netflow
Отправлено: PBNM от 25 Апреля 2010, 11:10:35
/usr/local/bin/flow-capture -R /usr/local/nodeny/netflow_8885.pl -p /var/run/flow-capture/flow-capture.pid -w /var/db/flows -n1 -N0 main_IP/sat2_IP/8885

не взирая на то что pid файл указывается для нескольких сесий один в реальности создается /var/run/flow-capture/flow-capture.pid.порт .
 
А проблема с несколькими сесиями netflow скорее всего в самом netflow под amd64. 


Название: Re: снова netflow
Отправлено: Andrey Zentavr от 30 Апреля 2010, 00:41:57
И подскажите как подправить запускной скрипт под другой порт нетфло.

У меня раньше два коллектора пускались примерно так:
Код:
# GW3 Flows
flow_capture_GW3_datadir="/var/db/flows/"
flow_capture_GW3_pid="/var/run/flow-capture/flow-capture.pid.8003"
flow_capture_GW3_localip="0.0.0.0"
flow_capture_GW3_remoteip="10.1.10.3"
flow_capture_GW3_port="8003"
flow_capture_GW3_user="root"
flow_capture_GW3_flags="-n1 -N0 -R /usr/local/nodeny/netflow_8003.pl"
# GW4 Flows
flow_capture_GW4_datadir="/var/db/flows/"
flow_capture_GW4_pid="/var/run/flow-capture/flow-capture.pid.8004"
flow_capture_GW4_localip="0.0.0.0"
flow_capture_GW4_remoteip="10.1.10.4"
flow_capture_GW4_port="8004"
flow_capture_GW4_user="root"
flow_capture_GW4_flags="-n1 -N0 -R /usr/local/nodeny/netflow_8004.pl"



Название: Re: снова netflow
Отправлено: Maks от 30 Апреля 2010, 15:44:31
У меня раньше два коллектора пускались примерно так:
Код:
# GW3 Flows
flow_capture_GW3_datadir="/var/db/flows/"
flow_capture_GW3_pid="/var/run/flow-capture/flow-capture.pid.8003"
flow_capture_GW3_localip="0.0.0.0"
flow_capture_GW3_remoteip="10.1.10.3"
flow_capture_GW3_port="8003"
flow_capture_GW3_user="root"
flow_capture_GW3_flags="-n1 -N0 -R /usr/local/nodeny/netflow_8003.pl"
# GW4 Flows
flow_capture_GW4_datadir="/var/db/flows/"
flow_capture_GW4_pid="/var/run/flow-capture/flow-capture.pid.8004"
flow_capture_GW4_localip="0.0.0.0"
flow_capture_GW4_remoteip="10.1.10.4"
flow_capture_GW4_port="8004"
flow_capture_GW4_user="root"
flow_capture_GW4_flags="-n1 -N0 -R /usr/local/nodeny/netflow_8004.pl"


О,большое спасибо


Название: Re: снова netflow
Отправлено: Andrey Zentavr от 07 Августа 2012, 15:45:11
В общем, ситуйовина такая - как переехали на новую Фрю, возникла трабла что процесс второй то всё-таки падает. Оказывется, что при старте они пишут стату в файл вида tmp-*, который при SIGHUP переименовывается в ft-*.

Кто отправляет SIGHUP я пока не нашел, но имеем что при нескольких SIGHUPах может случиться то, что два процесса начнут писать в один файл tmp-* и в конце концов кто-то из них умрёт. :(

Вот примерно так:
Код:
flow-capture: SIGHUP
flow-capture: STAT: now=1344344160 startup=1344341487 src_ip=AAA.AAA.AAA.AAA dst_ip=194.126.**.** d_ver=5 pkts=153150 flows=4591596 lost=0 reset=0 filter_drops=0
flow-capture: STAT: now=1344344220 startup=1344341487 src_ip=AAA.AAA.AAA.AAA dst_ip=194.126.**.** d_ver=5 pkts=156328 flows=4686936 lost=0 reset=0 filter_drops=0
flow-capture: SIGHUP
flow-capture: rename(tmp-v05.2012-08-07.155515+0300,ft-v05.2012-08-07.155515+0300): No such file or directory

Как вариант можно поставить им разные рабочие каталоги (параметр -w), но это дело захардкодено вот тут:
Код:
[root@cassiopeia /usr/local/nodeny]# grep -Rl "/var/db/flows/" ./*
./netflow.pl
./netflow_8003.pl
./netflow_8107.pl

Потому немного поправил ./netflow.pl, удалил ./netflow_8003.pl и ./netflow_8107.pl, перезапустил ядро:
Код:
#$flow_file=$flow_base.'/$ARGV[0]';
# Добавил порт здесь
$flow_file=$flow_base.'/'.$port.'/$ARGV[0]';
$file_pl="$nodeny_base/netflow_$port.pl";

Ну и в rc.conf:
Код:
# Flow Capture Daemons
flow_capture_enable="YES"
flow_capture_profiles="GW3 GW4"
# GW3 Flows
flow_capture_GW3_pid="/var/run/flow-capture/flow-capture.pid.8003"
flow_capture_GW3_localip="0.0.0.0"
flow_capture_GW3_remoteip="a.b.c.98"
flow_capture_GW3_port="8003"
flow_capture_GW3_datadir="/var/db/flows/"$flow_capture_GW3_port
flow_capture_GW3_user="root"
flow_capture_GW3_flags="-n1 -N0 -S5 -R /usr/local/nodeny/netflow_8003.pl"
# GW4 Flows
flow_capture_GW4_pid="/var/run/flow-capture/flow-capture.pid.8107"
flow_capture_GW4_localip="0.0.0.0"
flow_capture_GW4_remoteip="a.b.c.107"
flow_capture_GW4_port="8107"
flow_capture_GW4_datadir="/var/db/flows/"$flow_capture_GW4_port
flow_capture_GW4_user="root"
flow_capture_GW4_flags="-n1 -N0 -S5 -R /usr/local/nodeny/netflow_8107.pl"