mpd5: Считать загрузку интерфейса

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
wel
сержант
Сообщения: 170
Зарегистрирован: 2007-02-27 11:59:41

mpd5: Считать загрузку интерфейса

Непрочитанное сообщение wel » 2009-10-21 3:20:21

Привет Всем
В общем Мы приблизились к тому что uplink на 105% используем, посему встала задача резать скорость на каждого клиента ng_car'ом...

Остается одна единственная проблема - надо определять какую загрузку дает сейчас в данный момент каждый пользователь, причем это желательно делать так что бы это "не упало", типа так...только тут может быть и вот так:

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

 >netstat -inb -I vlan51
Name    Mtu Network       Address              Ipkts Ierrs     Ibytes    Opkts Oerrs     Obytes  Coll
vlan5  1500 <Link#8>      00:02:b3:9e:07:e4 8449345813     0 6835865147035 7960787701 887311 5560705301371     0
vlan5  1500 10.2.4.0/2 10.2.5.1       8402669069     - 6703212389391 7927669023     - 5415286254187     -
vlan5  1500 10.2.4.0/2 10.2.4.2         621761     -  169860608        2     -        168     -

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

 >netstat -ibt|less
Name    Mtu Network       Address              Ipkts Ierrs     Ibytes    Opkts Oerrs     Obytes  Coll Time
em0    1500 <Link#1>      00:02:b3:9e:07:e4 16849504489 173376 12357752497958 16981579257     0 12223434363542     0    0
re0*   1500 <Link#2>      00:1d:92:e4:48:0c        0     0          0        0     0          0     0    0
plip0  1500 <Link#3>                               0     0          0        0     0          0     0    0
pflog 33160 <Link#4>                               0     0          0        0     0          0     0    0
pfsyn  1460 <Link#5>                               0     0          0        0     0          0     0    0
lo0   16384 <Link#6>                          290847     0   33072502   290847     0   33072502     0    0
lo0   16384 fe80:6::1     fe80:6::1                0     -          0        0     -          0     -    -
lo0   16384 localhost     ::1                      0     -          0        0     -          0     -    -
lo0   16384 your-net      localhost               21     -       1987       21     -       1987     -    -
vlan2  1500 <Link#7>      00:02:b3:9e:07:e4 1744965967     0 1589285714513 5956459186 15321 4204571936411     0    0
vlan2  1500 91.203.143.0/ ns1.www-linux.org 41033053     - 3532758139  4522621     -  419096205     -    -
vlan5  1500 <Link#8>      00:02:b3:9e:07:e4 8447609186     0 6834565143252 7959187552 887311 5559896271077     0    0
vlan5  1500 10.200.24.0/2 vpn1.skyhome      8400933352     - 6701937027849 7926069231     - 5414499645792     -    -
vlan5  1500 10.200.24.0/2 10.200.24.2         621739     -  169858218        2     -        168     -    -
vlan5  1500 <Link#9>      00:02:b3:9e:07:e4 200469937     0 222953546013 197446944 15037 154683329548     0    0
vlan5  1500 10.200.205.0  10.200.205.2       2618738     -  309224804 183132498     - 135068391683     -    -
Или

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

systat -ifstat
                    /0   /1   /2   /3   /4   /5   /6   /7   /8   /9   /10
     Load Average   ||

      Interface           Traffic               Peak                Total
          ng209  in      0.000 KB/s          0.000 KB/s            8.662 MB
                 out     0.000 KB/s          0.000 KB/s          288.008 MB

          ng197  in      0.000 KB/s          0.013 KB/s            2.273 MB
                 out     0.000 KB/s          0.000 KB/s            8.004 MB

          ng178  in      0.000 KB/s          0.007 KB/s            6.138 MB
                 out     0.000 KB/s          0.064 KB/s           41.430 MB

          ng164  in      0.741 KB/s          0.741 KB/s           13.349 MB
                 out     0.845 KB/s          0.879 KB/s          136.999 MB

          ng149  in     46.620 KB/s         49.353 KB/s          995.950 MB
                 out     2.872 KB/s          2.878 KB/s            2.915 GB

          ng136  in      0.000 KB/s          0.000 KB/s           66.775 MB
                 out     0.000 KB/s          0.000 KB/s            3.221 GB

          ng133  in    103.869 KB/s        106.746 KB/s            1.573 GB
                 out     3.548 KB/s          3.715 KB/s          104.500 MB

          ng122  in      0.045 KB/s          0.045 KB/s          129.526 MB
                 out     0.000 KB/s          0.628 KB/s          408.205 MB

          ng119  in     12.412 KB/s         12.412 KB/s            1.243 GB
                 out     1.048 KB/s          1.337 KB/s            1.966 GB

          ng112  in      9.543 KB/s         22.020 KB/s          445.818 MB
                 out     7.152 KB/s          8.274 KB/s           15.849 GB

          ng110  in     11.293 KB/s         31.991 KB/s            1.867 GB
                 out     5.060 KB/s        894.532 KB/s            9.032 GB

          ng103  in      0.000 KB/s          0.000 KB/s            2.920 MB
                 out     0.000 KB/s          0.000 KB/s            8.858 MB

           ng94  in    416.380 KB/s        463.516 KB/s            3.747 GB
                 out     8.880 KB/s          9.751 KB/s          114.027 MB

           ng91  in      3.496 KB/s          3.710 KB/s          120.671 MB
                 out   118.968 KB/s        124.703 KB/s            2.860 GB
Идеально было бы:
интерфейс - загрузка in/out - ip нас этом интерфейсе

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

wel
сержант
Сообщения: 170
Зарегистрирован: 2007-02-27 11:59:41

Re: mpd5: Считать загрузку интерфейса

Непрочитанное сообщение wel » 2009-10-21 18:35:12

Люди подскажите как "штатными" средствами сделать?...
Мутить с snmp, netflow - не очень хотелось бы - в виду введения еще одного звена отказа...

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: mpd5: Считать загрузку интерфейса

Непрочитанное сообщение paradox » 2009-10-21 18:37:12

а то что вы привели netstat это не штаные средства?

wel
сержант
Сообщения: 170
Зарегистрирован: 2007-02-27 11:59:41

Re: mpd5: Считать загрузку интерфейса

Непрочитанное сообщение wel » 2009-10-21 20:25:16

paradox писал(а):а то что вы привели netstat это не штаные средства?
Во первых У него некоторые проблемы с отображением - vlan51 => vlan5 why ???

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

 >netstat -inb -I vlan51
Name    Mtu Network       Address              Ipkts Ierrs     Ibytes    Opkts Oerrs     Obytes  Coll
vlan5  1500 <Link#8>      00:02:b3:9e:07:e4 8449345813     0 6835865147035 7960787701 887311 5560705301371     0
vlan5  1500 10.2.4.0/2 10.2.5.1       8402669069     - 6703212389391 7927669023     - 5415286254187     -
vlan5  1500 10.2.4.0/2 10.2.4.2         621761     -  169860608        2     -        168     -
Во вторых у Меня по 2-е строчки на интефейс - их прийдется суммировать ? :(
ng45 1400 <Link#58> 1026 0 160160 728 0 332795 0
ng45 1400 10.200.252.1/ 10.200.252.1 0 - 0 0 - 0 -
ng198 1400 <Link#211> 140 0 25311 112 0 16651 0
ng198 1400 10.200.252.1/ 10.200.252.1 0 - 0 0 - 0 -

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: mpd5: Считать загрузку интерфейса

Непрочитанное сообщение paradox » 2009-10-21 20:29:13

Во первых У него некоторые проблемы с отображением - vlan51 => vlan5 why ???
напишите баг репорт

wel
сержант
Сообщения: 170
Зарегистрирован: 2007-02-27 11:59:41

Re: mpd5: Считать загрузку интерфейса

Непрочитанное сообщение wel » 2009-10-21 22:41:51

paradox писал(а):
Во первых У него некоторые проблемы с отображением - vlan51 => vlan5 why ???
напишите баг репорт
В моем случае в принципе это не важно, так как Я буду обращаться по имени интерфейса, хотя опять же это не кошерно и сказывается на производительности :(, но зато Я не попадаю в просак с именем интерфейса...

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

>date ; /count.sh >> /dev/null ; date
Wed Oct 21 22:38:08 EEST 2009
Wed Oct 21 22:38:22 EEST 2009
/count.sh:

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

#!/usr/local/bin/bash
for i in `ifconfig -a|grep ng|awk '{print$1}'|tr ':' ' '`;do
ip=`/sbin/ifconfig $i|grep inet|awk '{print$4}'`

let  in_temp=0
for in_traff in `netstat -inb -I $i|grep $i | awk '{print$7}'` ;do
        let in_temp=in_traff+in_temp
done
let  out_temp=0
for out_traff in `netstat -inb -I $i|grep $i | awk '{print$10}'` ;do
        let out_temp=out_traff+out_temp
done

echo  "ip:$ip in_bytes: $in_temp out_bytes: $out_temp"
done

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: mpd5: Считать загрузку интерфейса

Непрочитанное сообщение paradox » 2009-10-21 22:45:13

если вам наплевать что в сисьеме ошибки и вы не хотите о них сообщить
то зачем вы ее используете?

wel
сержант
Сообщения: 170
Зарегистрирован: 2007-02-27 11:59:41

Re: mpd5: Считать загрузку интерфейса

Непрочитанное сообщение wel » 2009-10-22 0:39:48

paradox писал(а):если вам наплевать что в сисьеме ошибки и вы не хотите о них сообщить
то зачем вы ее используете?
это не тот баг из-за которого все упадет :) Я не говорил что не буду сообщать, просто сказал что для моего случая - не важно...потом забагрепорчу, а сейчас Мне надо решить свою задачу...

...получилось что так намного быстрее...

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

<?php
$snmp_server="10.1.1.1";
$comunity="public";
$mib_out="IF-MIB::ifHCOutOctets";
 $mib_in="IF-MIB::ifHCInOctets";


$link = mysql_connect('10.1.1.1', 'user', 'password');
if (!$link) {
        die('Could not connect: ' . mysql_error());
}

mysql_select_db("freenibs");
$result = mysql_query("SELECT `ip` FROM `actions` WHERE `terminate_cause`='Online'");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$ip=$row['ip'];
//$mib="RFC1213-MIB::ipRouteIfIndex.".$ip;
 $mib=".1.3.6.1.2.1.4.21.1.2.".$ip;

$index = trim(str_replace("INTEGER:","",snmp2_get($snmp_server,$comunity , $mib)));

$in=trim(str_replace("Counter64:","",snmp2_get($snmp_server,$comunity , $mib_in.".".$index)));
$out=trim(str_replace("Counter64:","",snmp2_get($snmp_server,$comunity , $mib_out.".".$index)));

echo "$ip in: $in out:$out\n";
}
mysql_close($link);
?>

Аватара пользователя
lolwut
мл. сержант
Сообщения: 123
Зарегистрирован: 2010-01-26 4:39:23

Re: mpd5: Считать загрузку интерфейса

Непрочитанное сообщение lolwut » 2010-01-26 7:04:53

а что мешало делать простое

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

SELECT in_bytes, out_bytes, ip FROM actions WHERE terminate_cause = 'online' AND ...
правда счетчик в этой таблице обновляется с периодом = Acct-Interim-Interval, но в общем виде покажет то же самое что Вы видите через SNMP, который сюда небыло смысла прикручивать, IMHO

wel
сержант
Сообщения: 170
Зарегистрирован: 2007-02-27 11:59:41

Re: mpd5: Считать загрузку интерфейса

Непрочитанное сообщение wel » 2010-01-26 10:44:36

lolwut писал(а):а что мешало делать простое

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

SELECT in_bytes, out_bytes, ip FROM actions WHERE terminate_cause = 'online' AND ...
правда счетчик в этой таблице обновляется с периодом = Acct-Interim-Interval, но в общем виде покажет то же самое что Вы видите через SNMP, который сюда небыло смысла прикручивать, IMHO
наверное отсутствие радиуса без переполнения :)
+ когда несколько серверов и база(да и такое бывает раз в Х времени) или радиус отвалились(да и такое бывает, но чаще :) ) или же стоит очень большой Acct-Interim-Interval>1 минуты...усложняется скриптовое манипулирование скорости :(

ЗЫ:
Я тоже думаю, что по простоте съема данных и отсутствия лишних демонов: Radius ->snmp->netflow
ЗЫЗЫ:
если появляется желание построить графики загрузки клиентом? Я понимаю что можно в принципе в базе это реализовать - на UPDATE довесить что бы он заполнял таблицу с данными или же брать данные напрямую и строить графики, но не проще ли по snmp/netflow если нужно большое разрешение - с детализацией до 10-20сек, а не среднюю загрузку канала клиентом за Acct-Interim-Interval?
и зачем насиловать сервер базы данных если сервер доступа можно понасиловать :)

wel
сержант
Сообщения: 170
Зарегистрирован: 2007-02-27 11:59:41

Re: mpd5: Считать загрузку интерфейса

Непрочитанное сообщение wel » 2010-06-18 3:58:14

итак продолжая начатое, образовались такие условия:
Я хочу решить задачу - Динамическая нарезка канала с его утилизацией до 90-95%, но без перегрузок и только для определёных пользователей...

*Понятия:
Средняя загрузка канала - общее количество Мбайт переданное делённое на период съёма статистики(количество секунд, за которое они были переданы).
Средняя загрузка канала за сессию - за сессию (это как Вы сами определите) равняется (средняя загрузка канала за сессию + средняя загрузка канала)/2

Есть 3-а типа людей:
[1].серфинг, онлайн видео на рутубе, ютубе и т.д. [средняя загрузка канала <=400Kb]
[2].скачать 1-4 фильма за вечер. [средняя загрузка канала >400Kb]
[3].качать-качать-качать.... [средняя загрузка канала >400Kb, средняя загрузка канала за сессию >400Kb]

Конечно Я эмпирически вычислил порог в 400Kb :)

Алгоритм работы простой:

Есть Максимальная Скорость Канала. Есть Часть канала которая утилизируется пользователями на других тарифных планах.
Рассчитываем общая скорость доступную для абонентов лимитируемых динамически, она = Максимальная Скорость Канала-Часть канала которая утилизируется пользователями на других тарифных планах.

Рассчитываем скорость на каждого абонента:
Всем кого относится к типу людей [1]. ставим: Максимально возможную скорость для типа людей [1].. Например 100Мбит.

Для всех остальных скорость доступную для абонентов лимитируемых динамически, она = общая скорость доступную для абонентов лимитируемых динамически-Часть канала которая утилизируется пользователями относящиеся к типу[1]..

..........

wel
сержант
Сообщения: 170
Зарегистрирован: 2007-02-27 11:59:41

Re: mpd5: Считать загрузку интерфейса

Непрочитанное сообщение wel » 2010-06-18 4:59:11

теперь
Алгоритм 1:
скорость одного абонента = (скорость доступную для абонентов лимитируемых динамически/ количество человек лимитируемых динамически)*К
К статистический коэффициент, который зависит от загрузки канала и меняется от 1 и в большую сторону....

wel
сержант
Сообщения: 170
Зарегистрирован: 2007-02-27 11:59:41

Re: mpd5: Считать загрузку интерфейса

Непрочитанное сообщение wel » 2010-06-18 5:15:52

*Этот предыдущий - тупой алгоритм, тут не учитывается то - качает или не качает абонент - скорость не утилизируется правильно :(

Сейчас работаю над другим алгоритмом, но пока не придумал -
Как можно связать математически: скорость абонента за последнюю минуту, средняя скорость абонента за сессию, свободный канал...
Есть мысль: Тем кто качает больше других - постоянно понижать скорость, а тем кто не качает - повышать, это будет примерно так:
абонент / скорость(реальное|выставленое) 1 мин назад /скорость через минуту(реальное|выставленое) /скорость через 2-е минуты(реальное|выставленое), это пример как удерживать в скорости 4Мбайт/сек...

1.юзер1/ 900Кбайт|1000Кбайт /1000Кбайт|1500Кбайт/ 1500Кбайт|2000Кбайт

2.юзер2/ 100Кбайт|10Мбайт /3000Кбайт|2500Кбайт /1500Кбайт|2000Кбайт


В общем жду советов !

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: mpd5: Считать загрузку интерфейса

Непрочитанное сообщение schizoid » 2010-06-18 10:56:32

http://www.netup.ru/UTM5/billing_DynaShape.php
посмотри как реализовано у них.
ядерный взрыв...смертельно красиво...жаль, что не вечно...

wel
сержант
Сообщения: 170
Зарегистрирован: 2007-02-27 11:59:41

Re: mpd5: Считать загрузку интерфейса

Непрочитанное сообщение wel » 2010-06-18 15:58:53

schizoid писал(а):http://www.netup.ru/UTM5/billing_DynaShape.php
посмотри как реализовано у них.
К сожалению у них скорость выставляется от скачанного трафика - скачал 100Гб например скорость в 2-а раза уменьшилась, а мне надо от скачаного трафика за 1минуту...и Мне же надо реализовать утилизацию канала на <=90%.

Проблема с Алгоритмом 1, в том что очень легко достичь перегрузок и недоутилизацию канала :( - это последствия того что скорость на всех одинаковая
Ладно - придумаю напишу тут алгоритм