Un canal webhook envoie du JSON en POST à l’URL de votre choix quand un moniteur tombe ou se rétablit, ainsi que pour d’autres alertes comme les réponses lentes, les certificats sur le point d’expirer et les enregistrements DNS modifiés. Chaque requête est signée, pour que votre endpoint puisse vérifier qu’elle provient bien d’Uptimecheck.
Ajouter le webhook
Ouvrez Alert channels dans la barre latérale et choisissez Add channel.Sélectionnez Webhook et saisissez l’Endpoint URL.Choisissez Add channel et copiez le secret de signature qui s’affiche. Il n’apparaît qu’une seule fois.Choisissez Send test pour envoyer un appel de test.
Vérifier la signature
Chaque requête comporte deux en-têtes :
x-uptimecheck-timestamp : l’heure Unix, en secondes, à laquelle la requête a été signée.x-uptimecheck-signature : sha256= suivi du HMAC-SHA256 en hexadécimal du timestamp, d’un point et du corps brut, avec le secret de signature du canal comme clé.
Calculez la même valeur à partir du corps brut avant de le parser, comparez en temps constant et rejetez les timestamps trop anciens. En Node.js :
import { createHmac, timingSafeEqual } from « node:crypto »;
export function isFromUptimecheck(rawBody, headers, secret) {
const timestamp = headers[« x-uptimecheck-timestamp »] ?? « »;
const signature = headers[« x-uptimecheck-signature »] ?? « »;
const expected = « sha256= » + createHmac(« sha256 », secret).update(`${timestamp}.${rawBody}`).digest(« hex »);
const fresh = Math.abs(Date.now() / 1000 – Number(timestamp)) < 300;
return fresh && signature.length === expected.length && timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}
Une version Python et tous les champs du payload figurent dans la documentation de l’API.
Bon à savoir
Répondez avec n’importe quel statut 2xx en moins de 10 secondes. Sinon, la requête est renvoyée quatre fois de plus, après 30 s, 2 min, 10 min et 30 min.Le champ event indique ce qui s’est passé, par exemple monitor.down, monitor.up, monitor.slow, certificate.expiring ou dns.changed. La référence de l’API liste tous les événements et montre comment vérifier la signature.Utilisez HTTPS, et effectuez les traitements longs après avoir répondu.
Découvrez tous les canaux d’alerte, ou automatisez la configuration avec l’API REST.