O Grafana oferece uma interface gráfica para gerenciar alertas. Adicione um ponto de contato no Grafana para enviar alertas ao sistema de alertas do Log Service. Esse sistema processa os alertas recebidos, remove ruídos e envia notificações. Se a sua versão do Grafana for 8.0 ou superior, siga as instruções deste tópico.
Pré-requisitos
Crie um aplicativo de ingestão de alertas. Para mais informações, consulte
Configurar URLs de webhook para ingestão de alertas
.
Configure o Grafana
Faça login no console do Grafana.
-
Crie um ponto de contato.
No painel de navegação à esquerda, escolha e clique em New contact point.
-
Na página Create contact point, configure os seguintes parâmetros.
Parâmetro
Descrição
Name
Nome do ponto de contato.
Contact point type
Tipo do ponto de contato. Selecione webhook.
Url
URL do ponto de contato. Neste exemplo, insira a URL completa do webhook gerada após criar um serviço e um aplicativo de ingestão de alertas no sistema de ingestão do Log Service. Para mais detalhes, consulte Obter URLs de webhook.
Clique em Save contact point.
-
Adicione o ponto de contato a uma política de notificação.
Adicione o ponto de contato à política de notificação raiz ou crie uma rota e associe-o a ela. Neste exemplo, adicione o ponto de contato à política de notificação raiz.
Clique em Notification policies.
Na seção Root policy - default for all alerts, clique em Edit.
Na lista Default contact point, selecione o ponto de contato criado na etapa 2.
Clique em Save.
Alertas do Grafana
O código abaixo apresenta um exemplo de alerta do Grafana:
{
"receiver": "http",
"status": "firing",
"alerts":
[
{
"status": "firing",
"labels":
{
"alertname": "test"
},
"annotations":
{
"description": "test alert",
},
"startsAt": "2022-02-17T21:44:07.106902+08:00",
"endsAt": "0001-01-01T00:00:00Z",
"generatorURL": "http://localhost:3000/alerting/abcd/edit",
"fingerprint": "65d7bbdb01ce6c93",
"silenceURL": "http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dtest",
"dashboardURL": "",
"panelURL": "",
"valueString": "[ metric='go_threads{instance=\"prometheus\", job=\"prometheus\"}' labels={__name__=go_threads, instance=prometheus, job=prometheus} value=15 ]"
}
],
"groupLabels":
{},
"commonLabels":
{
"alertname": "test"
},
"commonAnnotations":
{
"description": "test alert",
},
"externalURL": "http://localhost:3000/",
"version": "1",
"groupKey": "{}/{alertname=\"test\"}:{}",
"truncatedAlerts": 0,
"orgId": 1,
"title": "[FIRING:1] (test)",
"state": "alerting",
"message": "**Firing**\n\nValue: [ metric='go_threads{instance=\"prometheus\", job=\"prometheus\"}' labels={__name__=go_threads, instance=prometheus, job=prometheus} value=15 ]\nLabels:\n - alertname = test\nAnnotations:\n - description = test alert\nSource: http://localhost:3000/alerting/abcd/edit\nSilence: http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dtest\n"
}
Mapeamento de campos
Ao ingerir um alerta do Grafana no Log Service, o sistema converte o alerta para o formato nativo com base no mapeamento de campos. O exemplo a seguir mostra a estrutura de um alerta no Log Service:
{
"aliuid": "{The ID of the Alibaba Cloud account to which the alert ingestion application belongs}",
"alert_instance_id": "{The alert instance ID that is automatically generated}",
"alert_id": "test",
"alert_type": "sls_pub",
"alert_name": "test",
"region": "{The region of the project to which Alert Center belongs}",
"project": "{The project to which Alert Center belongs}",
"project_id": 0,
"next_eval_interval": 0,
"alert_time": 1645607565,
"fire_time": 1645105447,
"fire_results": null,
"fire_results_count": 0,
"resolve_time": 0,
"status": "firing",
"results": null,
"labels":
{},
"annotations":
{
"__config_app__": "sls_pub_alert",
"__pub_alert_app__": "{The ID of the alert ingestion application}",
"__pub_alert_protocol__": "grafana8",
"__pub_alert_region__": "{The region of the endpoint to which the alert is sent}",
"__pub_alert_service__": "{The ID of the alert ingestion service}",
"desc": "test alert",
"fingerprint": "65d7bbdb01ce6c93",
"silenceURL": "http://localhost:3000/alerting/silence/new?alertmanager=grafana&matchers=alertname%3Dtest",
"valueString": "[ metric='go_threads{instance=\"prometheus\", job=\"prometheus\"}' labels={__name__=go_threads, instance=prometheus, job=prometheus} value=15 ]"
},
"severity": 6,
"policy":
{
"alert_policy_id": "{The alert policy that is specified for the alert ingestion application}",
"action_policy_id": "{The action policy that is specified for the alert ingestion application}",
"use_default": false,
"repeat_interval": "{The repeat interval that is specified for the alert ingestion application}"
},
"template": null,
"drill_down_query": "http://localhost:3000/alerting/abcd/edit",
}
A tabela a seguir detalha o mapeamento entre os campos dos alertas do Grafana e do Log Service.
| Log Service | Grafana | Descrição |
| aliuid | N/A | ID da conta Alibaba Cloud associada ao aplicativo de ingestão de alertas. |
| alert_id | alertname | ID da regra de alerta. Se o campo labels da mensagem de alerta do Grafana contiver o campo alertname, o valor de alert_id corresponderá ao valor desse campo. Caso contrário, ficará vazio. |
| alert_type | N/A | Tipo do alerta. Valor fixo: sls_pub. |
| alert_name | alertname | Nome da regra de alerta. Quando o campo labels da mensagem do Grafana inclui alertname, o campo alert_name assume esse valor e o campo original é removido. Na ausência dele, permanece vazio. |
| status | status | Status atual do alerta. |
| next_eval_interval | N/A | Intervalo de avaliação do alerta. Valor fixo: 0. |
| alert_time | N/A | Timestamp que indica quando o Log Service recebeu o alerta do Grafana. |
| fire_time | startsAt | Momento em que o alerta disparou. |
| resolve_time | endsAt | Momento em que o alerta foi resolvido. Se o status na mensagem do Grafana for firing, o valor de resolve_time será 0. Caso contrário, assumirá o timestamp correspondente a endsAt. |
| labels | labels | Rótulos do alerta. Tags adicionadas durante a configuração de Information Processing na criação do aplicativo de ingestão são incorporadas ao campo labels. |
| annotations | annotations | annotationsAnotações do alerta. As anotações originais do Grafana são preservadas e os seguintes campos são adicionados:
Anotações definidas em Information Processing durante a criação do aplicativo de ingestão também são adicionadas ao campo annotations. |
| severity | severity | Gravidade do alerta. Nota annotationslabelsseverityO Log Service mapeia o valor do campo de annotations ou labels do Grafana para um nível de gravidade nativo. Se o campo severity não for encontrado em nenhum dos dois locais, a gravidade padrão será Média. Para mais informações, consulte Gravidade do alerta. |
| policy | N/A | Política de alerta configurada no aplicativo de ingestão. Para mais detalhes, consulte Estrutura da política. |
| project | N/A | Projeto do Log Service que contém o Alert Center. Para mais informações, consulte Projeto. |
| drill_down_query |
|
URL para acessar detalhes do alerta no Grafana.
Ao clicar na URL, você acessa a página de gerenciamento de alertas do Grafana, onde as mensagens correspondentes ao conteúdo do campo groupLabels aparecem automaticamente. |