Страница 1 из 1
Где ошибка в расчётах - октеты в мегабиты?
Добавлено: 2016-04-05 0:00:19
Alex Keda
такой вот скрипт:
Код: Выделить всё
first_gptel=`snmpget -v2c -c $comm 192.168.0.1 IF-MIB::ifHCInOctets.607 | awk '{print $4}'`
sleep 10
second_gptel=`snmpget -v2c -c $comm 192.168.0.1 IF-MIB::ifHCInOctets.607 | awk '{print $4}'`
#first_gptel=`snmpget -v2c -c $comm 192.168.0.1 IF-MIB::ifOutOctets.607 | awk '{print $4}'`
#sleep 10
#second_gptel=`snmpget -v2c -c $comm 192.168.0.1 IF-MIB::ifOutOctets.607 | awk '{print $4}'`
# считаем разницу, сколько октeтов (байт) прошло за 10 секунд
uplink_1=`let $second_gptel - $first_gptel`
# сколько байт прошло за секунду
u_bits=`let $uplink_1 / 10`
u_Mbits=`let $u_bits / 1048576`
цифры полчаются примерно в 10 раз меньше, чем реальные ... может в 8 ...
незнаю. но тупо поделить на 10 или 8 - не интересно. инетересно понять где я ошибся
Где ошибка в расчётах - октеты в мегабиты?
Добавлено: 2016-04-05 0:25:52
FreeBSP
ну ты ж сам пишешь сначала правильно
>> # сколько байт прошло за секунду
а переменную непавильно обзываешь
>> u_bits=`let $uplink_1 / 10`
реально бит в 8 раз больше прошло
Где ошибка в расчётах - октеты в мегабиты?
Добавлено: 2016-04-05 1:22:02
Alex Keda
ага... мегаБИТ жеж
значит надо полученное число на восемь помножить.
а лучше, наверное, снимать за восемь секунд, и делить сразу на 1024*1024 = 1048576
всем спасибо за внимание

Где ошибка в расчётах - октеты в мегабиты?
Добавлено: 2016-04-05 6:45:59
Neus
Alex Keda писал(а):ага... мегаБИТ жеж
значит надо полученное число на восемь помножить.
а лучше, наверное, снимать за восемь секунд, и делить сразу на 1024*1024 = 1048576
всем спасибо за внимание

не лучше, так семантика операции теряется.
потом будешь чесать репу "и чего я тут считаю..."
Где ошибка в расчётах - октеты в мегабиты?
Добавлено: 2016-04-05 11:08:27
Alex Keda
может кому понадобится - дёргает загрузку интерфейсов по убыванию.
вызываю из предыущего, по реультату его работы - большая или нет нагрузка на аплинке
Код: Выделить всё
manager# cat juniper.show.interfaces.traff.sh
#!/bin/sh
comm="private-or-public"
host=${1-"192.168.0.1"}
limit=150
# имя железки с которой работаем
sysName=`snmpwalk -v2c -c $comm $host SNMPv2-MIB::sysName.0 | awk '{print $4}'`
# директория временных файлов
tmp="`mktemp -d`"
# отправляемое/выводимое сообщение
msg="$tmp/msg.txt"
# перебираем мибы - вход/выход
#ifInOctets ifOutOctets
for way in In Out
do
MIB="if${way}Octets"
# снимаем 1 показание с интерфейсов
snmpwalk -v2c -c $comm $host IF-MIB::$MIB | awk -F "$MIB." '{print $2}' | awk '{print $1" "$4}' |
{
while read index octets
do
# сохраняем значение траффика
echo $octets > $tmp/1.$MIB.$index.txt
done
}
# ждём 10 секунд
sleep 10
# снимаем 2 показание с интерфейсов
snmpwalk -v2c -c $comm $host IF-MIB::$MIB | awk -F "$MIB." '{print $2}' | awk '{print $1" "$4}' |
{
while read index octets
do
# если трафф больше нуля - сохраняем его (чтоб не обсчитывать интерфейсы с нулями)
if [ $octets -gt 0 ]
then
# сохраняем значение траффика
echo $octets > $tmp/2.$MIB.$index.txt
# сразу считаем скорость, в отдельный файл
first_count=`cat $tmp/1.$MIB.$index.txt`
octets=`let $octets - $first_count`
# делим на число секунд, получаем Байт/с
Bps=`let $octets / 10`
# умножаем на 8 - получаем Бит/с
bps=`let $Bps \* 8`
# делим на 1024*1024 - МегаБиты
Mbits=`let $bps / 1048576`
# сохраняем в общий список скорость и имя интерфейса
if [ $Mbits != 0 ]
then
descr=`snmpget -v2c -c $comm $host IF-MIB::ifDescr.$index | awk -F 'STRING:' '{print $2}'`
echo $Mbits $descr >> $tmp/$MIB.txt
fi
fi
done
}
# формируем шапку сообщения
echo "$sysName: top interfaces, $way" >> $msg
# сортируем статистику, дописываем в файл
cat $tmp/$MIB.txt | sort -n -r | head -10 |
{
while read speed interface
do
echo "$interface => $speed Mbit/s" >> $msg
done
}
# пустая строка
echo "" >> $msg
done
# выводим сообщение
cat $msg
rm -rf $tmp
пример выхлопа:
Код: Выделить всё
manager# sh juniper.show.interfaces.traff.sh
ex2200-0.host-food.ru: top interfaces, In
ge-0/0/10 => 112 Mbit/s
ge-0/1/3 => 87 Mbit/s
ge-0/1/0 => 51 Mbit/s
ge-0/0/20 => 21 Mbit/s
ge-0/0/0 => 15 Mbit/s
ge-0/0/18 => 8 Mbit/s
ge-0/0/2 => 6 Mbit/s
ge-0/0/7 => 5 Mbit/s
ge-0/0/30 => 5 Mbit/s
ge-0/0/33 => 1 Mbit/s
ex2200-0.host-food.ru: top interfaces, Out
ge-0/1/0 => 294 Mbit/s
ge-0/1/3 => 12 Mbit/s
ge-0/0/18 => 10 Mbit/s
ge-0/0/30 => 5 Mbit/s
ge-0/0/20 => 2 Mbit/s
ge-0/0/7 => 1 Mbit/s
ge-0/0/21 => 1 Mbit/s
ge-0/0/10 => 1 Mbit/s
Где ошибка в расчётах - октеты в мегабиты?
Добавлено: 2016-04-06 14:35:48
Alex Keda
заменил в скрипте
на
поскольку первые 32 битные, и при большом потоке бывает обнулится успевают за 10 секунд.
вторые - соответственно 64 бита, с ними такой проблемы пока не наблюдал
Где ошибка в расчётах - октеты в мегабиты?
Добавлено: 2016-04-06 15:47:31
Neus
))
на канале 10гбит лет так через 435 обнулятся