Escrever consultas de expressão - Amazon Managed Grafana

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á.

Escrever consultas de expressão

Este tópico de documentação foi desenvolvido para espaços de trabalho Grafana que oferecem suporteGrafana versão 9.x.

Para espaços de trabalho do Grafana que suportam a versão 8.x do Grafana, consulteTrabalhando no Grafana versão 8.

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.

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 os dados aceitáveis como entrada para expressões.

Usando expressões

As expressões são usadas principalmente porAlerta Grafana. O processamento é feito no lado do servidor, para que as expressões possam 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 séries temporais ou dados numéricos. Eles também operam emdados 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 recebe 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ão).AouB).

Para referenciar a saída de uma expressão individual ou 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, onde cada item do conjunto é identificado exclusivamente por suas dimensões, que são armazenadas comoetiquetasou pares de valores-chave.

Consultas de fontes de dados

As expressões do lado do servidor só oferecem suporte a 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 futuro, 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 da 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. 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 seja de série temporal (número) é suportado ao usar quadros de dados se você tiver uma resposta de tabela que retorne um quadro de dados sem hora, colunas de sequência de caracteres 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 string 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)

A matemática é para fórmulas matemáticas de formato livre sobre 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 entre chaves como${my variable}.

As constantes numéricas podem estar em decimal (2.24), octal (com um zero inicial como072) ou hexadecimal (com um 0x inicial como0x2A). Exponenciais e sinais também são suportados (por exemplo,-0.8e-2).

Operadores

A aritmética (+, binário e unário-,*,/,%, expoente**), relacional (<,>,==,!=,>=,<=) e lógico (&&,||e unário!) operadores são suportados.

A forma como a operação se comporta com os dados depende de se tratarem de dados numéricos ou de séries temporais.

Com operações binárias, como$A + $Bou$A || $B, o operador é aplicado das seguintes formas, dependendo do tipo de dados:

  • Se ambos$Ae$Bsão um número e, em seguida, a operação é 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$Ae$Bsão dados de séries temporais, então a operação entre cada valor nas duas séries é executada para cada carimbo de data/hora que existe em ambas$Ae$B. OResamplea operação pode ser usada para alinhar carimbos de data e hora.

Resumo:

  • Número OP = número

  • Número da série OP = série

  • 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 nos rótulos de identificação associados a cada série ou número individual.

Então, se você tiver números com rótulos como{host=web01}em$Ae outro número em$Bcom os mesmos rótulos, a operação é 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$Ae$Bcada um contém 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 em$Aestá rotulado{host=A,dc=MIA}e um item em$Bestá rotulado{host=A}eles se juntarão.

  • Se estiver dentro de uma variável, como$Aexistem 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 é 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).

é_inf

is_inf pega um número ou uma série e retorna1peloInfvalores (negativos ou positivos) e0para 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().

é_nan

is_nan pega um número ou uma série e retorna1peloNaNvalores e0para outros valores. Por exemplo, is_nan($A). Essa função existe porqueNaNnão é igual aNaN.

é_nulo

is_null pega um número ou uma série e retorna1pelonullvalores e0para outros valores. Por exemplo, is_null($A).

é o número

is_number pega um número ou uma série e retorna1para todos os valores de números reais e0para outros valores (que sãonull,Inf+,Inf-, eNaN). Por exemplo, is_number($A).

tora

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é devolvido. 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) devoluções3.

Reduzir

Reduzir usa 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 da série temporal são mantidos como rótulos em cada número reduzido de saída.

Campos:

  • Função— A função de redução a ser usada

  • Entrada— A variável (refID) (comoA)) 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

Count retorna o número de pontos em cada série.

Média

A média retorna o total de todos os valores em cada série dividido pelo número de pontos nessa série. Emstrictmodo se algum valor na série for nulo ou nan, ou se a série estiver vazia, NaN será retornado.

Min e Max

Min e Max retornam o menor ou maior valor na série, respectivamente. Emstrictmodo 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. Emstrictmodo se houver algum valor NaN ou Null na série, NaN será retornado.

Último

Last retorna o último número da série. Se a série não tiver valores, retornará NaN.

Modos de redução

Restrita

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 dados não numéricos

Nesse modo, todos os valores não numéricos (null, NaN ou +-Inf) na série de entrada são filtrados antes de executar a função de redução.

Substituir não numérico

Nesse modo, todos os valores não numéricos são substituídos por um valor predefinido.

Reamostrar

O Resample altera os carimbos 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 carimbos de data/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 dos dados da série temporal (RefID) (comoA)) para reamostrar

  • Reamostrarpara — A duração do tempo para reamostrar, por exemplo10s.As unidades podem serssegundos,mpor minutos,hpor horas,dpor dias,wpor semanas, eypor 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.

  • Aumentar a amostra— O método a ser usado para preencher uma amostra de janela que não tem pontos de dados.

    • blocopreenche com o último valor conhecido

    • aterrocom o próximo valor conhecido

    • fillnapara preencher janelas de amostra vazias comNaNs

Escreva uma expressão

Se sua fonte de dados os suportar, o Grafana exibirá oExpressãobotão e mostra todas as expressões existentes na lista do editor de consultas.

Para escrever uma expressão
  1. Abra o painel.

  2. Abaixo da consulta, escolhaExpressão.

  3. NoOperaçãocampo, selecione o tipo de expressão que você deseja escrever.

  4. Escreva a expressão.

  5. Escolha Apply (Aplicar).

Casos especiais

Quando qualquer fonte de dados consultada não retorna séries ou números, o mecanismo de expressão retornaNoData. Por exemplo, se uma solicitação contiver duas consultas de fonte de dados mescladas por uma expressão, seNoDataé retornado por pelo menos uma das consultas da fonte de dados e, em seguida, o resultado retornado para toda a consulta éNoData. Para obter mais informações sobre como o Grafana Alerting processaNoDataresultados, vejaSem lidar com dados ou casos de erro.