Skip to content
Oznog

2.7 · monitoring and alerting · after redaction

A monitoring tool with zero monitors configured

date
20260907 to 20260909
what happened
An audit run between 20260907 and 20260909, after a week of building infrastructure monitoring, found that almost everything built watched hosts, disks, switches and the storage cluster, and almost nothing watched the services those systems exist to provide. Of the running application containers, only a handful had any check at all, and a previously deployed uptime-monitoring tool that looked like service coverage was running with no monitors configured in it.
what it cost
An unbounded gap, because any of the unwatched services could have failed completely, and the only visible symptom would have been its log stream going quiet in a system nobody was reading for that purpose.
what changed
A named, three-state coverage catalogue for every service the site provides, and the abandoned uptime tool was removed rather than left running as a false signal of coverage.
the check now
The coverage catalogue is updated in the same change that adds any service, because a service consciously left unmonitored and one nobody thought of look identical six months later unless the decision is written down.

After a week spent building infrastructure monitoring quickly and under pressure, the team stopped and audited what was actually covered. The answer was uncomfortable. Hosts, disks, switches and the storage cluster were well watched, and the services those machines exist to run were almost entirely unwatched. Only a handful of the running application containers had any check at all. Worse, an uptime-monitoring tool deployed some time earlier, which from the outside looked exactly like service coverage, turned out to have no monitors configured inside it. It was running, healthy, and checking nothing.

A tool that looks like it is doing a job and is not is more dangerous than no tool, because it changes what people believe they can rely on. The zero-monitor case is the sharpest example here, but the broader finding is the one that generalises. Building monitoring for the infrastructure a service runs on tells you nothing about whether the service is doing its job. It is entirely possible to spend weeks building solid infrastructure monitoring while the actual product is silently broken the whole time.

The fix was a catalogue with three states for every service: answered by its own application-level question, probed with a body check by decision, or port-only and absent with the reason recorded. The surviving discipline is never “is the port open” or “is the process running”, always “ask the service its own question and check the answer”.

The same pass produced a second rule worth lifting out on its own. For anything that accumulates a lifetime failure count, alert on the change over a fixed window, never on the running total, because a cumulative counter never returns to zero and an alert on its raw value pages forever until someone silences it and stops reading the next one too.

Source: node0 lessons v0.1, lesson 2.7. Sanitized: checklist v0.1, 20260921; container counts, service names; voice pass 20260921. Part of oznog.com/node0.