En webhook-kanal sender JSON med POST til en URL, du vælger, når en monitor går ned eller kommer op igen, og ved andre alarmer som langsomme svar, certifikater, der er ved at udløbe, og ændrede DNS-records. Hver request er signeret, så dit endpoint kan tjekke, at den virkelig kommer fra Uptimecheck.
Tilføj webhooken
Åbn Alert channels i sidepanelet, og vælg Add channel.Vælg Webhook, og angiv Endpoint URL.Vælg Add channel, og kopiér den signeringsnøgle, der vises. Den vises kun én gang.Vælg Send test for at sende et testkald.
Verificér signaturen
Hver request har to headers:
x-uptimecheck-timestamp: Unix-tid i sekunder for, hvornår requesten blev signeret.x-uptimecheck-signature: sha256= efterfulgt af den hexkodede HMAC-SHA256 af tidsstemplet, et punktum og den rå body, med kanalens signeringsnøgle som nøgle.
Beregn den samme værdi ud fra den rå body, før du parser den, sammenlign i konstant tid, og afvis gamle tidsstempler. 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 og alle felter i payloaden finder du i API-dokumentationen.
Godt at vide
Svar med en hvilken som helst 2xx-status inden for 10 sekunder. Alt andet bliver forsøgt igen fire gange mere, efter 30 s, 2 min, 10 min og 30 min.Feltet event fortæller, hvad der skete, fx monitor.down, monitor.up, monitor.slow, certificate.expiring eller dns.changed. API-referencen viser alle events og hvordan du verificerer signaturen.Brug HTTPS, og udfør langsomt arbejde, efter du har svaret.
Se alle alarmkanaler, eller automatisér opsætningen med REST API’et.