rrdgraph_rpn - Интернет в облаке

Это команда rrdgraph_rpn, которую можно запустить в провайдере бесплатного хостинга OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

ПРОГРАММА:

ИМЯ


rrdgraph_rpn - О математике RPN в графе rrdtool

СИНТАКСИС


РПН выражение:=vname|оператор|ценностное [,РПН выражение]

ОПИСАНИЕ


Если вы когда-либо использовали традиционный калькулятор HP, вы уже знаете РПН (Обратная польская
Обозначение). Идея, лежащая в основе РПН в том, что у вас есть стек, и вы помещаете в него свои данные
куча. Всякий раз, когда вы выполняете операцию, она берет столько элементов из стека, сколько
нужный. Отправка выполняется неявно, поэтому всякий раз, когда вы указываете число или переменную, она
автоматически помещается в стек.

В конце расчета в стеке должно остаться одно и только одно значение.
Это результат функции, и это то, что помещается в vname. Для CDEF
инструкций, стек обрабатывается для каждой точки данных на графике. ВДЭФ инструкции
работать со всем набором данных за один прогон. Обратите внимание, что в настоящее время ВДЭФ только инструкции поддерживают
ограниченный список функций.

Пример: «VDEF: maximum = mydata, MAXIMUM»

Это установит переменную «максимум», которую вы теперь можете использовать в остальной части вашего сценария RRD.

Пример: "CDEF: mydatabits = mydata, 8, *"

Это означает: push-переменная мои данные, нажимаем цифру 8, выполняем оператор *, Оператор
нуждается в двух элементах и ​​использует их для возврата одного значения. Это значение затем сохраняется в
мои данные. Как вы уже догадались, эта инструкция означает не более чем мои данные
= мои данные * 8. Реальная сила РПН заключается в том, что всегда ясно, в каком
чтобы обработать ввод. Для таких выражений, как "a = b + 3 * 5", вам нужно умножить 3
сначала с 5 перед добавлением b , чтобы получить a. Однако с помощью скобок вы можете изменить это
порядок: «a = (b + 3) * 5». В РПН, вы бы сделали "a = b, 3, +, 5, *" без необходимости
круглые скобки.

ОПЕРАТОРЫ


Булевы операторы
ЛТ, ЛЕ, GT, GE, Эквалайзер, NE

Меньше, Меньше или равно, Больше, Больше или равно, Равно, Не равно все pop два
элементы из стека, сравните их для выбранного условия и верните 1 для истинного
или 0 - ложь. Сравнение неизвестный или бесконечный значение приведет к неизвестный
возвращен ... который также будет рассматриваться как ложный IF вызов.

ООН, ИСИНФ

Вытащите один элемент из стека, сравните его с неизвестный соответственно положительный or
отрицательный бесконечность. Возвращает 1 для истины или 0 для ложи.

IF

Извлекает из стека три элемента. Если элемент, отображаемый последним, равен 0 (ложь),
значение, выталкиваемое первым, помещается обратно в стек, в противном случае значение, выталкиваемое вторым, будет
толкнул назад. Это действительно означает, что любое значение, кроме 0, считается
правда.

Пример: «A, B, C, IF» следует читать как «if (A) then (B) else (C)».

Сравнение значений
МИН, MAX

Извлекает два элемента из стека и возвращает меньший или больший соответственно.
Обратите внимание, что бесконечный больше всего на свете. Если одно из входных чисел -
неизвестный то результат операции будет неизвестный тоже.

МИННАН, МАКСНАН

NAN-безопасная версия MIN и MAX. Если одно из входных чисел - неизвестный то
Результатом операции будет другой. Если оба неизвестный, то результат
операция неизвестный.

ОГРАНИЧЕНИЯ

Извлекает два элемента из стека и использует их для определения диапазона. Потом появляется
другой элемент, и если он попадает в диапазон, он отодвигается назад. Если нет, то
неизвестный толкается.

Определенный диапазон включает две границы (так: число, равное одному из
границы будут отодвинуты). Если любое из трех задействованных чисел либо
неизвестный or бесконечный эта функция всегда будет возвращать неизвестный

Пример: "CDEF: a = alpha, 0,100, LIMIT" вернет неизвестный если альфа меньше 0 или если
он выше 100.

Арифметика
+, -, *, /, %

Сложить, вычесть, умножить, разделить, по модулю

АДДНАН

НАН-безопасное дополнение. Если один параметр - NAN / UNKNOWN, он будет обработан как ноль. Если оба
параметры: NAN / UNKNOWN, NAN / UNKNOWN будут возвращены.

ГРЕХ, КОС, БРЕВНО, опыт, SQRT

Синус и косинус (вводятся в радианах), log и exp (натуральный логарифм), квадратный корень.

ATAN

Арктангенс (вывод в радианах).

ATAN2

Арктангенс компонентов y, x (вывод в радианах). Это выталкивает один элемент из
stack, компонент x (косинус), а затем второй компонент y (синус).
Затем он сдвигает арктангенс их отношения, разрешая неоднозначность между
квадранты.

Пример: «CDEF: угол = Y, X, ATAN2, RAD2DEG» преобразует компоненты «X, Y» в угол в
градусов.

ПОЛ, ПОТОЛОК

Округлить до ближайшего целого числа в меньшую или большую сторону.

ДЕГ2РАД, РАД2ДЕГ

Преобразуйте угол в градусах в радианы или радианы в градусы.

ABS

Возьмите абсолютное значение.

Установить операции
СОРТИРОВАТЬ, REV

Вытащить один элемент из стека. Это считать элементов для сортировки (или
обратный). Вершина считать оставшихся элементов затем сортируются (или меняются местами) в
положить в стопку.

Пример: «CDEF: x = v1, v2, v3, v4, v5, v6,6, SORT, POP, 5, REV, POP, +, +, +, 4, /» вычислит
среднее значение от v1 до v6 после удаления наименьшего и наибольшего.

AVG

Извлечь один элемент (считать) из стека. Теперь поп считать элементы и построить средний,
игнорирование всех НЕИЗВЕСТНЫХ значений в процессе.

Пример: «CDEF: x = a, b, c, d, 4, AVG».

MEDIAN

вытолкнуть один элемент (считать) из стека. Теперь поп считать элементов и найдите медианное значение,
игнорирование всех НЕИЗВЕСТНЫХ значений в процессе. Если есть четное количество НЕИЗВЕСТНЫХ
values, среднее из двух средних будет помещено в стек.

Пример: "CDEF: x = a, b, c, d, 4, MEDIAN"

ТРЕНД, ТРЕНДНАН

Создайте среднее «скользящее окно» для другого ряда данных.

Использование: CDEF: сглаженный = x, 1800, TREND

Это создаст среднее значение x для скользящего окна за полчаса (1800 секунд). Среднее
по существу вычисляется, как показано здесь:

+ ---! ---! ---! ---! ---! ---! ---! ---! --->
сейчас
задержка t0
<--------------->
задержка t1
<--------------->
задержка t2
<--------------->

Значение в выборке (t0) будет средним между (t0-delay) и (t0).
Значение в выборке (t1) будет средним между (t1-delay) и (t1).
Значение в выборке (t2) будет средним между (t2-delay) и (t2).

TRENDNAN, в отличие от TREND, является NAN-безопасным. Если вы используете TREND и одно исходное значение
Это NAN затрагивает все скользящее окно. Операция TRENDNAN ​​игнорирует все
NAN-значения в скользящем окне и вычисляет среднее значение оставшихся значений.

ПРЕДСКАЗЫВАТЬ, ПРЕДИКЦИГМА, ПРОГНОЗ

Создайте среднее значение / сигму / процентиль «скользящего окна» для другого ряда данных, которое также
также сдвигает ряд данных на заданное количество времени

Использование - явное указание сдвигов: "CDEF: прогноз = , ...,
1>, п, , x, ПРОГНОЗ "" CDEF: sigma = , ...,
1>, п, , x, PREDICTSIGMA "" CDEF: perc = , ...,
1>, п, , , x, ПРОГНОЗ "

Использование - смены, определяемые как базовая смена, и количество раз, когда она применяется
"CDEF: предсказать = , -n, , x, ПРОГНОЗ "" CDEF: sigma =
множитель>, - n, , x, PREDICTSIGMA "" CDEF: sigma =
множитель>, - n, , , x, ПРОГНОЗ "

Пример: CDEF: прогноз = 172800,86400,2,1800, x, ПРОГНОЗ.

Это создаст получасовое (1800 секунд) скользящее среднее значение / сигму x, которое
Среднее значение по существу вычисляется, как показано здесь:

+ ---! ---! ---! ---! ---! ---! ---! ---! ---! ---! ---! ---! - -! ---! ---! ---! ---! --->
сейчас
сдвиг 1 t0
<----------------------->
окно
<--------------->
смена 2
<----------------------------------------------->
окно
<--------------->
сдвиг 1 t1
<----------------------->
окно
<--------------->
смена 2
<----------------------------------------------->
окно
<--------------->

Значение в выборке (t0) будет средним между (t0-shift1-window) и (t0-shift1)
и между (t0-shift2-window) и (t0-shift2)
Значение в выборке (t1) будет средним между (t1-shift1-window) и (t1-shift1)
и между (t1-shift2-window) и (t1-shift2)

Функция является NAN-безопасной. Это также позволяет экстраполировать на
будущее (скажем, несколько дней) - вам может потребоваться определить ряд данных с необязательным
start = параметр, чтобы в исходной серии данных было достаточно данных для обеспечения прогноза
также в начале графика ...

Процентиль может находиться в диапазоне [-100: +100]. Положительные процентили интерполируют
между значениями, в то время как отрицательное значение будет наиболее близким.

Пример: вы работаете в 7 смен с окном 1800 секунд. Предполагая, что в rrd-файле есть
размер шага 300 секунд, это означает, что мы должны выполнить расчет процентилей на основе
максимум 42 различных значения (меньше, если у вас есть NAN). это означает, что в лучшем случае
вы получите шаг шага между значениями 2.4 процента. так что если вы попросите 99-й
процентиль, то вам нужно будет посмотреть на 41.59-е значение. Поскольку у нас есть только
целые числа, 41-е или 42-е значение.

С положительным процентилем выполняется линейная интерполяция между двумя значениями, чтобы
получить эффективное значение.

Отрицательное значение возвращает ближайшее значение по расстоянию, поэтому в приведенном выше случае 42nd
значение, которое фактически возвращает Percentile100 или максимум предыдущих 7
дни в окне.

Вот пример, который создаст 10-дневный график, который также показывает прогноз на 3 дня.
в будущее с его значением неопределенности (как определено средним + -4 * сигма) Это также
показывает, если прогноз превышен в определенный момент.

график rrdtool image.png --imgformat=PNG
--start=-7days --end=+3days --width=1000 --height=200 --alt-autoscale-max
DEF:value=value.rrd:value:AVERAGE:start=-14дней
LINE1:значение#ff0000:значение
CDEF:predict=86400,-7,1800,значение,ПРЕДИКТ
CDEF:sigma=86400,-7,1800,значение,ПРЕДИКЦИГМА
CDEF:upper=прогнозировать,сигма,3,*,+
CDEF:lower=predict,sigma,3,*,-
LINE1:predict#00ff00:прогноз
LINE1:upper#0000ff:верхний\ определенность\ предел
LINE1:lower#0000ff:нижний\ определенность\ предел
CDEF:exceeds=значение,UN,0,значение,нижний,верхний,LIMIT,UN,IF
ОТМЕТЬТЕ:превышает#aa000080:1
CDEF:perc95=86400,-7,1800,95,значение,PREDICTPERC
СТРОКА1: perc95 # ffff00: 95-й_процентиль

Примечание. Опыт показал, что коэффициент от 3 до 5 для масштабирования сигмы является хорошим
дискриминатор для обнаружения аномального поведения. Очевидно, это зависит также от типа
data и насколько "зашумлены" ряды данных.

Также обратите внимание на явное использование start = в CDEF - это необходимо для загрузки всех
необходимые данные (даже если они не отображаются)

Этот прогноз можно использовать только для краткосрочных экстраполяций - скажем, на несколько дней вперед.
будущее.

Особые ценности
Неизв

Помещает неизвестное значение в стек

ИНФ, НЕГИНФ

Помещает в стек положительное или отрицательное бесконечное значение. Когда такое значение
на графике, он отображается вверху или внизу графика, независимо от того, какое фактическое значение
по оси ординат.

НАЗАД

Толкает неизвестный значение, если это первое значение набора данных или иначе
результат этого CDEF на предыдущем временном шаге. Это позволяет делать расчеты
по данным. Эту функцию нельзя использовать в ВДЭФ инструкциями.

PREV (vname)

Толкает неизвестный значение, если это первое значение набора данных или иначе
результат переменной vname на предыдущем временном шаге. Это позволяет вам делать
вычисления по данным. Эту функцию нельзя использовать в ВДЭФ инструкциями.

СЧИТАТЬ

Нажимает цифру 1, если это первое значение набора данных, цифру 2, если это
второй и так далее. Это специальное значение позволяет производить расчеты на основе
положение значения в наборе данных. Эту функцию нельзя использовать в ВДЭФ
инструкциями.

Время
Время внутри RRDtool измеряется в секундах с начала эпохи. Эпоха определяется как
"Thu Jan  1 00:00:00 UTC 1970".

СЕЙЧАС

Помещает текущее время в стек.

ШАГ

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

CDEF: abs = скорость, STEPWIDTH, *, PREF, ADDNAN

НОВЫЙ ДЕНЬ,НОВАЯ НЕДЕЛЯ,НОВЫЙ МЕСЯЦ,НОВЫЙ ГОД

Эти три оператора вернут 1.0 всякий раз, когда шаг является первым из заданных.
период. Периоды определяются в соответствии с местным часовым поясом И "LC_TIME".
настройки.

CDEF: mtotal = скорость, STEPWIDTH, *, NEWMONTH, PREV, 0, IF, ADDNAN

ВРЕМЯ

Помещает время, в которое в настоящее время обрабатывается значение, было взято в стек.

Lвремя

Требуется время, указанное в ВРЕМЯ, применяет смещение часового пояса, действительное в то время
включая летнее время, если ваша ОС поддерживает его, и передает результат на
куча. В разделе примеров ниже есть подробный пример того, как использовать
.

Обработка стека напрямую
ДУП, Поп, КРОМЕ

Дублируйте верхний элемент, удалите верхний элемент, поменяйте местами два верхних элемента.

ГЛУБИНА

помещает текущую глубину стека в стек

a, b, ГЛУБИНА -> a, b, 2

n,КОПИЯ

поместите копию верхних n элементов в стек

a, b, c, d, 2, КОПИЯ => a, b, c, d, c, d

n,ИНДЕКС

поместите n-й элемент в стек.

a, b, c, d, 3, ИНДЕКС -> a, b, c, d, b

п, м,ROLL

повернуть верхние n элементов стека на m

a, b, c, d, 3,1, ROLL => a, d, b, c
a, b, c, d, 3, -1, ROLL => a, c, d, b

ПЕРЕМЕННЫЕ


Эти операторы работают только на ВДЭФ заявления. Обратите внимание, что в настоящее время они работают ТОЛЬКО для
ВДЭФ.

МАКСИМАЛЬНАЯ, МИНИМАЛЬНАЯ, СРЕДНЯЯ
Вернуть соответствующее значение, МАКСИМУМ и МИНИМУМ также вернут первое вхождение
этого значения в компоненте времени.

Пример: "VDEF: avg = mydata, AVERAGE"

STDEV
Возвращает стандартное отклонение значений.

Пример: «VDEF: stdev = mydata, STDEV»

В ПРОШЛОМ ПЕРВЫЙ
Вернуть последнее / первое значение, отличное от nan или бесконечное, для выбранного потока данных,
включая его временную метку.

Пример: «VDEF: first = mydata, FIRST»

ИТОГО
Возвращает скорость из каждого определенного временного интервала, умноженную на размер шага. Это может,
например, верните общее количество переданных байтов, если вы зарегистрировали количество байтов в секунду.
Компонент времени возвращает количество секунд.

Пример: «VDEF: total = mydata, TOTAL».

ПРОЦЕНТ, ПРОЦЕНТ
Это должно следовать DEF or CDEF vname, vname всплывает, появляется другой номер
что представляет собой определенный процент (0..100). Затем набор данных сортируется и значение
возвращенный выбирается так, что процент процент значений меньше или равен
результат. Для PERCENTNAN Неизвестный значения игнорируются, но для PERCENT Неизвестный ценности
для этой цели считаются ниже любого конечного числа, поэтому, если этот оператор
возвращает неизвестный у вас их довольно много в ваших данных. Infконечные числа
меньше или больше, чем конечные числа, и всегда больше, чем Неизвестный номера.
(NaN <-INF <конечные значения <INF)

Пример: «VDEF: perc95 = mydata, 95, PERCENT».
"VDEF: percnan95 = mydata, 95, PERCENTNAN"

LSLLOPE, LSLINT, LSLCORREL
Вернуть параметры для Lвосток SQuares LINE (y = mx + б) которые приблизительно соответствуют
предоставленный набор данных. LSLSLOPE - наклон (М) строки, относящейся к позиции COUNT
данных. LSLINT - точка пересечения по оси Y (B), которые также являются первыми данными
точка на графике. LSLCORREL - это коэффициент корреляции (также известный как коэффициент Пирсона).
Коэффициент корреляции моментов продукта). Он будет варьироваться от 0 до +/- 1 и представляет
качество соответствия аппроксимации.

Пример: «VDEF: slope = mydata, LSLSLOPE».

Используйте rrdgraph_rpn онлайн с помощью сервисов onworks.net



Новейшие онлайн-программы для Linux и Windows