As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Gravar consultas de expressão de expressão de expressão
Este tópico de documentação foi desenvolvido para espaços de trabalho do Grafana que oferecem suporte à versão 9.x do Grafana.
Para espaços de trabalho do Grafana compatíveis com a versão 8.x do Grafana, consulteTrabalhando na versão 8 do Grafana.
As expressões do lado do servidor permitem que você manipule dados retornados de consultas com operações matemáticas e outras. As expressões criam novos dados e não manipulam os dados retornados pelas fontes de dados.
Disponíveis sobre expressões
As expressões do lado do servidor permitem que você manipule dados retornados de consultas com operações matemáticas e outras. As expressões criam novos dados e não manipulam os dados retornados pelas fontes de dados, além de algumas pequenas reestruturações de dados para tornar a entrada de dados aceitável para expressões.
Usando expressões
As expressões são usadas principalmente pelo Grafana Alerting. O processamento é feito no lado do servidor, portanto, as expressões podem operar sem uma sessão do navegador. No entanto, as expressões também podem ser usadas com fontes de dados de back-end e visualização.
nota
As expressões não funcionam com alertas antigos do painel.
As expressões têm como objetivo aumentar as fontes de dados, permitindo que consultas de diferentes fontes de dados sejam combinadas ou fornecendo operações indisponíveis em uma fonte de dados.
nota
Quando possível, você deve fazer o processamento de dados dentro da fonte de dados. Copiar dados do armazenamento para o servidor Grafana para processamento é ineficiente, portanto, as expressões são direcionadas ao processamento leve de dados.
As expressões funcionam com consultas de fontes de dados que retornam dados de séries temporais ou números. Eles também operam com dados multidimensionais. Por exemplo, uma consulta que retorna várias séries, em que cada série é identificada por rótulos ou tags.
Uma expressão individual usa uma ou mais consultas ou outras expressões como entrada e adiciona dados ao resultado. Cada expressão ou consulta individual é representada por uma variável que é um identificador nomeado conhecido como RefID (por exemplo, a letra padrãoA
ouB
).
Para referenciar a saída de uma expressão individual ou uma consulta de fonte de dados em outra expressão, esse identificador é usado como uma variável.
Tipos de expressões
As expressões funcionam com dois tipos de dados.
-
Uma coleção de séries temporais.
-
Uma coleção de números, em que cada número é um item.
Cada coleção é retornada de uma única consulta ou expressão de fonte de dados e representada pelo RefID. Cada coleção é um conjunto, em que cada item do conjunto é identificado exclusivamente por suas dimensões, que são armazenadas como etiquetas ou pares de valores-chave.
Consultas de fontes de dados
As expressões do lado do servidor suportam somente consultas de fontes de dados para fontes de dados de back-end. Geralmente, presume-se que os dados sejam rotulados como dados de séries temporais. No future, pretendíamos adicionar uma afirmação dos dados do tipo de retorno da consulta (número ou série temporal) para que as expressões possam lidar melhor com os erros.
As consultas à fonte de dados, quando usadas com expressões, são executadas pelo mecanismo de expressão. Ao fazer isso, ele reestrutura os dados para serem uma série temporal ou um número por quadro de dados. Então, por exemplo, se estiver usando uma fonte de dados que retorna várias séries em um quadro na exibição de tabela, você pode notar que ela parece diferente quando executada com expressões.
Atualmente, o único formato que não é de série temporal (número) é suportado ao usar quadros de dados se você tiver uma resposta de tabela que retorna um quadro de dados sem hora, colunas de string e uma coluna numérica:
Loc | Host | AVG_CPU |
---|---|---|
MIA |
A |
1 |
NYC |
B |
2 |
O exemplo acima produzirá um número que funciona com expressões. As colunas da cadeia de caracteres se tornam rótulos e a coluna numérica, o valor correspondente. Por exemplo,{"Loc": "MIA", "Host": "A"}
com um valor de 1.
Operações
Você pode usar as seguintes operações em expressões: matemática, redução e reamostragem.
Math (Matemática)
Matemática é para fórmulas matemáticas de formato livre em séries temporais ou dados numéricos. As operações matemáticas usam números e séries temporais como entrada e os alteram para números e séries temporais diferentes.
Os dados de outras consultas ou expressões são referenciados com o RefID prefixado com um cifrão, por exemplo$A
. Se a variável tiver espaços no nome, você poderá usar uma sintaxe de chaves como${my variable}
.
As constantes numéricas podem estar em decimal (2.24
), octal (com um zero à esquerda072
) ou hexadecimal (com um 0x à esquerda0x2A
). Exponenciais e sinais também são suportados (por exemplo,-0.8e-2
).
Operadores
Os operadores aritméticos (+
binários e unários-
,*
,/
,%
, expoente**
), relacionais (<
>
,==
,!=
,>=
,,<=
) e lógicos (&&
,||
, e unários!
) são suportados.
A forma como a operação se comporta com os dados depende de se tratar de um número ou de dados de série temporal.
Com operações binárias, como$A + $B
ou$A || $B
, o operador é aplicado das seguintes maneiras, dependendo do tipo de dados:
-
Se ambos
$A
e$B
forem um número, a operação será executada entre os dois números. -
Se uma variável for um número e a outra variável for uma série temporal, a operação entre o valor de cada ponto na série temporal e o número será executada.
-
Se ambos
$A
forem dados de séries temporais, a operação entre cada valor nas duas séries será executada para cada carimbo de data/hora existente em ambos$A
$B
e.$B
AResample
operação pode ser usada para alinhar os registros de data e hora.
Resumo:
-
Número número OP = número
-
Número da série OP = série
-
Série OP = série
Como as expressões funcionam com várias séries ou números representados por uma única variável, as operações binárias também realizam uma união (união) entre as duas variáveis. Isso é feito com base nas etiquetas de identificação associadas a cada série ou número individual.
Portanto, se você tiver números com rótulos como{host=web01}
in$A
e outro número$B
com os mesmos rótulos, a operação será executada entre esses dois itens em cada variável e o resultado compartilhará os mesmos rótulos. As regras para o comportamento dessa união são as seguintes:
-
Um item sem rótulos se juntará a qualquer coisa.
-
Se ambos
$A
$B
contiverem apenas um item (uma série ou um número), eles se juntarão. -
Se os rótulos forem matemáticos exatos, eles se juntarão.
-
Se os rótulos forem um subconjunto do outro, por exemplo, um item dentro
$A
for rotulado{host=A,dc=MIA}
e um item dentro$B
for rotulado,{host=A}
eles se unirão. -
Se dentro de uma variável, como,
$A
houver chaves de tag diferentes para cada item, o comportamento de junção é indefinido.
Os operadores relacionais e lógicos retornam 0 para falso 1 para verdadeiro.
Funções matemáticas
Embora a maioria das funções exista nas próprias operações de expressão, a operação matemática tem algumas funções semelhantes aos operadores ou símbolos matemáticos. Quando as funções podem receber números ou séries, o mesmo tipo do argumento será retornado. Quando se trata de uma série, a operação é executada para o valor de cada ponto na série.
abdominais
abs retorna o valor absoluto de seu argumento, que pode ser um número ou uma série. Por exemplo, abs(-1)
ou abs($A)
.
is_inf
is_inf pega um número ou uma série e retorna1
paraInf
valores (negativos ou positivos) e0
para outros valores. Por exemplo, is_inf($A)
.
nota
Se você precisar verificar especificamente o infinito negativo, por exemplo, você pode fazer uma comparação como$A == infn()
.
is_nan
is_nan pega um número ou uma série e retorna1
NaN
valores e0
outros valores. Por exemplo, is_nan($A)
. Essa função existe porque nãoNaN
é igualNaN
a.
é_nulo
is_null pega um número ou uma série e retorna1
null
valores e0
outros valores. Por exemplo, is_null($A)
.
is_número
is_number pega um número ou uma série e retorna1
para todos os valores de números reais e0
para outros valores (que sãonull
Inf+
,Inf-
, eNaN
). Por exemplo, is_number($A)
.
log
Log retorna o logaritmo natural de seu argumento, que pode ser um número ou uma série. Se o valor for menor que 0,NaN
será retornado. Por exemplo, log(-1)
ou log($A)
.
inf, infn, nan e null
Todas as funções inf, infn, nan e null retornam um único valor do nome. Eles existem principalmente para testes. Exemplo: null()
.
round
Round retorna um valor inteiro arredondado. Por exemplo, o round(3.123)
ou o round($A)
.
ceil
Ceil arredonda o número até o valor inteiro mais próximo. Por exemplo, ceil(3.123)
retorna 4
.
floor
Floor arredonda o número para baixo até o valor inteiro mais próximo. Por exemplo,floor(3.123
) retorna3
.
Reduzir
Reduzir pega uma ou mais séries temporais retornadas de uma consulta ou expressão e transforma cada série em um único número. Os rótulos das séries temporais são mantidos como rótulos em cada número reduzido produzido.
Campos:
-
Função — A função de redução a ser usada
-
Entrada — A variável (RefID (como
A
)) para reamostrar -
Modo — Permite controlar o comportamento da função de redução quando uma série contém valores não numéricos (null, NaN, +-Inf)
Funções de redução
Contagem
A contagem retorna o número de pontos em cada série.
Mean
A média retorna o total de todos os valores em cada série dividido pelo número de pontos nessa série. Nostrict
modo, se algum valor na série for nulo ou nan, ou se a série estiver vazia, NaN será retornado.
Mínimo e máximo
Min e Max retornam o menor ou o maior valor da série, respectivamente. Nostrict
modo, se algum valor na série for nulo ou nan, ou se a série estiver vazia, NaN será retornado.
Soma
Sum retorna o total de todos os valores na série. Se a série tiver comprimento zero, a soma será 0. Nostrict
modo, se houver algum valor NaN ou Nulo na série, NaN será retornado.
Último
Último retorna o último número da série. Se a série não tiver valores, retornará NaN.
Modos de redução
Restring
No modo estrito, a série de entrada é processada como está. Se algum valor na série não for numérico (nulo, NaN ou +-Inf), NaN será retornado.
Eliminar não numérico
Nesse modo, todos os valores não numéricos (nulo, NaN ou +-Inf) na série de entrada são filtrados antes de executar a função de redução.
Substitua o não numérico
Nesse modo, todos os valores não numéricos são substituídos por um valor predefinido.
Reamostrar
A reamostragem altera os registros de data e hora em cada série temporal para ter um intervalo de tempo consistente. O principal caso de uso é que você possa reamostrar séries temporais que não compartilham os mesmos registros de data e hora para que a matemática possa ser realizada entre elas. Isso pode ser feito reamostrando cada uma das duas séries e, em seguida, em uma operação matemática referenciando as variáveis reamostradas.
Campos:
-
Entrada — A variável de dados de séries temporais (RefID (como
A
)) para reamostragem -
Reamostrar para — A duração do tempo para reamostrar, por exemplo,
10s.
Unidades, pode ser des
segundos,m
h
por minutos,d
por horas,w
por dias, por semanas ey
por anos. -
Reduzir a amostra — A função de redução a ser usada quando há mais de um ponto de dados por amostra de janela. Consulte a operação de redução para obter detalhes sobre o comportamento.
-
Upsample — O método a ser usado para preencher uma amostra de janela que não tem pontos de dados.
-
O bloco é preenchido com o último valor conhecido
-
preencha com o próximo valor conhecido
-
fillna para preencher janelas de amostra vazias com NaNs
-
Gravar uma expressão
Se sua fonte de dados os suportar, o Grafana exibirá o botão Expressão e mostrará todas as expressões existentes na lista do editor de consulta.
Para escrever uma expressão
-
Abra o painel.
-
Abaixo da consulta, escolha Expressão.
-
No campo Operação, selecione o tipo de expressão que você deseja escrever.
-
Escreva a expressão.
-
Escolha Apply (Aplicar).
Casos casos especiais
Quando qualquer fonte de dados consultada não retorna nenhuma série ou números, o mecanismo de expressão retornaNoData
. Por exemplo, se uma solicitação contiver duas consultas de fonte de dados que são mescladas por uma expressão, seNoData
for retornada por pelo menos uma das consultas da fonte de dados, o resultado retornado para toda a consulta seráNoData
. Para obter mais informações sobre como o Grafana Alerting processaNoData
os resultados, consulteSem tratamento de dados ou casos de erro.