Срочно нужна помощь netup_netflow
Срочно нужна помощь netup_netflow
Добрый день!
На запрос в Netup :
Мы приобрели UTM5, но по разным причинам, продолжаем пользоваться UTM4,
которую нам предоставили вместе с UTM5, при покупке.
В связи с изменением версии программного обеспечения - netup_netflow не
работает на новом коллекторе трафика.
Могли бы Вы предоставить исходники netup_netflow, неразглашение
гарантируется, либо скомпилированный бинарник для ubuntu 10.04LTS?
Было отвечено, что утеряны исходники.
Обращаюсь к тем, кто получил такие, сообщить мне на admin $ ratelcom.ru, для согласования с Netup возможности их получения..
Иначе придется писать свой открытый аналог этого софта...
На запрос в 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
Все настолько плохо? Чем не устраивает UTM5, превосходящий 4ку по всем параметрам и уже имеющийся у Вас? Ну в крайнем случае полно неплохих готовых открытых биллингов...ratelcom писал(а):Иначе придется писать свой открытый аналог этого софта...
Re: Срочно нужна помощь netup_netflow
Он просто работает, и к нему написаны система обработки заявок на подключение, тикет система, система управления впн серверами, дхцп, свитчи, платёжные системы итд. То есть чтобы поменять биллинг - надо менять целиком свю систему.Chistiakov_A писал(а):Все настолько плохо? Чем не устраивает UTM5, превосходящий 4ку по всем параметрам и уже имеющийся у Вас? Ну в крайнем случае полно неплохих готовых открытых биллингов...ratelcom писал(а):Иначе придется писать свой открытый аналог этого софта...
Но! Это планируется. Пока не выбрано на какую систему. UTM5 до сих пор не подходила, по разным параметрам, включая необходимость докупать модули. Но к ней сейчас разработано - управление впн серверами (не радиус), шейпер (свой), управление dhcp серверами, доделываем платежные системы, интеграцию с 1С, и другие модули. Для полноценной работы достаточно базового модуля UTM5.
Покритикуйте такое решение проблемы замены 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
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
-
- Сообщения: 48
- Зарегистрирован: Сб ноя 25, 2006 05:05
- Откуда: Saint-Petersburg, Russia
- Контактная информация:
-
- Сообщения: 48
- Зарегистрирован: Сб ноя 25, 2006 05:05
- Откуда: Saint-Petersburg, Russia
- Контактная информация:
Во-первых, такой вложенный select будет выполняться невероятно медленно.ratelcom писал(а):ID=`$MYSQL "select id from users where concat(trim(ip),' ') REGEXP '$IP '"`ilya_evseev писал(а):netup_netflow, помимо прочего, классифицирует трафик, т.е. определяет UserID и направление (входящий/исходящий/...).
этот "скрипт" тоже
Во-вторых, остаётся проблема t_class.
Фиксированное значение 10 - это если весь трафик в счётчиках только внешний, причём направление не учитывается.
на базе из 10000 пользователейВо-первых, такой вложенный select будет выполняться невероятно медленно.
Во-вторых, остаётся проблема t_class.
Фиксированное значение 10 - это если весь трафик в счётчиках только внешний, причём направление не учитывается.
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) на абонента.
Кроме того агрегацию по направлениям можно и сюда дописать, только тогда уж переписать скрипт ротации на перле - ассоциированные массивы итд.
Вариант коллектора на перле, без классификации по классам трафика.
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;
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;
-
- Сообщения: 48
- Зарегистрирован: Сб ноя 25, 2006 05:05
- Откуда: Saint-Petersburg, Russia
- Контактная информация:
Сколько строк в дампе?ratelcom писал(а): 10 минутный дамп нетфлоу с 10000 пользователей вгоняет в базу за 0m4.456s
У меня самый большой за октябрь - 5,333,775 строк.
Более быстрые способы: "load data local infile" через pipe, либо MySQL::Slurp.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]')");
И лучше записывать сразу в traffic_tmp, чтобы ядро не тратило времени на копирование из traffic_netflow.
Дамп пишется 10 минут причем только входящий трафик - 885721строк, затем закидывается в базу.ilya_evseev писал(а):Сколько строк в дампе?ratelcom писал(а): 10 минутный дамп нетфлоу с 10000 пользователей вгоняет в базу за 0m4.456s
У меня самый большой за октябрь - 5,333,775 строк.Более быстрые способы: "load data local infile" через pipe, либо MySQL::Slurp.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]')");
И лучше записывать сразу в traffic_tmp, чтобы ядро не тратило времени на копирование из traffic_netflow.
На счет таблицы, просто некогда было разбираться что там откуда берётся, темболее traffic_tmp вроде как очищается, а так - не ломает устоявшиеся обычаи биллинга.
Закидывается уже агрегированное по логинам пользователей - тоесть при 10000 пользователей и гипотетической ситуации - что все они будут работать - будет 10000 инсертов... даже это не идет в сравнение с числом записей стандартного netup_netflow.
Один из замеченных эффектов - трафика стало процентов не 25 больше... не досчитывал старик netup_netflow. Осталось дописать определение класса тарфика, и возможно доделать исходящий трафик, хотя это под сомнением - он бесплатный, у лимитных тарифов, а файлы деталки будут больше...
Извините, а в utm5.cfg nfbuffer_host & nfbuffer_port надо закомментировать?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