Как получить максимальные и максимальные значения из rrd файлов в одной команде rrd

У нас есть MRTG, настроенный для мониторинга сети. Для этого мы используем инструмент RRD для получения графика данных графика. Теперь я создал скрипт, который на самом деле извлекает данные из файлов RRD, поэтому из извлеченных данных мне нужно максимум и максимум за 24 часа. Теперь с этими максимальными значениями я вычисляю использование плохой пропускной способности для каждого клиента / ссылки.

Теперь мой вопрос: есть одна команда rrd для получения значений max in, max out, min in и min out из файлов RRD.

Так как я новичок в этом RRD, я был бы признателен, если бы команда также была представлена ​​в вашем решении.

Пожалуйста помоги.

0

Решение

В RRD-файлах, созданных MRTG, источники данных «in» и «out» называются «ds0» и «ds1» соответственно. Существует 8 RRA; они соответствуют гранулярности 5 минут, 30 минут, 2 часа и 1 дня с накоплениями AVG и MAX. По умолчанию они будут иметь длину 400 (более старые версии MRTG) или длину 800 (более новые версии MRTG), что означает, что у вас, скорее всего, будет временное окно 2 дня, 2 недели, 2 месяца и 2 года соответственно для этих RRAS. (Обратите внимание, что RRDTool 1.5 может опускать 1pdp MAX RRA, поскольку это функционально идентично 1pdp AVG RRA)

Для вас это означает следующее:

  • У вас нет RRA типа MIN. Если вы работаете в последние 2 дня, то это можно рассчитать по AVG RRA с самой высокой степенью детализации. В противном случае ваши данные будут все более неточными.
  • Ваш RRA с наименьшей гранулярностью содержит значения MAX на ежедневной основе. Однако эти дни разделены на полночь UCT, а не полночь по местному времени. Вы не указываете, для каких 24-часовых окон вам нужно рассчитывать.

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

Обратите внимание, что, поскольку все границы шагов рассчитываются с использованием UCT, если вы не проживаете в этом часовом поясе, вы не можете использовать FETCH или XPORT для получения необходимых данных, которые необходимо суммировать по общему временному окну.

Чтобы получить данные, вы можете использовать что-то вроде этого:

rrdtool graph /dev/null -e 00:00 -s "end-1day" --step 300
DEF:inrmax=target.rrd:ds0:AVERAGE:step=300:reduce=MAXIMUM
DEF:outrmax=target.rrd:ds1:AVERAGE:step=300:reduce=MAXIMUM
DEF:inrmin=target.rrd:ds0:AVERAGE:step=300:reduce=MINIMUM
DEF:outrmin=target.rrd:ds1:AVERAGE:step=300:reduce=MINIMUM
VDEF:inmax=inrmax,MAXIMUM
VDEF:inmin=inrmin,MINIMUM
VDEF:outmax=outrmax,MAXIMUM
VDEF:outmin=outrmin,MINIMUM
LINE:inrmax
PRINT:inmax:"In Max=%lf"PRINT:inmin:"In Min=%lf"PRINT:outmax:"Out Max=%lf"PRINT:outmin:"Out Min=%lf"

Несколько замечаний по этому поводу:

  • Мы используем «график», чтобы мы могли использовать общее временное окно, не зависящее от границы шага
  • Используйте rrdgraph, чтобы использовать общее временное окно; fetch и xport будут работать на границах шагов.
  • Мы суммируем RRA с наибольшей гранулярностью на лету
  • Мы используем / dev / null, так как на самом деле не хотим графическое изображение
  • Мы должны определить фиктивную линию на графике, иначе мы ничего не получим
  • Строки DEF определяют шаг с наибольшей гранулярностью и снижение CF. Вы можете пропустить эту часть, если вы используете шаг 5 минут
  • Мы вычисляем итоговые значения с помощью VDEF, а затем печатаем их на стандартный вывод с помощью PRINT.
  • Первая строка вывода будет размером графика; Вы можете отказаться от этого

Когда вы вызываете rrdtool :: graph из вашего php-скрипта, просто передайте ему параметры таким же образом, как при работе с командной строкой. Если вы не используете Linux, вам может понадобиться что-то отличное от / dev / null.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]