EST. 2021  •  OSLO, NORWAY

Skui.io

Homelab & Self-Hosting

← Back
homelab

Three Monitors, One Truth

I took Nextcloud down on purpose at 1 AM — and watched three monitoring systems that don't know each other agree about it, open a ticket, and light up my phone.

Three Monitors, One Truth

The outage I caused on purpose

At one in the morning I stopped my Nextcloud stack. Deliberately — 200 GB of photos were moving into proper ZFS datasets so they could finally live under snapshots and replication. Planned downtime, one user affected (me), nothing dramatic.

Then I sat back and watched, because this was also something else: a free, live-fire test of every monitoring system I run. Nobody was told. Nothing was silenced. Whatever happened next would be the truth about my observability.

What happened next

Within a minute, ethica.no’s container monitoring saw the nc-app container exit. The public status page flipped to “Some systems are down” with Nextcloud offline — and the service desk opened an incident ticket on its own, with the alert mail threading straight into it. The full ITSM loop, fired by a docker ps nobody was watching.

On this site’s front page, the Homelab Status widget — fed by a tiny collector that pushes snapshots of container state — switched to “1 service down · Nextcloud: exited”. Anyone visiting the blog at 2 AM got the honest version of my basement.

And in snapshoot, the layer underneath told its part of the story: the new datasets appeared on the dashboard fifteen minutes after I created them, correctly yellow — “no snapshots reported”. When the first replication of the new data started, the pair auto-linked mid-transfer and the phone buzzed: replica has no snapshots — true, because the transfer wasn’t done yet.

Three systems. Three different layers — service, container, data. Zero shared code, zero shared config, no system aware the others exist.

They all agreed.

Why agreement matters

Any single monitor can lie to you. A green dashboard might mean “everything works” — or “the checker is broken”, “the alert rule was never wired up”, “someone silenced it in 2024”. You can’t tell from inside that one system. This is the monitoring version of a single witness: believable, but uncorroborated.

Independent witnesses change that. My container monitor, my front-page widget and my snapshot guardian observe the world through different mechanisms, on different hosts, written at different times. When they agree — down is down, up is up — each one corroborates the others. And when they ever disagree, that disagreement is itself the alert: one of my witnesses has gone unreliable, and I know which layer to go look at.

I didn’t design this as an architecture. It accumulated, one small honest tool at a time. But the property it produces — cross-checkable truth — is exactly what you want and exactly what a single pane of glass can’t give you.

Planned downtime is a free fire drill

Here’s the habit I’m taking away: every piece of planned maintenance is a no-cost test of your entire alerting chain. The stack was down anyway — the only question was whether my systems would notice, in order, at the right layers, all the way to my pocket. They did: status page, auto-ticket, front-page widget, push notification. If any link had stayed quiet, I’d have found a dead alert path for free, at 1 AM, with zero stakes — instead of during a real incident, with all of them.

Most people find out their alerting is broken during the outage that mattered. You can find out during one that didn’t.

The morning after

When the migration finished and the stack came back, the whole thing unwound by itself: containers healthy, status page green, ticket resolved, widget back to “All Systems Operational”, datasets green with their first snapshots — and eventually, a restore drill proving the photos are not just copied but readable.

Total human effort on the monitoring side, from outage to all-clear: zero. That’s the standard now.


How many independent witnesses does your infrastructure have — and when did they last agree on something while you watched? If you can’t remember, your next planned maintenance window is a free chance to find out. You know where to find me.