Мой провайдер выставляет счет за мою пропускную способность по методу 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