Serverless · Azure

Azure Functions

Serverless glue that keeps the homelab honest — health checks every 15 minutes and dedup that stops alert storms.

15minhealth-check interval
5mindedup window
2functions
The problem

If the whole rack is down, in-cluster alerting can’t tell you

Monitoring that lives inside the cluster it monitors has a blind spot: when the node dies, so does the alerting. I needed an external, always-on watchdog that pings the homelab from outside and shouts if it goes dark.

The second problem was noise — a flapping service can fire the same alert dozens of times. So the processor needed deduplication before anything reached Discord.

Architecture

A timer, a queue, dedup, then notify

A timer-triggered function checks homelab endpoints every 15 minutes; incidents go onto a Service Bus topic; a processor deduplicates within a 5-minute window and routes clean alerts to Discord.

Key decisions

What I chose, and why

Decision

An external serverless watchdog

over in-cluster monitoring only

It runs off the homelab entirely, so a total node failure is exactly the case it can still report.

Decision

Service Bus between check and alert

over firing webhooks directly

A queue lets the processor deduplicate and rate-limit, which is what actually stops alert storms.

Decision

Pydantic validation

over trusting message shapes

Every Service Bus message is validated into a typed model, so a malformed event fails loudly instead of paging me at random.

Measured outcomes

The results

2Functions deployed
15minCheck interval
5minDedup window
$0Costfree tier