Use as variáveis annotations, fire_results e results em um modelo de alerta para incluir dados de consulta de log nas notificações de alerta.
O Simple Log Service (SLS) incorpora detalhes de alerta diretamente nas notificações, permitindo que você veja o contexto acionável no momento em que o alerta chega. Para incluir dados de log em uma notificação, configure os parâmetros necessários ao criar uma regra de monitoramento de alerta e, depois, referencie a variável annotations, fire_results ou results no modelo de alerta. Para mais informações, consulte Variáveis em modelos de alerta.
As três variáveis têm finalidades diferentes:
|
Variável |
Conteúdo |
Mais indicada para |
|
|
Pares de chave-valor definidos por você, além de dois padrões do SLS ( |
Resumir o contexto do alerta em formato legível |
|
|
As linhas de dados brutos que dispararam o alerta |
Listar todos os registros correspondentes de uma só vez |
|
|
Metadados completos da consulta, além dos resultados brutos e da linha disparadora |
Depurar ou montar conteúdo detalhado de notificação |
annotations: as anotações de um alerta
fire_results: os registros de dados que dispararam o alerta
results: os parâmetros de consulta e os resultados intermediários
Por exemplo, para monitorar erros de acesso do NGINX, execute a consulta a seguir para obter o código de status HTTP, o endereço IP de origem e a contagem de erros. Depois, crie uma regra de monitoramento de alerta e referencie esses dados no modelo de alerta. Quando um código de status atingir 400 ou mais, o SLS envia uma notificação que inclui o código de status, o IP de origem e a contagem.
-
Instrução de consulta
status >=400 | SELECT status, __source__ AS ip, count(*) AS cnt GROUP BY status,ip Resultados da consulta

Usar a variável annotations
Adicione a variável annotations a um modelo de alerta para incluir pares de chave-valor de anotações nas notificações de alerta.
-
Regra de monitoramento de alerta Por exemplo, para incluir o código de status, o IP de origem e a contagem de erros nas mensagens de alerta, adicione anotações como
status:${status},ip:${ip}ecnt:${cnt}.Adicione pares de chave-valor de anotação manualmente ou ative Auto-Add Annotations para que o SLS os preencha automaticamente quando o alerta disparar. Para mais informações, consulte Anotações.
nullO SLS fornece duas anotações por padrão.
Por exemplo, para incluir o código de status, o IP de origem e a contagem de erros nas mensagens de alerta, adicione anotações como
status:${status},ip:${ip}ecnt:${cnt}.Adicionar manualmente informações sobre anotações

Ativar Auto-Add Annotations para adicionar automaticamente informações sobre anotações

-
Mensagem de alerta Após o disparo do alerta, o SLS gera uma mensagem contendo as anotações configuradas:
Após o disparo do alerta, o SLS gera uma mensagem contendo as anotações configuradas:
{ "annotations": { "title": "Alert is triggered by an NGINX access error", "desc": "The error that is indicated by the status code 400 occurred 15 times" "status": "400" "ip": "127.0.0.1" "cnt": "15" "__count__": "1" } } -
Modelo de alerta Adicione a variável
annotationsao modelo de alerta para referenciar conteúdo específico de log nas notificações. Para mais informações sobre como crie um modelo de alerta, consulte Criar um modelo de alerta.
Adicione a variável
annotationsao modelo de alerta para referenciar conteúdo específico de log nas notificações. Para mais informações sobre como criar um modelo de alerta, consulte Criar um modelo de alerta.
Usar a variável fire_results
Adicione a variável fire_results a um modelo de alerta para listar todas as linhas de dados que dispararam o alerta.
-
Regra de monitoramento de alerta O SLS gera mensagens de alerta com base na regra de monitoramento de alerta criada por você.

O SLS gera mensagens de alerta com base na regra de monitoramento de alerta criada por você.

-
Mensagem de alerta Após o disparo do alerta, o SLS gera uma mensagem contendo todas as linhas que atenderam à condição de disparo — neste exemplo, o código de status, o IP de origem e a contagem de erros para cada linha correspondente.
Após o disparo do alerta, o SLS gera uma mensagem contendo todas as linhas que atenderam à condição de disparo — neste exemplo, o código de status, o IP de origem e a contagem de erros para cada linha correspondente.
{ "fire_results": [ { "status": "401", "ip": "127.0.0.1", "cnt": "3" }, { "status": "400", "ip": "127.0.0.1", "cnt": "7" }, { "status": "501", "ip": "127.0.0.1", "cnt": "4" }, { "status": "404", "ip": "127.0.0.1", "cnt": "4" }, { "status": "402", "ip": "127.0.0.1", "cnt": "6" }, null ] } -
Modelo de alerta Adicione a variável
fire_resultsao modelo de alerta para referenciar conteúdo específico de log nas notificações. Para mais informações sobre como crie um modelo de alerta, consulte Criar um modelo de alerta.
Adicione a variável
fire_resultsao modelo de alerta para referenciar conteúdo específico de log nas notificações. Para mais informações sobre como criar um modelo de alerta, consulte Criar um modelo de alerta.
Usar a variável results
Adicione a variável results a um modelo de alerta para incluir o contexto completo da consulta nas notificações de alerta.
-
Regra de monitoramento de alerta O SLS gera mensagens de alerta com base na regra de monitoramento de alerta criada por você.

O SLS gera mensagens de alerta com base na regra de monitoramento de alerta criada por você.

-
Mensagem de alerta Cada item no array
resultscontém os seguintes campos:Após o disparo do alerta, o SLS gera uma mensagem contendo o contexto completo da consulta.
nullSe uma regra de monitoramento de alerta contiver várias instruções de consulta, o array results/@parmname conterá vários itens. Cada item corresponde a uma instrução de consulta.
{ "results": [{ "store_type": "log", "region": "cn-hangzhou", "project": "test-alert", "store": "nginx-access-log", "query": "status >= 400 | select status, __source__ as ip, count(*) as cnt group by status, ip", "start_time": 1640006894, "end_time": 1640007014, "dashboard_id": "", "raw_results": [ { "status": "401", "ip": "127.0.0.1", "cnt": "3" }, { "status": "400", "ip": "127.0.0.1", "cnt": "7" }, { "status": "501", "ip": "127.0.0.1", "cnt": "4" }, { "status": "404", "ip": "127.0.0.1", "cnt": "4" }, { "status": "402", "ip": "127.0.0.1", "cnt": "6" }, null ], "raw_result_count": 6, "fire_result": { "status": "401", "ip": "127.0.0.1", "cnt": "3" }, "has_sql": true, "truncated": false, "role_arn": "" }] }Cada item no array
resultscontém os seguintes campos:Campo
Descrição
store_typeO tipo de armazenamento de dados consultado, como
logregionA região do projeto
projectO nome do projeto SLS
storeO nome do Logstore
queryA instrução de consulta executada
start_timeO horário de início da consulta (timestamp Unix)
end_timeO horário de término da consulta (timestamp Unix)
dashboard_idO ID do painel associado, se houver
raw_resultsTodas as linhas retornadas pela consulta
raw_result_countO número total de linhas em
raw_resultsfire_resultA linha específica que disparou o alerta
has_sqlIndica se a consulta contém uma instrução de análise SQL
truncatedIndica se o conjunto de resultados foi truncado
role_arnO ARN da função RAM usada na consulta, se houver
-
Modelo de alerta Adicione a variável
resultsao modelo de alerta para referenciar conteúdo específico de log nas notificações. Para mais informações sobre como crie um modelo de alerta, consulte Criar um modelo de alerta.
Adicione a variável
resultsao modelo de alerta para referenciar conteúdo específico de log nas notificações. Para mais informações sobre como criar um modelo de alerta, consulte Criar um modelo de alerta.
Variáveis de modelo
Ao referenciar uma variável em formato JSON dentro de um modelo de alerta — por exemplo, {{ alert.results[0].raw_results | to_json }} —, o valor aparece como uma string JSON na notificação. Use um loop para exibir resultados de várias linhas, uma linha por vez. Para mais informações, consulte Sintaxe para novos modelos de alerta.
{%- for result in alert.fire_results %}
- status: {{ result.status }}, count: {{ result.cnt }}
{%- endfor %}
O SLS oferece funções integradas para formatar o conteúdo das notificações. Para mais informações, consulte Sintaxe para novos modelos de alerta e Funções integradas de modelo.