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

Запись пикового сетевого трафика в секунду каждые 5 минут

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

На данный момент использую iftop что легко увидеть пиковое использование. Но iftop может работать только в интерактивном режиме. Я использую screen, чтобы запустить его, и могу регулярно в него заглядывать.

Как я могу использовать iftop или аналогичный инструмент, чтобы просто записывать пиковое использование сети за последние 5 минут каждые 5 минут. Мне просто нужен файл с такими строками:

2014-06-17 15:43:12 TX: 14,3 MBit/s RX: 16,2 MBit/s Sum: 29,6 MBit/s
2014-06-17 15:48:12 TX: 11,3 MBit/s RX: 12,2 MBit/s Sum: 22,3 MBit/s

и так далее.

Я попытался ntop но это довольно много накладных расходов, и я не могу легко получить данные в munin. И пиков за 5 минут он не записывает.

Кто-нибудь знает инструмент или эффективный сценарий для этого?

Начиная с Munin 2.0 вы можете использовать функцию под названием суперсэмплинг для сбора данных с разрешением в 1 секунду. Интервал опроса Munin по-прежнему будет составлять 5 минут, соответствующий плагин Munin отвечает за активный сбор и хранение данных с высоким разрешением. Есть образец реализации - в multicpu1sec плагин который записывает mpstat данные.

Теперь графики, которые представляет Мунин, - это другая история. Мунин использует RRDtool для построения графиков, который, в свою очередь, может использовать различные функции консолидации (CF) для представления более одной точки данных в одном пикселе графика. На данный момент Munin может отображать только средние (AVG) данные и нет настраиваемой поддержки для других функций консолидации (минимальный, максимальный, общий, последний).

Вы можете подумать о внесении исправлений в Munin соответственно - это не выглядит слишком сложным. В качестве альтернативы вы можете просто вызвать rrdtool graph с настраиваемыми параметрами и другой функцией консолидации в соответствии с вашими потребностями. Просто загляни в свой munin-cgi-graph.log чтобы получить отправную точку для игры. Если вам это нужно только от случая к случаю, вы также можете просто увеличить интересующую область (для чего вам потребуется динамические графики включен в вашей конфигурации Munin) и посмотрите на минимальные / максимальные значения, напечатанные в области легенды графиков.

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

В этом случае вы, вероятно, можете получить нужные необработанные данные с помощью ifconfig и посмотреть байты rx и tx.

Это вы можете использовать в пользовательской сборке RRD вокруг DERIVE.

rrdtool create netmax.rrd -s 1 DS:tx_bytes:DERIVE:5:0:U DS:rx_bytes:DERIVE:5:0:U RRA:MAX:0.5:1:84600 RRA:AVERAGE:0.5:1:84600 RRA:MAX:0.5:60:12960 RRA:AVERAGE:0.5:60:12960

Возьмите значения из ifconfig простым скриптом и обновите его в rrdtool, используя:

rrdtool update netmax.rrd N:12312321:341241 

(например, байты tx, байты rx из вашего ifconfig).

Затем изобразите это:

rrdtool graph -e now -s end-6h netmax.png DEF:tx_max=netmax.rrd:tx_bytes:MAX DEF:rx_max=netmax.rrd:rx_bytes:MAX LINE1:tx_max#00FF00:tx_max LINE1:rx_max#0000FF:rx_max

Не так уж сложно создать сценарий для специального использования, и это именно то, что Мунин использует за кулисами.

Определите, пожалуйста, «пик».

поскольку bandwidth = dataVolume / time, термин не имеет смысла без ссылки на период, в течение которого наблюдался пик.

Если вы хотите ограничить минимальную ширину пика интервалом в 1 секунду, это нормально, но по определению вы должны делать выборку один раз в секунду. И даже если вы это сделаете, интенсивный всплеск трафика, который длится всего 1/10 секунды, будет в 10 раз меньше, чем если бы вы производили выборку с интервалом 0,1 секунды.

Если рассматривать это иначе, аналогией «ширины полосы пропускания» будет мощность лазера, где power = energy / time. Ручная лазерная указка мощностью 1 мВт дает 1 миллиджоуль (непрерывной) энергии в секунду и считается совершенно безопасной, но если вы сжали этот 1 мДж за одну наносекунду, у вас был бы импульсный лазер с одной мегаватт мощность.

подойдет ли sar для ваших нужд? Например

sar -n ALL 5 1

даст вам статистику на 5 секунд 1 раз.