Em uma regra de alerta, as expressões de avaliação determinam se a condição para acionar um alerta foi atendida e avaliam a severidade dinâmica do alerta.
Visão geral
Os resultados das instruções de consulta servem como entrada, e os campos dos resultados da operação de conjunto atuam como variáveis. Se a expressão de avaliação retornar true, o sistema acionará um alerta.
Limites
As expressões de avaliação em regras de alerta possuem os seguintes limites:
Coloque números negativos entre parênteses (). Exemplo:
x+(-100)<100.O sistema converte valores numéricos para números de ponto flutuante de 64 bits. O uso em comparações, como verificações de igualdade, pode gerar erros.
Os nomes de variáveis podem conter apenas letras e dígitos, e devem começar com uma letra.
Uma expressão de avaliação deve ter entre 1 e 128 caracteres.
Um alerta é acionado somente quando uma expressão de avaliação retorna true e o número de vezes consecutivas que a condição de gatilho é atendida alcança o valor do parâmetro Threshold of Continuous Triggers. Por exemplo, se uma expressão de avaliação for
100+100, o resultado do cálculo será 200, que não corresponde ao valor true. Nesse caso, nenhum alerta é acionado.true, false, cifrão ($) e ponto (.) são palavras reservadas para expressões de avaliação. Não use essas palavras reservadas como variáveis.
Sintaxe
A tabela a seguir descreve os tipos de sintaxe compatíveis com as expressões de avaliação.
Os nomes de campo referem-se aos campos retornados em um conjunto de resultados. Use strings como nomes de campo. Evite nomes de campo que contenham apenas dígitos ou caracteres especiais, como o sinal de porcentagem (%). Se um nome de campo contiver caracteres especiais ou apenas dígitos, coloque-o entre colchetes []. Exemplos:
[5xx percentage (%)] > 20[404] > 20
|
Tipo de sintaxe |
Operador |
Método de operação |
Exemplo |
||
|
Operação entre variáveis |
Operação entre uma constante não string e uma variável |
Operação entre uma constante string e uma variável |
|||
|
Operadores aritméticos |
adição (+), subtração (-), multiplicação (*), divisão (/) e módulo (%) |
Antes da aplicação de um operador aritmético, o sistema converte os operandos esquerdo e direito para números de ponto flutuante de 64 bits. |
Antes da aplicação de um operador aritmético, o sistema converte os operandos esquerdo e direito para números de ponto flutuante de 64 bits. |
Não compatível. |
|
|
Operadores de comparação |
Operadores de comparação: maior que (>), maior ou igual a (>=), menor que (<), menor ou igual a (<=), igual a (==) e diferente de (!=) |
O Simple Log Service aplica as seguintes regras de comparação em ordem de precedência:
|
O sistema converte os operandos esquerdo e direito para números de ponto flutuante de 64 bits e depois os compara. |
O sistema converte os operandos esquerdo e direito para strings e depois os compara com base na ordem alfabética. |
|
|
Operadores de expressão regular: correspondência regex (=~) e não correspondência regex (!~) Nota
|
Antes da aplicação de um operador de expressão regular, o sistema converte os operandos esquerdo e direito para strings. |
Não compatível. |
Antes da aplicação de um operador de expressão regular, o sistema converte os operandos esquerdo e direito para strings. |
Correspondência regex: |
|
|
Operadores lógicos |
Operadores lógicos: AND (&&) e OR (||) |
Os operandos esquerdo e direito devem ser subexpressões, e o resultado da operação deve ser um valor booleano. Por exemplo, a expressão de avaliação é |
Os operandos esquerdo e direito devem ser subexpressões, e o resultado da operação deve ser um valor booleano. Por exemplo, a expressão de avaliação é |
Os operandos esquerdo e direito devem ser subexpressões, e o resultado da operação deve ser um valor booleano. Por exemplo, a expressão de avaliação é |
|
|
Operador Not |
Operador Not (!) |
O operando necessário deve ser uma subexpressão, e o resultado da operação deve ser um valor booleano. Por exemplo, a expressão de avaliação é Não use este operador diretamente nos campos dos resultados de operações de conjunto. |
O operando necessário deve ser uma subexpressão, e o resultado da operação deve ser um valor booleano. Por exemplo, a expressão de avaliação é Não use este operador diretamente nos campos dos resultados de operações de conjunto. |
O operando necessário deve ser uma subexpressão, e o resultado da operação deve ser um valor booleano. Por exemplo, a expressão de avaliação é Não use este operador diretamente nos campos dos resultados de operações de conjunto. |
|
|
Função contains |
Função contains |
Antes da execução da função contains, o sistema converte os operandos esquerdo e direito para strings. |
Não compatível. |
Antes da execução da função contains, o sistema converte os operandos esquerdo e direito para strings. |
|
|
Parênteses |
Parênteses () |
Use parênteses () para substituir a ordem de precedência padrão no cálculo. |
Use parênteses () para substituir a ordem de precedência padrão no cálculo. |
Use parênteses () para substituir a ordem de precedência padrão no cálculo. |
|
Avalie os resultados de operações de conjunto
O Simple Log Service oferece suporte a monitoramento associado para até três conjuntos de dados e avalia os resultados das operações de conjunto.
Resultados de operações de conjunto
Os resultados das instruções de consulta servem como entrada, e os campos dos resultados da operação de conjunto atuam como variáveis para avaliar se um alerta deve ser acionado. Para mais informações sobre operações de conjunto, consulte Correlacionar múltiplos resultados de análise de consulta. A tabela a seguir descreve os resultados das operações de conjunto.
Operações de conjunto, como CROSS JOIN e LEFT JOIN, são executadas nos resultados de consulta e análise.
Se os resultados de consulta e análise não contiverem campos duplicados, referencie campos em uma expressão de avaliação sem adicionar prefixos. Os prefixos incluem $0, $1 e $2. Exemplo:
name == 'sls'.Caso os resultados de consulta e análise contenham campos duplicados, referencie os campos em uma expressão de avaliação adicionando prefixos a eles. Os prefixos incluem $0, $1 e $2. Exemplo:
$0.name == 'sls' || $1.name == 'ecs'.
|
Categoria |
Subcategoria |
Descrição |
|
Log |
Instrução de consulta que não contém SELECT |
Apenas uma instrução de pesquisa é usada para consultar logs. Ao especificar uma expressão de avaliação para uma condição de gatilho, referencie os campos contidos nos resultados da consulta. |
|
Instrução de consulta que contém SELECT * FROM log |
Ao especificar uma expressão de avaliação para uma condição de gatilho, referencie os campos para os quais Enable Analytics está ativado. |
|
|
Instrução de consulta que contém SELECT * FROM (SELECT...) |
Ao especificar uma expressão de avaliação para uma condição de gatilho, referencie os campos contidos na subconsulta SELECT especificada. |
|
|
Metric |
Instrução de consulta que contém SELECT promql(...) |
As funções promql_query(string) e promql_query_range(string, string) sempre podem retornar os seguintes campos: metric, labels, time e value. O Simple Log Service expande o campo labels no formato map. Ao especificar uma expressão de avaliação para uma condição de gatilho, referencie os seguintes campos: metric, labels, time e value. Também é possível referenciar os subcampos do campo labels. |
|
Instrução de consulta que contém SELECT a, b FROM (SELECT promql(...)) |
Ao especificar uma expressão de avaliação para uma condição de gatilho, referencie os campos para os quais Enable Analytics está ativado. |
|
|
Instrução de consulta que contém SELECT * FROM log |
Ao especificar uma expressão de avaliação para uma condição de gatilho, referencie os campos para os quais Enable Analytics está ativado. |
|
|
Dados de resource |
Nenhuma |
O valor de um campo em dados de resource pode ser do tipo string, número de ponto flutuante ou numérico. O tipo JSON não é compatível. Ao especificar uma expressão de avaliação para uma condição de gatilho, referencie o ID de um campo nos dados de resource. |
Configure uma condição de gatilho
A expressão de avaliação analisa os resultados das operações de conjunto. Se ela retornar true, o sistema acionará um alerta. Os seguintes tipos de condição de gatilho são compatíveis:
-
Data is returned: Verifica o número de linhas no resultado da operação de conjunto. A condição é atendida se pelo menos uma linha for retornada.

-
The query result contains: Verifica o número de linhas no resultado da operação de conjunto. Os operadores compatíveis incluem maior que, menor que e igual a. A condição é atendida se o número de linhas satisfizer a condição especificada. Por exemplo, se o conjunto de resultados contiver 4 linhas e a condição de gatilho for The query result contains > 10, a condição não será atendida e nenhum alerta será gerado.

-
Data matches the expression: Verifica o conteúdo das linhas no resultado da operação de conjunto. A condição é atendida se o conteúdo de pelo menos uma linha corresponder à expressão de avaliação. Por exemplo, se o conjunto de resultados contiver uma linha (pv=900) e a condição de gatilho for Data matches the expression, pv > 1000, a condição não será atendida e nenhum alerta será gerado.

-
The query result contains and matches: Verifica tanto o número quanto o conteúdo das linhas no resultado da operação de conjunto. Um alerta é acionado apenas quando um número específico de linhas corresponde à expressão de avaliação. Por exemplo, se o conjunto de resultados tiver quatro linhas (pv=900, pv=1100, pv=1200, pv=1001) e a condição de gatilho for The query result contains and matches > 3, pv > 1000, a condição será atendida e um alerta será gerado.

Exemplos
Exemplo 1
Se a taxa de sucesso das solicitações for inferior a 90% e o tempo médio de resposta das solicitações for superior a 60 segundos dentro de um período de 15 minutos, um alerta será acionado. Detalhes da configuração:
Query Statistics:
s0: Calcule a taxa de sucesso das solicitações, indicada por success_ratio. Instrução de consulta:
* | select round(sum(if(status < 300, 1, 0)) * 100.0 / count(1) , 2) as success_ratio.s1: Calcule o tempo médio de resposta das solicitações por minuto. Instrução de consulta:
* | select date_format(date_trunc('minute',__time__), '%m-%d %H:%i') as t,avg(request_time) as "Average response time(s)" group by t order by t asc limit 2000
Trigger Condition: A expressão de avaliação é configurada como: $0.success_ratio < 90 && $1.[Average response time(s)] > 60

Exemplo 2
Se o número de vezes que o código de status HTTP 500 é retornado exceder 10 dentro de um período de 15 minutos, um alerta será acionado. Detalhes da configuração:
Query Statistics: Conte as ocorrências de cada código de status. Instrução de consulta: * | select status, COUNT(*) as total group by status
Trigger Condition: A expressão de avaliação é configurada como: status == 500 && total > 10
