Назад | Перейти на главную страницу

Как я могу рассчитать 95-процентное использование пропускной способности сетевого устройства?

Мой провайдер выставляет счет за мою пропускную способность по методу 95 процентилей. В принципе, я знаю, что это такое (снимаю мерки, отбрасываю верхние 5% и использую оставшиеся самые высокие в качестве результата).

Вопрос в том, что используется в качестве базовых данных!

Насколько я понимаю, с моим текущим провайдером коммутатор регистрирует трафик за 5-минутный интервал. Не одно измерение каждые 5 минут, а среднее значение за 5 минут!

Стандартизирован ли интервал или, по крайней мере, является стандартом де-факто в отрасли? Также стандартно ли использовать среднюю полосу пропускания (равную данным, разделенным по времени) в течение этих интервалов или просто брать, например, среднее значение 5 секунд каждые 5 минут?

Мой второй вопрос: есть ли приложение, такое как vnstat, которое я могу использовать для измерения 95-го процентиля?

Стандартный, который я знаю, - это просто смотреть на сетевые счетчики (количество переданных пакетов / байтов) за 5 минут. Вот так просто - это дает вам среднее значение, поскольку вы не знаете, как это было распределено за 5 минут.

Обычно измеряют счетчики отправленных / полученных байтов / пакетов от сетевого оборудования каждые 5 минут. Это 100%. Отбросьте 5% самых высоких цифр, то есть 95% процентиль.

Самостоятельное измерение - да, но получить точно такие же числа сложно (нужно точно измерить одни и те же элементы в одно и то же время).

У вас есть какие-либо маршрутизаторы / брандмауэры в вашей настройке или вы просто подключаетесь с хоста Linux? (это имеет значение в ваших вариантах мониторинга)

И какова ваша постоянная скорость сейчас по сравнению с вашей стабильной скоростью?

Ваш провайдер должен предоставить вам текущий график (обычно это производная от RRDtool и / или MRTG), отображающий использование полосы пропускания на протяжении всего цикла выставления счетов. Они могут измерять от вашего порта восходящей связи.

я использую Observium на моей стороне, но это для более крупной установки. Я коснусь внешнего интерфейса своего пограничного устройства и отслеживаю 95-й процентиль. Инструмент предназначен для использования поставщиками услуг, поэтому все шаблоны выставления счетов присутствуют.

Что-то вроде:

Я получаю следующую разбивку (с прогнозом) каждый месяц от одного из моих поставщиков ...

--------------------------------
Transit : Bandwidth Usage Breakdown
--------------------------------
Last Month Usage Breakdown:

       From: Tue Jan  1 00:00:00 CST 2013
         To: Fri Feb  1 00:00:00 CST 2013

  GBytes     IN =   184.661
  GBytes    OUT =   944.873
          -----------------
          TOTAL =  1129.534

  95th Percentile:  9.866 Mbps

--------------------------------
Month-To-Date Usage Breakdown:

       From: Fri Feb  1 00:00:00 CST 2013
         To: Mon Feb 11 07:33:37 CST 2013

  GBytes     IN =    60.902
  GBytes    OUT =   287.265
          -----------------
          TOTAL =   348.168

  95th Percentile:  9.906 Mbps

--------------------------------
Current Month Projection Usage Breakdown:

       From: Fri Feb  1 00:00:00 CST 2013
         To: Fri Mar  1 00:00:00 CST 2013

  GBytes     IN =    60.902
  GBytes    OUT =   287.265
          -----------------
          TOTAL =   348.168

  95th Percentile:  9.412 Mbps

--------------------------------

Были патчи, которые добавляли 95-й процентиль к графику. MRTG, но они не были приняты в исходном коде основной ветки разработки и, вероятно, никогда не будут приняты.

Вы должны "обновить" до rrdtoolтого же автора, который 95-й процентиль но обычно требует больше работы по настройке. Преимущество здесь в том, что rrdtool намного более гибок, чем mrtg, и вы можете делать с ним много других вещей.

Если вы хотите настроить более полное решение для мониторинга и построения графиков, Кактусы и у всех друзей есть шаблоны для сетевого трафика, которые включают 95-й процентиль.

Если вы используете Linux, ifconfig дает вам несколько подсказок. Запустите сценарий для получения данных с 5-минутным интервалом, а затем вручную отрежьте 5% верхних данных и готово.

На микроуровне вы можете проверить ethtool -S ethX где вы получаете подробную статистику пакетов. Опять же, вставьте сценарий с 5-минутным интервалом, рассчитайте на день или два, а затем выполните некоторые измерения на нем. Вставляйте команду date после каждой итерации основной команды, чтобы получить оценку того, когда вы измеряете, а когда ваш провайдер.

Это должно дать вам 95-й процентиль интерфейса в Linux:

======= 95.ш =====

#!/bin/bash

IFACE=${1-eth0}
INTERVAL=${2-10}
# Generate environment vars RX1,RX2 and TX1,TX2 which are 10 seconds apart:
eval $(
    ifconfig  $IFACE | grep '[RT]X packets' | awk '{print $1" "$5}' | sed 's/ /1=/' 
    sleep $INTERVAL
    ifconfig  $IFACE | grep '[RT]X packets' | awk '{print $1" "$5}' | sed 's/ /2=/') 

# Convert to kbit/sec:
let "RX=($RX2-$RX1)*8/$INTERVAL / 1000"
let "TX=($TX2-$TX1)*8/$INTERVAL / 1000"

# BX is the max of both:
let "BX = $TX > RX ? $TX : $RX"

echo $BX RX=$RX TX=$TX BX=$BX $(date '+%F %H:%M:%S')

==== / и т.д. / crontab ====

*/5  *  *  *  * root /usr/local/bin/95th.sh eth0 >> /var/log/95th-percent.log

==== найдите запись 95-го процентиля из вашего журнала в кбит ====

DATE=2019-06
PERCENTILE=95
grep $DATE /var/log/95th-percent.log | sort -nr | head -n $(( $( grep -c $DATE /var/log/95th-percent.log ) * (100-$PERCENTILE) / 100 )) | tail -1