POST assinada pela Stealth. Proprietários e Administradores gerenciam os webhooks em Integrações > Notificações. Uma organização pode ter até 10.
Como funciona
- Depois de cada verificação, cada evento de incidente que passa pelas regras da organização (eventos, gravidade mínima e exceções) e pelo filtro do próprio webhook (gravidade mínima e eventos) é enviado ao webhook.
- Os eventos são
opened(Nova queda),escalated(Queda piorou) eresolved(Normalizou). Uma piora vinda de abaixo da gravidade mínima do webhook chega comoopened, porque é a primeira vez que o webhook fica sabendo do incidente. - Cada evento é uma requisição, e as requisições para um mesmo webhook saem em ordem. Os webhooks nunca esperam o resumo diário.
- Os eventos por hora vêm da verificação regular de cada hora. Uma verificação pedida com Verificar agora pode enviar eventos das regras diárias.
Passo a passo
1
Prepare o endpoint
O endpoint precisa usar
https:// na porta padrão (443) com certificado válido, ter um nome de host público e responder com 2xx em até 5 segundos. Endereços IP, localhost, nomes sem ponto e sufixos internos como .local e .internal são recusados. Usuário ou senha na URL são recusados. Um token no caminho ou na query é aceito.2
Adicione o webhook
Vá em Integrações > Notificações e escolha Adicionar webhook. Preencha Nome e URL do endpoint, escolha a Gravidade mínima (Só Crítico, Crítico e Atenção ou Todas as gravidades) e os Eventos (Nova queda, Queda piorou, Normalizou), e escolha Salvar.
3
Copie o segredo de assinatura
A Stealth mostra o Segredo de assinatura (ele começa com
whsec_) uma única vez. Copie para o seu gerenciador de segredos. Para trocá-lo depois, remova o webhook e adicione de novo.4
Envie um teste
Escolha Enviar teste. A Stealth envia o exemplo abaixo com
"test": true e a sua própria organização, numa única tentativa, sem novas tentativas. O incident.url aponta para um incidente que não existe. O teste também funciona num webhook pausado, e dá para enviar um a cada 10 segundos. O resultado aparece numa mensagem e em Envios.5
Confira a assinatura no seu código
Recuse toda requisição cuja assinatura não confere, como mostra Conferir a assinatura.
Requisição
Corpo (versão v1)
payload.json
Campos novos podem entrar na
v1 a qualquer momento, então ignore os campos que você não conhece. Renomear ou remover um campo exige uma v2, anunciada no histórico de mudanças.
Conferir a assinatura
Stealth-Signature é t=<segundos unix>,v1=<hex>, em que o hex é o HMAC-SHA256 de <t>.<corpo bruto>, com o segredo de assinatura do webhook como chave (a string inteira, incluindo whsec_).
- Leia o corpo bruto antes de interpretar o JSON.
- Calcule o HMAC e compare em tempo constante.
- Recuse um
tcom mais de 5 minutos de diferença do seu relógio, para bloquear repetições.
verify.js
verify.py
Respostas, tentativas e pausa
- Responda com qualquer
2xxem até 5 segundos. Se o seu processamento demora mais, responda primeiro e processe depois. - A Stealth tenta até 3 vezes, esperando 1 segundo e depois 3 segundos, após um timeout, um erro de rede,
408,429ou um5xx. Qualquer outra resposta falha na hora. Redirecionamentos nunca são seguidos, e o corpo da resposta nunca é lido. - Quando um envio falha em todas as tentativas, os outros eventos daquela verificação não são enviados a esse webhook e aparecem como Não enviado no histórico. Eventos que falharam não são reenviados depois.
- Cada webhook tem até 60 segundos de cada verificação. Quando esse tempo acaba, os envios que ainda esperavam aparecem como Não enviado, com uma nota de que o tempo acabou. Eles não contam como falha e não são reenviados.
- Um webhook é pausado quando está falhando há 24 horas e pelo menos 3 verificações falharam nesse período. Todos os membros da organização recebem um aviso no app e por e-mail, e Proprietários e Administradores recebem o link para retomar. Um envio que funciona, ou um Enviar teste que recebe
2xx, zera a contagem. Os eventos que acontecem enquanto ele está pausado não são guardados. Escolha Retomar quando o endpoint voltar a funcionar.
O que você vê na tela
Cada webhook em Integrações > Notificações mostra a situação (Ativo ou Pausado) e, quando está falhando, desde quando. Envios mostra os últimos 20 envios: Entregue, Falhou ou Não enviado, com o status HTTP, as tentativas e a duração. A Stealth guarda o resultado, nunca o conteúdo. Uma verificação acrescenta no máximo 10 linhas Não enviado por webhook. O menu da linha tem Editar, Pausar ou Retomar, e Remover. Remover um webhook o interrompe na hora e apaga o histórico de envios.Como a Stealth protege as requisições que envia
Um webhook faz os servidores da Stealth enviarem uma requisição para um endereço que você escolhe, por isso a Stealth limita para onde essa requisição pode ir:- Só
https, só a porta 443, e o certificado precisa ser válido. - Nada de endereços IP nem de nomes privados ou internos.
- Redirecionamentos nunca são seguidos, e o corpo da resposta nunca é lido.
- O endereço é conferido quando você salva e de novo antes de cada envio.
Perguntas frequentes
Como evito processar o mesmo evento duas vezes?
Como evito processar o mesmo evento duas vezes?
Use o campo
id. Ele se repete em todas as tentativas e em todos os webhooks da organização.Posso mandar os alertas para o Slack, o Microsoft Teams ou o Discord?
Posso mandar os alertas para o Slack, o Microsoft Teams ou o Discord?
Não diretamente. Aponte o webhook para um pequeno serviço ou uma ferramenta de automação que receba a requisição, confira a assinatura e publique a mensagem no seu chat.
O webhook traz a leitura da origem da demanda?
O webhook traz a leitura da origem da demanda?
Não. A versão
v1 traz os campos listados acima. A leitura aparece no painel e no e-mail de abertura dos incidentes diários.
