Todos os produtos
Search
Central de documentação

Simple Log Service:Sintaxe das condições de disparo em regras de alerta

Última atualização: Jun 23, 2026

Este tópico descreve a sintaxe das condições de disparo em regras de alerta.

Você pode usar variáveis para referenciar campos de log na condição de disparo de uma regra de alerta. Para avaliar a regra de alerta, o Simple Log Service executa consultas de log com base nas instruções de consulta especificadas na regra de alerta e verifica se os resultados atendem à condição de disparo. Se a condição de disparo for atendida, um alerta será acionado.

Limites

Esta seção lista os limites das condições de disparo:

  • Números negativos devem ser colocados entre parênteses (), por exemplo, x+(-100)<100.

  • Valores numéricos são convertidos em números de ponto flutuante de 64 bits. Portanto, o resultado da avaliação de uma regra de alerta pode ser impreciso quando uma comparação está envolvida.

  • Um nome de variável pode conter apenas letras e dígitos e deve começar com uma letra.

  • Uma condição de disparo deve ter de 1 a 128 caracteres.

  • Se uma regra de alerta estiver associada a vários gráficos, várias consultas serão executadas durante cada avaliação da regra de alerta. Assim, vários conjuntos de entradas de log são retornados como resultados da consulta. O Simple Log Service seleciona uma entrada de log de cada conjunto e verifica se a combinação das entradas selecionadas atende à condição de disparo. Para cada avaliação de regra de alerta, o Simple Log Service verifica no máximo 1.000 combinações de entradas de log. Um alerta será acionado se uma das combinações atender à condição de disparo.

  • Uma regra de alerta pode ser associada a no máximo três gráficos ou instruções de consulta.

  • Se o resultado de uma condição de disparo for true, a condição de disparo foi atendida. Nesse caso, um alerta será acionado. Por exemplo, se a condição de disparo for 100+100, o resultado será 200 e nenhum alerta será acionado.

  • O Simple Log Service reserva duas palavras: true e false. Também reserva dois caracteres especiais: cifrão ($) e ponto (.). Essas palavras e caracteres especiais não podem ser usados como variáveis.

Sintaxe

A tabela a seguir lista a sintaxe usada nas condições de disparo.

Tipo de sintaxe

Operação

Descrição

Operadores aritméticos

Compatível com os operadores de adição (+), subtração (-), multiplicação (*), divisão (/) e módulo (%).

  • x * 100 + y > 200

  • x % 10 > 5

Operadores de comparação

Compatível com oito operadores de comparação: maior que (>), maior ou igual a (>=), menor que (<), menor ou igual a (<=), igual a (==), diferente de (!=), correspondência (=~) e não correspondência (!~).

null
  • Barras invertidas (\) em expressões regulares devem ser escapadas.

  • A sintaxe do Regular Expression 2 (RE2) é usada. Para mais informações, consulte Sintaxe.

  • x >= 0

  • x < 100

  • x <= 100

  • x == 100

  • x == "foo"

  • x =~ "\\w +"

Operadores lógicos

Compatível com os operadores AND (&&) e OR (||).

  • x >= 0 && y <= 100

  • x > 0 || y >0

Operador NOT

Compatível com o operador NOT (!).

!(a < 1 && a > 100)

Constantes numéricas

Compatível com constantes numéricas. O Simple Log Service converte constantes numéricas em números de ponto flutuante de 64 bits.

x > 100

Constantes de string

Compatível com constantes de string no formato 'String', por exemplo, 'string'.

foo == 'string'

Constantes booleanas

Compatível com true e false.

(x > 100) == true

Parênteses

Compatível com parênteses (). Você pode usar parênteses para substituir a ordem de precedência padrão e forçar o Simple Log Service a avaliar a parte delimitada de uma condição de disparo antes da parte não delimitada.

x * (y + 100) > 100

Função contains

Compatível com a função contains. A função contains verifica se uma string contém uma substring. Por exemplo, contains(foo, 'hello') retorna true se a string referenciada pela variável foo incluir a substring hello.

contains(foo, 'hello')

Condições de disparo em regras de alerta associadas a vários gráficos

  • Sintaxe

    Uma regra de alerta pode ser associada a várias instruções de consulta. Se você quiser usar uma variável na condição de disparo para referenciar um campo do resultado de uma instrução de consulta, prefixe a variável com o número sequencial da instrução de consulta no formato $N.fieldname. O número sequencial de uma instrução de consulta é o mesmo do gráfico que plota o resultado da instrução de consulta. Para mais informações, consulte Como posso ver o número sequencial de um gráfico? O intervalo de valores de N é de 0 a 2, pois cada regra de alerta está associada a no máximo três instruções de consulta. Por exemplo, $0.foo referencia o valor do campo foo do resultado da primeira instrução de consulta. Se uma regra de alerta estiver associada a apenas uma instrução de consulta, não é necessário especificar o prefixo na condição de disparo.

  • Avaliação

    Durante a avaliação de uma regra de alerta, se várias consultas forem executadas e vários conjuntos de entradas de log forem retornados como resultados, o Simple Log Service usa apenas os resultados cujos campos são referenciados na condição de disparo. Por exemplo, três conjuntos de entradas de log são retornados. O número de entradas de log no primeiro conjunto é z, no segundo conjunto é y e no terceiro conjunto é z. Se a condição de disparo for $0.foo > 100 && $1.bar < 100, o Simple Log Service usa apenas o primeiro e o segundo conjunto durante a avaliação da regra de alerta. O Simple Log Service seleciona uma entrada de log de cada um dos dois conjuntos e verifica se a combinação das entradas selecionadas atende à condição de disparo. O Simple Log Service verifica x × y combinações. Se o resultado de x × y exceder 1.000, o Simple Log Service verificará apenas 1.000 combinações. Se uma das combinações atender à condição de disparo, o Simple Log Service acionará um alerta.

Implementação de operadores

null
  • O Simple Log Service converte todos os valores numéricos em números de ponto flutuante de 64 bits.

  • Uma constante de string deve ser delimitada por aspas simples ('') ou aspas duplas (""), por exemplo, 'string' ou "string".

  • Os valores booleanos incluem true e false.

Operador

Implementação

Operação entre variáveis

Operação entre uma constante não string e uma variável

Operação entre uma constante de string e uma variável

Operadores aritméticos: adição (+), subtração (-), multiplicação (*), divisão (/) e módulo (%)

Antes de aplicar um operador aritmético, os operandos esquerdo e direito são convertidos em números de ponto flutuante de 64 bits.

Não compatível.

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 usa as seguintes regras de comparação, classificadas por ordem de precedência:

  1. Os operandos esquerdo e direito são convertidos em números de ponto flutuante de 64 bits e comparados com base na ordem numérica. Se a conversão falhar, a próxima regra se aplica.

  2. Os operandos esquerdo e direito são convertidos em strings e comparados com base na ordem lexicográfica.

Os operandos esquerdo e direito são convertidos em números de ponto flutuante de 64 bits e comparados com base na ordem numérica.

Os operandos esquerdo e direito são convertidos em strings e comparados com base na ordem lexicográfica.

Operadores de expressão regular:

correspondência de regex (=~) e não correspondência de regex (!~)

Antes de aplicar um operador de correspondência, os operandos esquerdo e direito são convertidos em strings.

Não compatível.

Antes de aplicar um operador de correspondência, os operandos esquerdo e direito são convertidos em strings.

Operadores lógicos:

AND (&&) e OR (||)

Um operador lógico não pode ser aplicado a campos de log. Os operandos esquerdo e direito devem ser expressões condicionais. O resultado de um operador lógico é do tipo de dado booleano.

Operador NOT (!)

O operador NOT não pode ser aplicado a campos de log. O operando direito deve ser uma expressão condicional. O resultado do operador NOT é do tipo de dado booleano.

Função contains

Antes de executar a função contains, os parâmetros de entrada são convertidos em strings.

Não compatível.

Antes de executar a função contains, os parâmetros de entrada são convertidos em strings.

Parênteses ()

Os parênteses são usados para substituir a ordem de precedência padrão e forçar o Simple Log Service a avaliar a parte delimitada de uma condição de disparo antes da parte não delimitada.

Exemplos

  • Exemplo 1: Acionar um alerta se a taxa de sucesso de tarefas cair abaixo de 90% e a latência exceder 60 segundos em um intervalo de tempo de 1 dia (relativo). Defina o nome do alerta como Alerta de latência de tarefas e associe dois gráficos: o Gráfico 0 é chamado Taxa de sucesso de tarefas, com a instrução de consulta * | select round(sum(case when code = 200 then 1 else 0 end) * 100.0 / count(*), 2) as success e um intervalo de tempo de consulta de 1 dia (relativo); o Gráfico 1 é chamado Status de latência, com a instrução de consulta delay > 0 | select time_series(__time__, '10m', '%m-%d %H:%i', '0') as time, round(avg(delay)/100, 3) as delay group by time order by time limit 14400 e um intervalo de tempo de consulta de 1 dia (relativo). Defina o intervalo de avaliação como um intervalo fixo de 15 minutos e defina a condição de disparo como $0.success < 90 && $1.delay > 60.

  • Exemplo 2: Acionar um alerta se o código de status 500 ocorrer 10 vezes em 15 minutos. Defina o nome do alerta como Alerta de código de status 500. Associe o Gráfico 0, chamado Distribuição de status de resposta, com a instrução de consulta * | SELECT status, COUNT(*) as total GROUP BY status e um intervalo de tempo de consulta de 15 minutos (relativo). Defina o intervalo de avaliação como um intervalo fixo de 15 minutos e defina a condição de disparo como $0.status == 500 && $0.total > 10.

  • Exemplo 3: Acionar um alerta se a taxa de processamento cair abaixo de 1.000 entradas por segundo em 1 hora. Defina o nome do alerta como Alerta de baixa taxa de processamento de dados. Associe o Gráfico 0, chamado Taxa de processamento (linhas/s), com a instrução de consulta __topic__: __etl-log-status__ AND __tag__: __schedule_type__: Resident and event_id: "shard_worker:metrics:checkpoint" | select time_series(__time__, '1m', '%y/%m/%d %H:%i', '0') as dt, round(sum("progress.accept") / 60.0, 3) as "accept", round(sum("progress.dropped") / 60.0, 3) as "dropped", round(sum("progress.delivered") / 60.0, 3) as "delivered", round(sum("progress.failed") / 60.0, 3) as "failed" group by dt order by dt asc limit 10000 e um intervalo de tempo de consulta de 1 hora (relativo). Defina o intervalo de avaliação como um intervalo fixo de 1 hora e defina a condição de disparo como $0.accept < 1000.