Este é o comando rrdgraph_rpn que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online Windows ou emulador online MAC OS
PROGRAMA:
NOME
rrdgraph_rpn - Sobre RPN Math no gráfico rrdtool
SINOPSE
RPN expressão:=vnome|operador|valor[,RPN expressão]
DESCRIÇÃO
Se você já usou uma calculadora HP tradicional, você já conhece RPN (Polonês reverso
Notação). A ideia por trás RPN é que você tem uma pilha e empurra seus dados para este
pilha. Sempre que você executa uma operação, ela tira tantos elementos da pilha quanto
precisava. O push é feito implicitamente, então sempre que você especifica um número ou variável,
é colocado na pilha automaticamente.
No final do cálculo, deve haver um e apenas um valor restante na pilha.
Este é o resultado da função e é isso que é colocado no vnome. Para CDEF
instruções, a pilha é processada para cada ponto de dados no gráfico. VDEF instruções
trabalhar em um conjunto de dados inteiro em uma corrida. Observe que atualmente VDEF suporte apenas instruções
uma lista limitada de funções.
Exemplo: "VDEF: máximo = meusdados, MÁXIMO"
Isso definirá a variável "máxima", que agora você pode usar no resto do seu script RRD.
Exemplo: "CDEF: mydatabits = mydata, 8, *"
Isso significa: variável push meus dados, empurre o número 8, execute o operador *. O operador
precisa de dois elementos e os usa para retornar um valor. Este valor é então armazenado em
meus bits de dados. Como você deve ter adivinhado, esta instrução significa nada mais do que meus bits de dados
= meus dados * 8. O verdadeiro poder de RPN reside no fato de que é sempre claro em que
para processar a entrada. Para expressões como "a = b + 3 * 5", você precisa multiplicar 3
com 5 antes de adicionar b para obter a. No entanto, com parênteses você pode mudar isso
pedido: "a = (b + 3) * 5". No RPN, você faria "a = b, 3, +, 5, *" sem a necessidade de
parênteses.
OPERADORES
Operadores booleanos
Tenente Tenente, A, GT, GE, equalizador, NE
Menor que, Menor ou igual, Maior que, Maior ou igual, Igual, Diferente de todos pop dois
elementos da pilha, compare-os para a condição selecionada e retorne 1 para verdadeiro
ou 0 para falso. Comparando um desconhecido ou um infinito valor resultará em desconhecido
retornou ... que também será tratado como falso pelo IF ligar.
UN, ISINF
Retire um elemento da pilha, compare-o com desconhecido respectivamente para positivo or
negativo infinito. Retorna 1 para verdadeiro ou 0 para falso.
IF
Retira três elementos da pilha. Se o último elemento exibido for 0 (falso), o
valor exibido primeiro é empurrado de volta para a pilha, caso contrário, o valor exibido em segundo é
empurrada para trás. Isso, de fato, significa que qualquer valor diferente de 0 é considerado
verdadeiro.
Exemplo: "A, B, C, IF" deve ser lido como "if (A) then (B) else (C)"
Comparando valores
MÍNIMO, MAX
Retira dois elementos da pilha e retorna o menor ou maior, respectivamente.
Observe que infinito é maior do que qualquer outra coisa. Se um dos números de entrada for
desconhecido então o resultado da operação será desconhecido demasiado.
MINAN, MAXNAN
Versão segura para NAN de MIN e MAX. Se um dos números de entrada for desconhecido então o
resultado da operação será o outro. Se ambos forem desconhecido, então o resultado de
a operação é desconhecido.
LIMITE
Retira dois elementos da pilha e os usa para definir um intervalo. Então aparece
outro elemento e se cair dentro do intervalo, ele é empurrado para trás. Se não, um
desconhecido é empurrado.
O intervalo definido inclui os dois limites (então: um número igual a um dos
limites serão empurrados para trás). Se algum dos três números envolvidos for
desconhecido or infinito esta função sempre retornará um desconhecido
Exemplo: "CDEF: a = alpha, 0,100, LIMIT" retornará desconhecido se alfa é menor que 0 ou se
é superior a 100.
Aritmética
+, -, *, /, %
Adicionar, subtrair, multiplicar, dividir, módulo
ADNAN
Adição segura para NAN. Se um parâmetro for NAN / UNKNOWN, será tratado como zero. Se ambos
os parâmetros são NAN / UNKNOWN, NAN / UNKNOWN será retornado.
PECADO, COS, REGISTRO, EXP, SQRT
Seno e cosseno (entrada em radianos), log e exp (logaritmo natural), raiz quadrada.
NUMA
Arctangent (saída em radianos).
ATAN2
Arco tangente de componentes y, x (saída em radianos). Isso tira um elemento do
pilha, o componente x (cosseno) e, em seguida, um segundo componente, que é o componente y (seno).
Em seguida, empurra o arco tangente de sua proporção, resolvendo a ambigüidade entre
quadrantes.
Exemplo: "CDEF: ângulo = Y, X, ATAN2, RAD2DEG" converterá os componentes "X, Y" em um ângulo em
graus.
PISO, TETO
Arredonde para baixo ou para cima até o número inteiro mais próximo.
DEG2RAD, RAD2DEG
Converta o ângulo em graus em radianos ou radianos em graus.
ABS
Pegue o valor absoluto.
Definir operações
ORDENAR, REV
Retire um elemento da pilha. Isto é o contar de itens a serem classificados (ou
invertido). O topo contar dos elementos restantes são então classificados (ou revertidos) em
coloque na pilha.
Exemplo: "CDEF: x = v1, v2, v3, v4, v5, v6,6, SORT, POP, 5, REV, POP, +, +, +, 4, /" irá calcular o
média dos valores v1 a v6 após remover o menor e o maior.
AVG
Pop um elemento (contar) da pilha. Agora pop contar elementos e construir a média,
ignorando todos os valores DESCONHECIDOS no processo.
Exemplo: "CDEF: x = a, b, c, d, 4, AVG"
MEDIAN
pop um elemento (contar) da pilha. Agora pop contar elementos e encontre a mediana,
ignorando todos os valores DESCONHECIDOS no processo. Se houver um número par de não-DESCONHECIDOS
valores, a média dos dois intermediários será colocada na pilha.
Exemplo: "CDEF: x = a, b, c, d, 4, MEDIAN"
TENDÊNCIA, TENDÊNCIA
Crie uma média de "janela deslizante" de outra série de dados.
Uso: CDEF: suavizado = x, 1800, TREND
Isso criará uma média de janela deslizante de meia hora (1800 segundos) de x. A média
é essencialmente calculado conforme mostrado aqui:
+ ---! ---! ---! ---! ---! ---! ---! ---! --->
agora
atraso t0
<--------------->
atraso t1
<--------------->
atraso t2
<--------------->
O valor na amostra (t0) será a média entre (t0-retardo) e (t0)
O valor na amostra (t1) será a média entre (t1-retardo) e (t1)
O valor na amostra (t2) será a média entre (t2-retardo) e (t2)
TRENDNAN é - em contraste com TREND - NAN-safe. Se você usar TREND e um valor de origem
se for NAN, a janela deslizante completa é afetada. A operação TRENDNAN ignora todos
Valores NAN em uma janela deslizante e calcula a média dos valores restantes.
PREVER, PREVISIGMA, PERC PREVISÃO
Crie uma "janela deslizante" média / sigma / percentil de outra série de dados, que também
também muda a série de dados em determinados períodos de tempo
Uso - mudanças de declaração explícitas: "CDEF: predizer = , ...,
1>, n, , x, PREVER "" CDEF: sigma = , ...,
1>, n, , x, PREDICTSIGMA "" CDEF: perc = , ...,
1>, n, , , x, PREDICTPERC "
Uso - mudanças definidas como uma mudança de base e um número de vezes que isso é aplicado
"CDEF: prever = , -n, , x, PREVER "" CDEF: sigma =
multiplicador>, - n, , x, PREDICTSIGMA "" CDEF: sigma =
multiplicador>, - n, , , x, PREDICTPERC "
Exemplo: CDEF: Predict = 172800,86400,2,1800, x, PREDICT
Isso criará uma janela deslizante média / sigma de meia hora (1800 segundos) de x, que
a média é essencialmente calculada conforme mostrado aqui:
+ ---! ---! ---! ---! ---! ---! ---! ---! ---! ---! ---! ---! - -! ---! ---! ---! ---! --->
agora
deslocamento 1 t0
<----------------------->
janela
<--------------->
turno 2
<----------------------------------------------->
janela
<--------------->
deslocamento 1 t1
<----------------------->
janela
<--------------->
turno 2
<----------------------------------------------->
janela
<--------------->
O valor na amostra (t0) será a média entre (t0-shift1-window) e (t0-shift1)
e entre (t0-shift2-window) e (t0-shift2)
O valor na amostra (t1) será a média entre (t1-shift1-window) e (t1-shift1)
e entre (t1-shift2-window) e (t1-shift2)
A função é, por design, segura para NAN. Isso também permite a extrapolação para o
futuro (digamos alguns dias) - pode ser necessário definir a série de dados com o opcional
start = parameter, de modo que a série de dados de origem tenha dados suficientes para fornecer previsão
também no início de um gráfico ...
O percentil pode estar entre [-100: +100]. Os percentis positivos interpola
entre os valores, enquanto o negativo será o mais próximo.
Exemplo: você executa 7 turnos com uma janela de 1800 segundos. Supondo que o arquivo rrd tenha
um tamanho de etapa de 300 segundos, isso significa que temos que fazer o cálculo do percentil com base
em um máximo de 42 valores distintos (menos se você tiver NAN). isso significa que no melhor caso
você obtém uma taxa de escalonamento entre valores de 2.4 por cento. então, se você pedir o 99º
percentil, então você precisaria observar o valor 41.59. Como só temos
inteiros, o 41º ou o 42º valor.
Com o percentil positivo, uma interpolação linear entre os 2 valores é feita para
obter o valor efetivo.
O negativo retorna o valor mais próximo da distância sábia - então, no caso acima, 42º
valor, que está efetivamente retornando o Percentile100 ou o máximo dos 7 anteriores
dias na janela.
Aqui está um exemplo, que irá criar um gráfico de 10 dias que também mostra a previsão de 3 dias
no futuro com seu valor de incerteza (conforme definido por avg + -4 * sigma) Isso também
mostra se a previsão é excedida em um determinado ponto.
gráfico rrdtool image.png --imgformat=PNG
--start=-7dias --end=+3dias --width=1000 --height=200 --alt-autoscale-max
DEF:valor=valor.rrd:valor:MÉDIA:início=-14 dias
LINHA1:valor#ff0000:valor
CDEF:prever=86400,-7,1800,valor,PREVER
CDEF:sigma=86400,-7,1800,valor,PREDICTSIGMA
CDEF:superior=prever,sigma,3,*,+
CDEF:inferior=prever,sigma,3,*,-
LINE1:previsão#00ff00:previsão
LINE1:superior#0000ff:superior\certeza\limite
LINHA1:inferior#0000ff:inferior\certeza\limite
CDEF:excede=valor,UN,0,valor,inferior,superior,LIMIT,UN,IF
TICK:excede#aa000080:1
CDEF:perc95=86400,-7,1800,95,valor,PREDICTPERC
LINE1: perc95 # ffff00: 95th_percentile
Nota: A experiência tem mostrado que um fator entre 3 e 5 para dimensionar sigma é um bom
discriminador para detectar comportamento anormal. Isso obviamente depende também do tipo de
dados e como a série de dados é "barulhenta".
Observe também o uso explícito de start = no CDEF - isso é necessário para carregar todos os
dados necessários (mesmo que não sejam exibidos)
Esta previsão só pode ser usada para extrapolações de curto prazo - digamos alguns dias após
o futuro.
Valores especiais
DESCONHECIDO
Coloca um valor desconhecido na pilha
INF, NEGINF
Coloca um valor infinito positivo ou negativo na pilha. Quando tal valor é
representado graficamente, ele aparece na parte superior ou inferior do gráfico, independentemente do valor real
no eixo y é.
ANTERIOR
Empurra um desconhecido valor se este for o primeiro valor de um conjunto de dados ou caso contrário, o
resultado disso CDEF na etapa de tempo anterior. Isso permite que você faça cálculos
em todos os dados. Esta função não pode ser usada em VDEF instruções.
PREV (vnome)
Empurra um desconhecido valor se este for o primeiro valor de um conjunto de dados ou caso contrário, o
resultado da variável vname na etapa de tempo anterior. Isso permite que você faça
cálculos entre os dados. Esta função não pode ser usada em VDEF instruções.
CONTAGEM
Empurra o número 1 se este for o primeiro valor do conjunto de dados, o número 2 se for
o segundo e assim por diante. Este valor especial permite que você faça cálculos com base no
posição do valor dentro do conjunto de dados. Esta função não pode ser usada em VDEF
instruções.
Tempo
O tempo dentro do RRDtool é medido em segundos desde a época. A época está definida para ser
"Thu Jan 1 00:00:00 UTC 1970".
Estamos
Coloca a hora atual na pilha.
LARGURA DO PASSO
O com da etapa atual em segundos. Você pode usar isso para voltar da base de taxas
apresentações para números absolutos
CDEF: abs = taxa, STEPWIDTH, *, PREF, ADDNAN
NOVO DIA,NOVA SEMANA,NOVO MÊS,ANO NOVO
Esses três operadores retornarão 1.0 sempre que uma etapa for a primeira das
periodo. Os períodos são determinados de acordo com o fuso horário local E o "LC_TIME"
configurações.
CDEF: mtotal = taxa, STEPWIDTH, *, NEWMONTH, PREV, 0, IF, ADDNAN
HORÁRIO
Empilha a hora em que o valor atualmente processado foi levado para a pilha.
LTIME
Leva o tempo definido por HORÁRIO, aplica a diferença de fuso horário válida naquele momento
incluindo o horário de verão, se o seu sistema operacional suportar, e empurra o resultado no
pilha. Há um exemplo elaborado na seção de exemplos abaixo sobre como usar
esta.
Processando a pilha diretamente
DUP, Pop, EXC
Duplique o elemento superior, remova o elemento superior e troque os dois elementos superiores.
PROFUNDIDADE
empurra a profundidade atual da pilha para a pilha
a, b, PROFUNDIDADE -> a, b, 2
n,CÓPIA
empurre uma cópia dos primeiros n elementos para a pilha
a, b, c, d, 2, COPY => a, b, c, d, c, d
n,ÍNDICE
empurre o enésimo elemento para a pilha.
a, b, c, d, 3, INDEX -> a, b, c, d, b
n, m,ROLO
girar os primeiros n elementos da pilha por m
a, b, c, d, 3,1, ROLL => a, d, b, c
a, b, c, d, 3, -1, ROLL => a, c, d, b
VARIÁVEIS
Esses operadores trabalham apenas em VDEF afirmações. Observe que atualmente SOMENTE estes funcionam para
VDEF.
MÁXIMO, MÍNIMO, MÉDIO
Retorna o valor correspondente, MAXIMUM e MINIMUM também retornam a primeira ocorrência
desse valor no componente de tempo.
Exemplo: "VDEF: avg = mydata, AVERAGE"
DESVPAD
Retorna o desvio padrão dos valores.
Exemplo: "VDEF: stdev = mydata, STDEV"
OS ÚLTIMOS, PRIMEIRO
Retorne o último / primeiro valor não nan ou infinito para o fluxo de dados selecionado,
incluindo seu carimbo de data / hora.
Exemplo: "VDEF: first = mydata, FIRST"
TOTAL
Retorna a taxa de cada intervalo de tempo definido multiplicado pelo tamanho do passo. Isso pode,
por exemplo, retorna o total de bytes transferidos quando você registrou bytes por segundo.
O componente de tempo retorna o número de segundos.
Exemplo: "VDEF: total = mydata, TOTAL"
PORCENTO, PORCENTO
Isso deve seguir um DEF or CDEF vnome. O vnome é estourado, outro número é estourado
que é uma certa porcentagem (0..100). O conjunto de dados é então classificado e o valor
retornado é escolhido de forma que percentagem porcentagem dos valores é menor ou igual a
o resultado. Para PERCENTNAN Desconhecido os valores são ignorados, mas por PERCENT Desconhecido valores
são considerados menores do que qualquer número finito para este fim, portanto, se este operador
retorna um desconhecido você tem muitos deles em seus dados. Infnúmeros inite são
menor, ou mais, do que os números finitos e são sempre mais do que o Desconhecido números.
(NaN <-INF <valores finitos <INF)
Exemplo: "VDEF: perc95 = mydata, 95, PERCENT"
"VDEF: percnan95 = mydata, 95, PERCENTNAN"
LSLSLOPE, LSLINT, LSCORREL
Retorne os parâmetros para um Lleste Squadras LINE (y = mx + b) que se aproximam do
conjunto de dados fornecido. LSLSLOPE é a inclinação (M) da linha relacionada à posição COUNT
dos dados. LSLINT é a interceptação y (B), que também é o primeiro dado
ponto no gráfico. LSLCORREL é o coeficiente de correlação (também conhecido como Pearson's
Coeficiente de correlação do momento do produto). Irá variar de 0 a +/- 1 e representa
a qualidade do ajuste para a aproximação.
Exemplo: "VDEF: slope = mydata, LSLSLOPE"
Use rrdgraph_rpn online usando serviços onworks.net