Я хотел бы отслеживать пиковое использование сети. Я уже использую 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 раз.