Sluicio v0.11.64
A health check can now alert when a metric goes silent
A metric check only ever fired on a value it measured. That is the right default - plenty of metrics report only when something happens, and alerting on their silence would page constantly - but it leaves a gap exactly where it matters most.
A synthetic HTTP probe exists to keep reporting. When the collector or the probe itself dies, the series simply stops, and to the evaluator "the endpoint is fine" and "nothing is watching the endpoint any more" looked identical.
Metric checks now offer "Also alert if this metric stops reporting", in both the health-check editor and the metrics alert builder. A window with no data at all counts as unhealthy.
How it behaves
- Off by default, and off changes nothing. Existing checks behave exactly as before.
- It starts watching once the check has seen data at least once. Saving a check before its exporter is deployed will not alert you - the condition is "stops reporting", and something that never started has not stopped. The trade-off is that a metric which never arrives at all stays quiet.
- The alert never quotes a value it did not measure. It reads "queue.depth stopped reporting (no data for 5m)", and notifications show the value as
n/arather than0. Zero is a plausible reading for most metrics, so showing it would be indistinguishable from a real measurement. - On a check broken down by attribute, this detects the metric going silent entirely. A single attribute value disappearing cannot be detected, because there is no record of which values are meant to exist - only which ones reported.
Two related fixes
- An open alert whose metric went quiet used to resolve with "recovered to 0.00", claiming a recovery that was never measured. It now says the metric stopped reporting.
- A check that moves between "breaching the threshold" and "stopped reporting" while its alert stays open now updates its summary, instead of keeping whichever condition first opened it.
Detecting absence elsewhere
This completes the picture across the three signals. Log checks already have it - set the comparison to fewer than and zero matching logs is the breach, which expresses "no heartbeat log in the last hour". Traces have the low-traffic check, which fires precisely because a service went quiet.