Срочно нужна помощь netup_netflow

Вопросы по UTM 3.0 и UTM 4.0 (поддержка прекращена)
Закрыто
ratelcom
Сообщения: 31
Зарегистрирован: Сб май 07, 2005 04:07

Срочно нужна помощь netup_netflow

Сообщение ratelcom »

Добрый день!

На запрос в Netup :

Мы приобрели UTM5, но по разным причинам, продолжаем пользоваться UTM4,
которую нам предоставили вместе с UTM5, при покупке.
В связи с изменением версии программного обеспечения - netup_netflow не
работает на новом коллекторе трафика.
Могли бы Вы предоставить исходники netup_netflow, неразглашение
гарантируется, либо скомпилированный бинарник для ubuntu 10.04LTS?


Было отвечено, что утеряны исходники.
Обращаюсь к тем, кто получил такие, сообщить мне на admin $ ratelcom.ru, для согласования с Netup возможности их получения..

Иначе придется писать свой открытый аналог этого софта...

Аватара пользователя
Chistiakov_A
NetUP Team
Сообщения: 190
Зарегистрирован: Пн мар 21, 2005 18:30

Re: Срочно нужна помощь netup_netflow

Сообщение Chistiakov_A »

ratelcom писал(а):Иначе придется писать свой открытый аналог этого софта...
Все настолько плохо? Чем не устраивает UTM5, превосходящий 4ку по всем параметрам и уже имеющийся у Вас? Ну в крайнем случае полно неплохих готовых открытых биллингов...

ratelcom
Сообщения: 31
Зарегистрирован: Сб май 07, 2005 04:07

Re: Срочно нужна помощь netup_netflow

Сообщение ratelcom »

Chistiakov_A писал(а):
ratelcom писал(а):Иначе придется писать свой открытый аналог этого софта...
Все настолько плохо? Чем не устраивает UTM5, превосходящий 4ку по всем параметрам и уже имеющийся у Вас? Ну в крайнем случае полно неплохих готовых открытых биллингов...
Он просто работает, и к нему написаны система обработки заявок на подключение, тикет система, система управления впн серверами, дхцп, свитчи, платёжные системы итд. То есть чтобы поменять биллинг - надо менять целиком свю систему.

Но! Это планируется. Пока не выбрано на какую систему. UTM5 до сих пор не подходила, по разным параметрам, включая необходимость докупать модули. Но к ней сейчас разработано - управление впн серверами (не радиус), шейпер (свой), управление dhcp серверами, доделываем платежные системы, интеграцию с 1С, и другие модули. Для полноценной работы достаточно базового модуля UTM5.

ratelcom
Сообщения: 31
Зарегистрирован: Сб май 07, 2005 04:07

Сообщение ratelcom »

Покритикуйте такое решение проблемы замены netup_netflow, необходим учет только входящего трафика

cat flow-capture.conf

-w /isp/flow -n 275 -N -1 -R /isp/bin/rotate.sh -S 5 0/0/9996

cat /isp/bin/rotate.sh

#!/bin/sh

MYSQL="mysql --connect_timeout 7 UTM -h xxxxxx -u xxx --password=xxx --skip-column-names -B -e"

flow-cat $1 | flow-stat -f8 | grep -v "^#" | awk '{print $1"\t"$3"\t"$4}' | while read IP dOctets dPkts ; do
ID=`$MYSQL "select id from users where concat(trim(ip),' ') REGEXP '$IP '"`
$MYSQL "INSERT INTO traffic_netflow (srcaddr,dstaddr, uid, t_class, dPkts, dOctets) VALUES (inet_aton('2.2.2.2'), inet_aton('$IP'),'$ID','10',$dPkts, $dOctets )"
done

раз в 5 минут по текущему файлу нетфлоу берется статистика, и закидывается в tarffic_netflow

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

Сообщение ilya_evseev »

netup_netflow, помимо прочего, классифицирует трафик, т.е. определяет UserID и направление (входящий/исходящий/...).

ratelcom
Сообщения: 31
Зарегистрирован: Сб май 07, 2005 04:07

Сообщение ratelcom »

ilya_evseev писал(а):netup_netflow, помимо прочего, классифицирует трафик, т.е. определяет UserID и направление (входящий/исходящий/...).
ID=`$MYSQL "select id from users where concat(trim(ip),' ') REGEXP '$IP '"`

этот "скрипт" тоже

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

Сообщение ilya_evseev »

ratelcom писал(а):
ilya_evseev писал(а):netup_netflow, помимо прочего, классифицирует трафик, т.е. определяет UserID и направление (входящий/исходящий/...).
ID=`$MYSQL "select id from users where concat(trim(ip),' ') REGEXP '$IP '"`

этот "скрипт" тоже
Во-первых, такой вложенный select будет выполняться невероятно медленно.
Во-вторых, остаётся проблема t_class.
Фиксированное значение 10 - это если весь трафик в счётчиках только внешний, причём направление не учитывается.

ratelcom
Сообщения: 31
Зарегистрирован: Сб май 07, 2005 04:07

Сообщение ratelcom »

Во-первых, такой вложенный select будет выполняться невероятно медленно.
Во-вторых, остаётся проблема t_class.
Фиксированное значение 10 - это если весь трафик в счётчиках только внешний, причём направление не учитывается.
на базе из 10000 пользователей

select id from users where CONCAT(trim(ip),' ') REGEXP "172.16.0.20 ";
+----+
| id |
+----+
| 17 |
+----+
1 row in set (0.04 sec)

Конечно лучше вытащить все id из базы и сравнивать тут на месте, но... даже если 5000 абонентов будут онлайн и генерировать трафик последние 5 минут, то будет 5000 селектов + 0,04 сек = 200 сек. Кроме того можно отбросить те ип с которых было меньше 5 пакетов, для статистики это незначительная потеря, но сокращает число обращений в базу за ID пользователя.

На генераторах нетфлоу используется ipt_NETFLOW - соответственно в нетфлоу генерируется только тот трафик, который не локальный, тоесть именно входящий (10) на абонента.

Кроме того агрегацию по направлениям можно и сюда дописать, только тогда уж переписать скрипт ротации на перле - ассоциированные массивы итд.

ratelcom
Сообщения: 31
Зарегистрирован: Сб май 07, 2005 04:07

Сообщение ratelcom »

Вариант коллектора на перле, без классификации по классам трафика.
10 минутный дамп нетфлоу с 10000 пользователей вгоняет в базу за 0m4.456s

DBI_data="DBI:$database_type:database=$database;host=$database_host;mysql_socket=$sock_path;";
$dbh = DBI->connect("$DBI_data","$database_login","$database_password",{'RaiseError' => 1});

$sth= $dbh->prepare("SELECT id,ip FROM users");
$sth->execute();

while (my $idip = $sth->fetchrow_hashref()) {
$id = $idip->{'id'};
$ip = $idip->{'ip'};
@list=split(/\s+/,$ip);
foreach $arg (@list) {
$hash{ $arg } = $id;
}
};

$sth->finish();

my $command = "flow-cat $ARGV[0] | flow-stat -f8 | grep -v '#' 2>/dev/null |";
open IN, $command;
foreach (<IN>){
@list=split(/\s+/,$_);
if ($hash{@list[0]} > 1) {
$dbh->do("INSERT INTO traffic_netflow (srcaddr,dstaddr, uid, t_class, dPkts, dOctets) VALUES (inet_aton('2.2.2.2'), inet_aton('@list[0]'),'$hash{@list[0]}','10','@list[3]','@list[2]')");
};
}
close IN;

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

Сообщение ilya_evseev »

ratelcom писал(а): 10 минутный дамп нетфлоу с 10000 пользователей вгоняет в базу за 0m4.456s
Сколько строк в дампе?
У меня самый большой за октябрь - 5,333,775 строк.
ratelcom писал(а): $dbh->do("INSERT INTO traffic_netflow (srcaddr,dstaddr, uid, t_class, dPkts, dOctets) VALUES (inet_aton('2.2.2.2'), inet_aton('@list[0]'),'$hash{@list[0]}','10','@list[3]','@list[2]')");
Более быстрые способы: "load data local infile" через pipe, либо MySQL::Slurp.

И лучше записывать сразу в traffic_tmp, чтобы ядро не тратило времени на копирование из traffic_netflow.

ratelcom
Сообщения: 31
Зарегистрирован: Сб май 07, 2005 04:07

Сообщение ratelcom »

ilya_evseev писал(а):
ratelcom писал(а): 10 минутный дамп нетфлоу с 10000 пользователей вгоняет в базу за 0m4.456s
Сколько строк в дампе?
У меня самый большой за октябрь - 5,333,775 строк.
ratelcom писал(а): $dbh->do("INSERT INTO traffic_netflow (srcaddr,dstaddr, uid, t_class, dPkts, dOctets) VALUES (inet_aton('2.2.2.2'), inet_aton('@list[0]'),'$hash{@list[0]}','10','@list[3]','@list[2]')");
Более быстрые способы: "load data local infile" через pipe, либо MySQL::Slurp.

И лучше записывать сразу в traffic_tmp, чтобы ядро не тратило времени на копирование из traffic_netflow.
Дамп пишется 10 минут причем только входящий трафик - 885721строк, затем закидывается в базу.

На счет таблицы, просто некогда было разбираться что там откуда берётся, темболее traffic_tmp вроде как очищается, а так - не ломает устоявшиеся обычаи биллинга.

Закидывается уже агрегированное по логинам пользователей - тоесть при 10000 пользователей и гипотетической ситуации - что все они будут работать - будет 10000 инсертов... даже это не идет в сравнение с числом записей стандартного netup_netflow.

Один из замеченных эффектов - трафика стало процентов не 25 больше... не досчитывал старик netup_netflow. Осталось дописать определение класса тарфика, и возможно доделать исходящий трафик, хотя это под сомнением - он бесплатный, у лимитных тарифов, а файлы деталки будут больше...

Cepreu
Сообщения: 1
Зарегистрирован: Ср ноя 17, 2010 14:20

Сообщение Cepreu »

ratelcom писал(а):Покритикуйте такое решение проблемы замены netup_netflow, необходим учет только входящего трафика

cat flow-capture.conf

-w /isp/flow -n 275 -N -1 -R /isp/bin/rotate.sh -S 5 0/0/9996

cat /isp/bin/rotate.sh

#!/bin/sh

MYSQL="mysql --connect_timeout 7 UTM -h xxxxxx -u xxx --password=xxx --skip-column-names -B -e"

flow-cat $1 | flow-stat -f8 | grep -v "^#" | awk '{print $1"\t"$3"\t"$4}' | while read IP dOctets dPkts ; do
ID=`$MYSQL "select id from users where concat(trim(ip),' ') REGEXP '$IP '"`
$MYSQL "INSERT INTO traffic_netflow (srcaddr,dstaddr, uid, t_class, dPkts, dOctets) VALUES (inet_aton('2.2.2.2'), inet_aton('$IP'),'$ID','10',$dPkts, $dOctets )"
done

раз в 5 минут по текущему файлу нетфлоу берется статистика, и закидывается в tarffic_netflow
Извините, а в utm5.cfg nfbuffer_host & nfbuffer_port надо закомментировать?

Закрыто