Use variáveis em modelos de alerta para preencher dinamicamente o conteúdo e o assunto das notificações.
Referência de variáveis
-
Os nomes das variáveis devem corresponder exatamente ao definido.
Se uma variável não existir ou a referência for inválida, o valor padrão será uma string vazia.
Objetos referenciados são convertidos em strings JSON.
-
Nomes de variáveis podem conter letras, dígitos e underscores (_), mas não podem começar com um dígito.
Se o nome da variável seguir essas regras, recupere seu valor usando notação de ponto, por exemplo,
{{alert.xxx}}.Se o nome da variável contiver caracteres especiais, como
__tag__:__namespace__, use a notação de colchetes para recuperar o valor, como em{{alert.annotations["__tag__:__namespace__"] }}.
Ao configure uma política de ação, selecione um modelo de alerta que defina o conteúdo e o assunto da notificação. Nos campos Send Content e Subject/Title, referencie as variáveis do modelo usando a sintaxe {{ alert.xxx }}. O Simple Log Service (SLS) substitui cada variável pelo valor real ao enviar as notificações. Por exemplo, {{ alert.project }} é substituído pelo nome do projeto da regra de alerta.
Por exemplo, em um modelo de canal do DingTalk, defina o Subject como SLS Alert e use variáveis como {{ alert.aliuid }}, {{ alert.project }}, {{ alert.alert_name }} e {{ alert.severity }} no Content para incluir o ID da conta, o nome do projeto, o nome da regra de alerta e a severidade.
Também é possível usar fluxo de controle e funções integradas para processar os dados das variáveis. Para mais informações, consulte Sintaxe de Modelo de Alerta (Novo) e Funções Integradas de Modelo.
Atributos do alerta
|
Parâmetro |
Descrição |
Tipo |
Valor |
Exemplo de referência |
|
aliuid |
ID da conta Alibaba Cloud do projeto. |
string |
117918634953**** |
A regra de alerta para o usuário |
|
alert_instance_id |
ID da instância que acionou o alerta. |
string |
ee16a8f435485f3f-5be6b81edc520-3d6**** |
O ID da instância é |
|
alert_id |
ID exclusivo da regra de alerta no projeto. |
string |
alert-12345 |
O ID da regra de alerta é |
|
alert_name |
Nome da regra de alerta. |
string |
Regra de alerta de teste |
A regra de alerta |
|
alert_type |
Tipo do alerta.
|
string |
sls_alert |
O tipo de alerta é |
|
region |
Região onde o alerta foi acionado. |
string |
cn-hangzhou |
O alerta foi acionado na região |
|
project |
Projeto ao qual a regra de alerta pertence. |
string |
my-project |
Uma regra de alerta foi acionada no projeto |
|
next_eval_interval |
Próximo intervalo de avaliação, em segundos. |
int |
300 |
Próxima avaliação em |
|
alert_time |
Timestamp UTC da avaliação atual. |
int |
1616744734 |
O horário da avaliação atual é |
|
fire_time |
Timestamp UTC do primeiro acionamento do alerta. |
int |
1616059834 |
O alerta foi acionado pela primeira vez em |
|
status |
Status atual do alerta.
|
string |
firing |
O status do alerta é |
|
resolve_time |
Timestamp UTC de resolução do alerta.
|
int |
0 |
O alerta foi resolvido em |
|
severity |
Severidade do alerta.
|
int |
10 |
A severidade do alerta é |
|
labels |
Conjunto de rótulos chave-valor definidos pelo usuário. |
map |
{"env":"test"} |
Os rótulos do alerta são |
|
annotations |
Conjunto de anotações chave-valor definidas pelo usuário. |
map |
{ "title": "Alert title","desc": "Alert description" } |
As anotações do alerta são |
|
results |
Array de parâmetros de consulta e resultados intermediários. Para mais informações sobre os valores desta variável, consulte Estrutura QueryData. |
array |
Consulte o apêndice ao final deste tópico. |
O horário de início da primeira consulta é |
|
fire_results |
Dados que acionaram o alerta, correspondentes ao resultado da operação de conjunto. São retornadas no máximo 100 linhas. Se o tamanho da variável fire_results exceder 2 KB ou se o conteúdo de um único campo ultrapassar 1 KB, os dados serão truncados. Para saber como lidar com dados truncados, consulte O que fazer se um alerta for acionado por muitos logs e a notificação exibir informações incompletas? |
array |
Consulte o apêndice ao final deste tópico. |
Os dados que acionaram o alerta são |
|
fire_results_count |
Número total de linhas de dados que acionaram o alerta. Este valor pode ser superior a 100, por exemplo, após uma operação de product cartesiano. |
int |
3 |
O alerta foi acionado por |
|
condition |
Expressão de avaliação que acionou o alerta, com variáveis substituídas pelos valores reais de acionamento entre colchetes []. O formato é |
string |
|
A expressão de avaliação do alerta é |
|
raw_condition |
Expressão de avaliação original, sem a substituição das variáveis pelos seus valores reais. O formato é |
string |
|
A expressão de avaliação original é |
|
policy |
Política de alerta ou política de ação. Para mais informações sobre os valores desta variável, consulte Estrutura da política. |
map |
Consulte o apêndice ao final deste tópico. |
O ID da política de alerta é |
|
dashboard |
Nome do painel associado ao alerta. |
string |
mydashboard |
O painel associado é |
|
alert_url |
URL da página de detalhes do alerta. |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xxxx/alert/alert-1617164106-940166 |
A URL do alerta é |
|
query_url |
URL da página de busca da primeira consulta. |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xxx/logsearch/test-alert-access?encode=base64&endTime=1617175989&queryString=KiB8IHNlbGVjdCBjb3VudCgxKSBhcyBjbn****&queryTimeType=99&startTime=1617175089 |
A URL da primeira página de consulta é |
|
alert_history_dashboard_url |
URL do painel de Estatísticas do Histórico de Alertas. |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xx/dashboard/internal-alert-analysis |
A URL do painel de Estatísticas do Histórico de Alertas é |
|
dashboard_url |
URL do painel associado ao alerta. |
string |
https://sls.console.alibabacloud.com/next/project/myproject/dashboard/mydashboard |
A URL do painel associado é |
|
fingerprint |
Impressão digital do alerta. Para mais informações, consulte Deduplicar alertas com base nas impressões digitais. |
string |
478325709134bc5c |
A impressão digital do alerta é |
|
signin_url |
URL para visualizar detalhes do alerta sem fazer login no console. Para mais informações, consulte Visualizar detalhes do alerta sem fazer login. |
string |
https://sls.console.alibabacloud.com/console/AlertAjax/slsSignIn.json?token=xxxx |
Estrutura da política
A variável policy contém os seguintes campos.
|
Parâmetro |
Descrição |
Tipo |
Exemplo de valor |
|
alert_policy_id |
ID da política de alerta. |
string |
sls.test-alert |
|
action_policy_id |
ID da política de ação configurada para a regra de alerta. Disponível apenas quando a regra utiliza uma Política de Ação Dinâmica. |
string |
sls.test-action |
|
repeat_interval |
Intervalo de reenvio de notificação para um alerta ativo. Disponível apenas quando a regra utiliza uma Política de Ação Dinâmica. |
string |
4h |
Estrutura de dados da consulta
A variável results contém os seguintes campos.
|
Parâmetro |
Descrição |
Tipo |
Valor |
|
store_type |
Tipo de armazenamento. Valores válidos:
|
string |
log |
|
region |
Região onde o armazenamento de destino está localizado. Esta variável fica vazia se o valor de |
string |
cn-hangzhou |
|
project |
Projeto onde o armazenamento de destino está localizado. Esta variável fica vazia se o valor de |
string |
sls-test-alert |
|
store |
Nome do armazenamento de destino. |
string |
test-LogStore |
|
query |
Instrução de consulta. |
string |
error | select count(1) as cnt |
|
start_time |
Horário de início da consulta, especificado como timestamp UTC. Esta variável fica vazia se o valor de |
int |
1616741485 |
|
end_time |
Horário de término da consulta, especificado como timestamp UTC. Esta variável fica vazia se o valor de |
int |
1616745085 |
|
raw_results |
Array dos resultados da consulta, contendo até 100 linhas. Se a variável raw_results exceder 2 KB ou se um campo nos resultados ultrapassar 1 KB, os dados excedentes serão truncados. |
array |
|
|
raw_results_count |
Número total de linhas no conjunto de resultados, podendo ser superior a 100. |
int |
20 |
|
fire_result |
Primeiro registro do resultado de acionamento do alerta, mesmo que o conjunto contenha múltiplos registros. |
map |
|
|
query_url |
URL da página de consulta no console. Esta variável fica vazia se o valor de |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xxx/logsearch/test-alert-access?encode=base64&endTime=1617175989&queryString=KiB8IHNlbGVjdCBjb3VudCgxKSBhcy***&queryTimeType=99&startTime=1617175089 |
|
dashboard_url |
URL do painel associado à consulta. |
string |
https://sls.console.alibabacloud.com/next/project/myproject/dashboard/mydashboard |
|
role_arn |
Alibaba Cloud Resource Name (ARN) da função de service. |
string |
acs:ram::117918634953****:role/aliyunslsalertmonitorrole |
Perguntas frequentes
Apêndice
-
Exemplo de
results:[{ "store_type": "log", "region": "cn-hangzhou", "project": "sls-alert-test", "store": "test", "query": "* | select count(1) as cnt", "start_time": 1616741485, "end_time": 1616745085, "dashboard_id": "mydashboard", "raw_results": [{ "cnt": "4" }], "raw_result_count": 1, "fire_result": { "cnt": "4" }, "truncated": false, "role_arn": "" }] -
Exemplo de
fire_results:[{ "host": "example.com", "host__1": "example.com", "pv": "836", "slbid": "slb-02", "status": "200" }, { "host": "example.com", "host__1": "example.com", "pv": "836", "slbid": "slb-02", "status": "200" }] -
Exemplo de
policy:{ "alert_policy_id": "sls.test-alert", "action_policy_id": "sls.test-action", "repeat_interval": "5m0s" }
Exemplo
O exemplo abaixo define o conteúdo da notificação usando o novo modelo de conteúdo:
-
Conteúdo do alerta:
{ "alert_id": "test-alert", "alert_name": "PV/UV Alert", "project": "project-1", "status": "firing", "severity": 6, "labels": { "app": "nginx", "host": "host-1" }, "results": [ { "project": "project-1", "logstore": "logstore-1", "query": "* | select count(*) as pv" }, { "project": "project-2", "logstore": "logstore-2", "query": "* | select count(distinct user_id) as uv" } ] } -
Configuração do modelo de alerta:
- Alert ID: {{ alert.alert_id }} - Alert Name: {{ alert.alert_name }} - Project: {{ alert.project }} - Status: {% if alert.status == "firing" %}FIRING{% else %}RESOLVED{% endif %} - Labels: {%- for key, val in alert.labels.items() %} - {{ key }}: {{ val }} {%- endfor %} - Query: {{ alert.results[0].query }} -
Resultado da saída:
- Alert ID: test-alert - Alert Name: PV/UV Alert - Project: project-1 - Status: FIRING - Labels: - app: nginx - host: host-1 - Query: * | select count(*) as pv