Quando um alerta do Prometheus é disparado, os responsáveis pela resposta frequentemente acessam o console do ARMS para verificar a tendência da métrica. Incluir um gráfico de tendência no cartão de alerta do DingTalk oferece contexto visual imediato diretamente na notificação, sem necessidade de sair do aplicativo.
Duas annotations personalizadas na regra de alerta controlam qual métrica plotar e qual nome exibir no gráfico.
Os gráficos de tendência de métrica são suportados apenas em cartões de alerta de grupos do DingTalk. Outros canais de notificação (e-mail, webhooks) não oferecem suporte a esse recurso.
Como funciona
Uma regra de alerta do Prometheus avalia uma expressão PromQL com uma condição de limiar, como cpu_usage > 80. Para renderizar um gráfico de tendência, o ARMS precisa de uma expressão PromQL separada — a mesma consulta sem o limiar — para plotar os valores brutos da métrica ao longo do tempo.
Forneça essa consulta e um nome de exibição por meio de duas annotations:
|
Chave da annotation |
Finalidade |
Exemplo de valor |
|
|
Expressão PromQL que retorna os dados da métrica a serem plotados. Remova quaisquer condições de limiar ou operadores lógicos (AND, OR) da expressão de alerta. |
|
|
|
Nome de exibição da métrica mostrada no gráfico. |
|
O gráfico é renderizado somente quando os rótulos no resultado da consulta _aliyun_display_promql correspondem aos rótulos no resultado da PromQL da regra de alerta. Para mais detalhes, consulte Por que o gráfico está ausente?
A consulta _aliyun_display_promql pode retornar até 512 KB de dados de métrica.
Pré-requisitos
Antes de começar, verifique se você possui:
Um grupo do DingTalk configurado como canal de notificação. Consulte Chatbot do DingTalk
Uma política de notificação que encaminha alertas para o grupo do DingTalk. Consulte Políticas de notificação
Crie ou edite uma regra de alerta com gráfico de tendência
Faça login no console do ARMS.
No painel de navegação à esquerda, escolha Managed Service for Prometheus > Prometheus Alert Rules.
Na página Prometheus Alert Rules, clique em Create Prometheus Alert Rule no canto superior direito.
Na seção Alert Notification, selecione Simple Mode e, em seguida, a política de notificação que utiliza seu grupo do DingTalk como contato.
-
Expanda Advanced Settings, localize a seção Annotations e clique em Create Annotation. Adicione as duas annotations a seguir:
Defina a chave como
_aliyun_display_promqle o valor como sua expressão PromQL sem o limiar. Por exemplo, se a regra de alerta usarcpu_usage > 80, defina o valor comocpu_usage.Clique em Create Annotation novamente. Defina a chave como
_aliyun_display_namee o valor como um nome descritivo para a métrica, comoContainer CPU utilization.
Configure outros parâmetros da regra de alerta conforme necessário. Consulte Regras de alerta do Prometheus.
Clique em Save e, em seguida, em Complete.
Verifique o gráfico
Após o acionamento da regra de alerta, abra o grupo do DingTalk e verifique o cartão de alerta. O gráfico de tendência de métrica aparece integrado, exibindo os valores da métrica que antecederam o alerta.
Para saber como agir com base nos alertas recebidos no DingTalk, consulte Tratar alertas em um grupo de notificação.
Perguntas frequentes
Por que é necessária uma expressão PromQL separada para o gráfico?
A expressão PromQL de uma regra de alerta inclui condições de limiar e operadores lógicos (por exemplo, cpu_usage > 80). Esses elementos filtram o conjunto de resultados em vez de retornar os valores brutos da métrica necessários para um gráfico. A annotation _aliyun_display_promql utiliza a mesma consulta sem o limiar, permitindo que o ARMS recupere os dados subjacentes da série temporal e os plote.
Por que o gráfico está ausente após eu definir as annotations?
O gráfico é renderizado somente quando os rótulos no resultado da consulta _aliyun_display_promql correspondem aos rótulos no resultado da PromQL da regra de alerta. Uma expressão PromQL pode retornar várias séries temporais, e o ARMS seleciona aquela que corresponde com base em seus rótulos.
Por exemplo, se cpu_usage > 80 retornar séries temporais com os rótulos pod_name e container, a consulta _aliyun_display_promql também deve retornar séries temporais que incluam ambos os rótulos. Se os rótulos forem diferentes, o ARMS não conseguirá correlacionar os resultados e o gráfico não será renderizado.
Para solucionar o problema:
Execute a consulta
_aliyun_display_promqle a expressão PromQL da regra de alerta separadamente no editor de consultas do Prometheus.Compare os conjuntos de rótulos das séries temporais retornadas.
Ajuste a expressão
_aliyun_display_promqlpara que seus rótulos de resultado correspondam aos da regra de alerta.