Skip to content
Oznog

2.5 · monitoring and alerting · as-is

Building a dead-man's switch that only proves itself by being killed

date
20260906 to 20260911
what happened
Between 20260906 and 20260911 the alerting path was deliberately placed so it could survive the failure of the thing it watches. The notification server went on a different host from the primary storage server, and a permanent heartbeat alert was set to page if it ever went quiet. A live test, stopping the metrics engine and timing the page, proved it worked.
what it cost
Nothing; this was built ahead of an incident. The measured response time came in at 13 minutes 5 seconds against an intended 10, a gap that as of 20260920 has not been closed.
what changed
A separate notification host on separate hardware; a permanent heartbeat alert whose only job is proving the alerting pipeline is alive; a second, independent heartbeat for a device that sits behind a one-way network boundary and can only push.
the check now
Stop the metrics engine, time the page. Repeat after any change to the timing settings on either side.

The design rule is one sentence: an alarm that travels through the machine it watches is not an alarm. The day before the founding brief was written, the primary storage server had been dark for hours with nothing said. So the notification server was deliberately put on a different host, and the alerting engine was set to post a permanent heartbeat alert to it every minute. If that heartbeat stops arriving for about ten minutes, the notification host pages on its own, without needing anything from the fleet’s metrics stack.

Then the team killed it to see. Stopping the metrics engine and timing the page produced a working alarm, but at 13 minutes 5 seconds rather than the intended 10. A delayed-resend setting on the alerting side had kept the heartbeat’s last known value alive for three minutes after it had actually stopped. That number is 30 per cent over target and only a live test would ever have produced it; reading the configuration would not have.

The second piece is for anything that can push data out but can never be reached to be asked how it is. A canary device sitting behind a one-way network boundary can report a problem, but it can never report its own death, because death looks exactly like having nothing to say. Anything in that position needs its own separate heartbeat watched from the other side of the boundary.

Two things to take away. Put the watcher of the watcher on different hardware and a different power feed, or the alarm and the failure can die together. And treat an untested dead-man’s switch as a design document until it has proved itself by being killed.

Source: node0 lessons v0.1, lesson 2.5. Sanitized: checklist v0.1, 20260921; hostnames, addresses; voice pass 20260921. Part of oznog.com/node0.