Você pode configurar o Cloud Manager para enviar notificações de alerta para um endpoint de webhook como solicitações HTTP POST para processamento programático. Os webhooks permitem integrar alertas do Cloud Manager a sistemas de monitoramento personalizados, plataformas de gerenciamento de instâncias ou fluxos de trabalho de automação.
Acesso necessário
Para integrar o Cloud Manager aos webhooks, você deve ter acesso Project Monitoring Admin ao projeto.
Configurar uma integração de Webhook
No MongoDB Cloud Manager, váGo para a Project Settings página.
Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.
Se ainda não estiver exibido, selecione o projeto desejado no menu Projects na barra de navegação.
Na barra lateral, clique em Project Settings.
A página Configurações do projeto é exibida.
Acesse a página Project Integrations.
Na barra lateral, clique em Integrations sob o título Settings.
A página Integrações de projeto é exibida.
Para enviar alertas para o seu webhook, configure as notificações de alerta. Para saber mais, consulte Definir configurações de alerta.
Cabeçalhos de solicitação
O Cloud Manager inclui os seguintes cabeçalhos HTTP com cada solicitação de webhook:
O Cloud Manager adiciona um cabeçalho de solicitação chamado X-MMS-Event para distinguir entre vários estados de alerta. Os valores possíveis para este cabeçalho são:
| O alerta acabou de ser aberto. |
| O alerta foi resolvido. |
| Um alerta aberto anteriormente ainda está aberto. |
| O alerta foi reconhecido. |
| O alerta tornou-se inválido e foi cancelado. |
| Representa um alerta informativo, que é um evento pontual, como "Primário eleito". |
Se você especificar uma chave no campoWebhook Secret, o MongoDB Cloud Manager adicionará o cabeçalho de solicitação X-MMS-Signature. Esse cabeçalho contém a assinatura HMAC-SHA-1 codificada de base64 do corpo da solicitação. O MongoDB Cloud Manager cria a assinatura usando o segredo fornecido.
Corpo da solicitação
O corpo da solicitação contém um documento JSON que usa o mesmo formato que o recurso de alertas da API do Cloud Manager . A carga útil inclui campos principais, como:
id: Identificador exclusivo para o alerta.eventTypeName: Tipo de evento que acionou o alerta.created: Carimbo de data/hora quando o alerta foi criado.status: status atual do alerta (por exemplo,OPEN,CLOSED).humanReadable: Descrição legível por humanos do alerta.
Para obter uma lista completa de campos, consulte a documentação do endpoint Get One Alert.
Exemplo de carga útil de webhook
O exemplo a seguir mostra uma amostra de carga útil do webhook para um alerta de limite de métrica :
{ "id": "5d1b6f8e8c2e4e2d3c4a5b6c", "groupId": "5d1b6f8e8c2e4e2d3c4a5b6d", "eventTypeName": "OUTSIDE_METRIC_THRESHOLD", "status": "OPEN", "created": "2024-01-15T10:30:00Z", "updated": "2024-01-15T10:30:00Z", "lastNotified": "2024-01-15T10:30:00Z", "humanReadable": "Disk space used on data partition is 95.2%.", "metricName": "DISK_PARTITION_SPACE_USED_DATA", "currentValue": { "number": 95.2, "units": "RAW" } }
Personalizar modelos de webhook
Você pode personalizar os cabeçalhos de solicitação do webhook e o conteúdo do corpo definindo os campos webhookHeadersTemplate e webhookBodyTemplate na notificação do webhook. Cada modelo suporta interpolação ${field}: o Cloud Manager substitui cada espaço reservado ${field} pelo valor do campo correspondente do documento de alerta quando envia a notificação.
Você pode interpolar qualquer campo que o documento de alerta retorne, como ${eventTypeName}, ${clusterName}, ${status} e ${created}. Para obter a lista completa de campos que você pode interpolar, consulte os campos de resposta para o ponto de extremidade Obter um alerta.
Por exemplo, o modelo de corpo {"event": "${eventTypeName}", "cluster": "${clusterName}"} renderiza cada espaço reservado com seu valor de alerta antes que o Cloud Manager envie a solicitação.
O corpo renderizado deve ser JSON válido e é enviado com o cabeçalho Content-Type: application/json. Os cabeçalhos renderizados devem formar um objeto JSON que mapeie cada nome de cabeçalho para seu valor. O Cloud Manager não expõe o segredo do webhook ou o cabeçalho de assinatura a modelos e edita ambos os campos de modelo nas respostas da API.
Se um modelo falhar ao renderizar, exceder o limite de tamanho ou produzir uma saída inválida, o Cloud Manager enviará sua carga útil e cabeçalhos padrão e ainda entregará a notificação.
Para visualizar a saída renderizada antes de salvar o alerta, clique no botão Post test message to webhook, que renderiza seus modelos em relação aos dados de alerta de amostra.
Autenticar solicitações de Webhook
O campo Webhook Secret armazena um segredo que o Cloud Manager usa somente para gerar o cabeçalho X-MMS-Signature para verificação da solicitação. O Cloud Manager não envia o segredo diretamente como um cabeçalho de autenticação ou token de portador.
Se o ponto de extremidade do webhook exigir autenticação, você deverá lidar com ela de forma independente usando um dos seguintes métodos:
Parâmetros de query: Inclua credenciais de autenticação no Webhook URL como parâmetros de query. Por exemplo:
https://example.com/webhook?token=your-auth-tokenLista de acesso IP: configure seu endpoint do webhook para aceitar solicitações somente de endereços IP do Cloud Manager . Essa configuração garante que somente o Cloud Manager possa enviar solicitações para seu endpoint.
Proxy reverso ou gateway de API: use um proxy reverso ou gateway de API que lide com a autenticação antes de encaminhar solicitações para o endpoint do webhook.
Verificar solicitações de webhook
Para verificar se uma solicitação de webhook foi originada do Cloud Manager, valide o cabeçalho X-MMS-Signature:
Limitações
Ao usar integrações de webhook, considere as seguintes limitações:
Gravidade do alerta não incluída
A carga útil do webhook não inclui o nível de gravidade do alerta configurado no Cloud Manager. Para recuperar a gravidade configurada, faça uma chamada adicional para o endpoint Get One Alert Configuration usando o alertConfigId da carga útil do webhook.
Nenhum alerta de teste manual
O Cloud Manager não fornece uma maneira de acionar alertas de teste manualmente. Para testar o endpoint do webhook, você pode configurar temporariamente um alerta com condições fáceis de acionar, como:
Um limite baixo de espaço em disco em um sistema de teste.
Um limite de contagem de conexões que você pode trigger abrindo várias conexões.
Um limite de atraso de replicação em um conjunto de réplicas de teste.
Depois de confirmar que seu webhook está recebendo alertas corretamente, você pode excluir a configuração de alerta de teste.
Configuração de firewall
Se o firewall exigir que você configure uma lista de acesso IP, permita o acesso a partir de endereços IP do Cloud Manager para que o Cloud Manager possa se comunicar com o endpoint do webhook.
Solucionar problemas de entrega de webhook
Se o seu webhook não receber alertas: