En webhook-kanal skickar JSON med POST till en URL du väljer när en monitor går ner eller återhämtar sig, och vid andra larm, som långsamma svar, certifikat som snart går ut och ändrade DNS-poster. Varje förfrågan är signerad, så att din endpoint kan kontrollera att den verkligen kommer från Uptimecheck.
Lägg till webhooken
Öppna Alert channels i sidomenyn och välj Add channel.Välj Webhook och ange Endpoint URL.Välj Add channel och kopiera signeringsnyckeln som visas. Den visas bara en gång.Välj Send test för att skicka ett testanrop.
Verifiera signaturen
Varje förfrågan har två headers:
x-uptimecheck-timestamp: Unix-tid i sekunder när förfrågan signerades.x-uptimecheck-signature: sha256= följt av den hexkodade HMAC-SHA256 av tidsstämpeln, en punkt och den råa bodyn, med kanalens signeringsnyckel som nyckel.
Beräkna samma värde från den råa bodyn innan du parsar den, jämför i konstant tid och avvisa gamla tidsstämplar. I 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));
}
En Python-version och alla fält i payloaden finns i API-dokumentationen.
Bra att veta
Svara med valfri 2xx-status inom 10 sekunder. Allt annat görs om fyra gånger till, efter 30 s, 2 min, 10 min och 30 min.Fältet event anger vad som hände, till exempel monitor.down, monitor.up, monitor.slow, certificate.expiring eller dns.changed. API-referensen listar alla händelser och visar hur du verifierar signaturen.Använd HTTPS, och gör tungt arbete först efter att du har svarat.
Se alla larmkanaler, eller automatisera uppsättningen med REST API:et.