Canal Webhook

Canal d'alerte Webhook

Le canal webhook permet à LoadFocus d'envoyer une requête HTTP POST avec un corps JSON vers l'URL de votre choix lorsqu'une vérification surveillée change d'état. C'est le canal le plus flexible : tout ce qui accepte les webhooks JSON entrants — PagerDuty Events API, Opsgenie, Zapier, n8n, Make ou votre propre service — peut recevoir les alertes LoadFocus.

Créer un canal webhook

  1. Allez dans les Alert Settings et cliquez sur + New Alert Channel.
  2. Choisissez Webhook.
  3. Donnez un nom (affiché dans la liste des canaux) et collez l'URL HTTPS qui recevra le POST.
  4. Cliquez sur Save Configuration, activez le canal sur une vérification et choisissez les événements qu'il recevra avec les pastilles de routage par canal.

Quand LoadFocus appelle votre webhook

LoadFocus envoie un POST à votre URL pour ces événements :

Événementvaleur eventQuand il se déclenche
Vérification échouéecheck.failedUne vérification passe en échec (assertion, erreur ou timeout).
Vérification rétabliecheck.recoveredUne vérification précédemment en échec repasse au vert.
Vérification dégradéecheck.degradedLe temps de réponse dépasse le seuil de dégradation sans échouer.
Expiration SSLssl.expiry14, 7 et 3 jours avant l'expiration d'un certificat HTTPS surveillé, et le jour de l'expiration.
TesttestVous cliquez sur le bouton Test à côté du canal.

Les pastilles Fail / Recover / Degraded / SSL sous le canal, sur la page d'édition de la vérification, déterminent lesquels de ces événements atteignent un canal. Tous sont activés par défaut.

Payload

Le corps du POST est application/json :

{
"source": "loadfocus",
"event": "check.failed",
"check": {
"id": "75be9e45e858177eea4a18bbdc765472",
"name": "Designerbox",
"url": "https://designerbox.ai"
},
"status": "failed",
"location": "us-east-1",
"timestamp": "2026-06-07T12:00:00.000Z"
}

Référence des champs :

  • source — toujours loadfocus. Utilisez-le pour reconnaître l'émetteur.
  • event — l'un de check.failed, check.recovered, check.degraded, ssl.expiry, test.
  • check.id / check.name / check.url — le moniteur qui a déclenché l'alerte.
  • status — le statut de la vérification à l'envoi (failed, passed, degraded ou null pour SSL/test).
  • location — la région AWS d'où la vérification a été exécutée.
  • timestamp — heure ISO-8601 UTC de l'événement.

Les événements d'expiration SSL ajoutent un objet details :

{
"source": "loadfocus",
"event": "ssl.expiry",
"check": { "id": "...", "name": "...", "url": "https://..." },
"status": null,
"location": null,
"timestamp": "2026-06-07T12:00:00.000Z",
"details": { "daysRemaining": 7, "validTo": "Aug 29 23:59:59 2026 GMT" }
}

Sécurité et prérequis

  • HTTPS uniquement. Les URLs de webhook doivent commencer par https://. Les URLs http sont rejetées.
  • Les adresses privées sont bloquées. Pour empêcher le server-side request forgery, LoadFocus résout votre nom d'hôte et n'appelle pas les adresses privées, loopback, link-local ou CGNAT (par exemple 10.0.0.0/8, 127.0.0.1, 169.254.0.0/16, 192.168.0.0/16). Votre endpoint doit être accessible sur l'internet public.
  • Pas de redirections. LoadFocus ne suit pas les redirections HTTP sur les appels webhook — pointez le canal vers l'URL finale.
  • Timeout. Chaque appel expire après 10 secondes. Il n'y a pas de relance automatique, votre récepteur doit donc accepter et mettre en file la payload rapidement.
  • Vérifiez que ça marche. Utilisez le bouton Test pour envoyer un événement test avant de compter sur le canal. Un service gratuit comme webhook.site permet d'inspecter la payload exacte.

Exemples d'intégration

  • PagerDuty — pointez le canal vers votre URL d'intégration Events API v2 et n'y routez que check.failed (désactivez Recover/Degraded/SSL) pour ouvrir des incidents sur échec.
  • Opsgenie — utilisez une intégration inbound API ; mappez check.failed sur alert-create et check.recovered sur alert-close.
  • Zapier / Make / n8n — démarrez un workflow via un trigger "Catch Hook" et branchez sur le champ event.
  • Votre propre service — acceptez le POST, vérifiez source === "loadfocus" et agissez selon event.

Voir aussi

  • Canaux d'alerte — vue d'ensemble de tous les types de canaux et du routage des événements par canal.