export default monitor({
name: "Production API",
interval: "1m",
timeout: "10s",
alerts: [
{
id: "api-critical",
name: "API Critical Failure",
condition: { consecutiveFailures: 3 },
channels: ["pagerduty", "slack"],
severity: "critical",
escalateAfterMs: 300_000,
regionThreshold: "majority",
},
{
id: "api-degraded",
name: "API Degraded Performance",
condition: { latencyAboveMs: 2000, forChecks: 5 },
channels: ["slack"],
severity: "warning",
},
{
id: "api-recovery",
name: "API Recovered",
condition: { consecutiveSuccesses: 2 },
channels: ["slack"],
severity: "info",
},
],
async handler() {
const start = Date.now();
const res = await fetch("https://api.example.com/health");
return {
status: res.ok ? "up" : "down",
responseTime: Date.now() - start,
statusCode: res.status,
};
},
});