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.
Serverless glue that keeps the homelab honest — health checks every 15 minutes and dedup that stops alert storms.
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.
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.
Decision
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
over firing webhooks directly
A queue lets the processor deduplicate and rate-limit, which is what actually stops alert storms.
Decision
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.