Problem
A failed or outdated query can look like a healthy value if the panel shows zero or silently keeps the last result.
Solution
Distinguish failed, missing, partial, and outdated data from a valid result. Never substitute zero for a failed query.
If the last known value is useful, keep it with a visible timestamp and stale label. Show gaps instead of implying continuous measurements where data is absent.
For partial results, say which sources or series are missing. Explain the next available action, such as retrying or checking the source. Keep the warning visible without requiring hover.
Use when
A panel loads data that can fail, arrive late, or be incomplete.
Don’t use when
There is no case for skipping it. The only real decision is loudness, and that scales with consequence: a degraded panel on a wallboard driving on-call decisions needs to be unmissable, while one on an exploratory page can be quieter.
Trade-offs
Warnings take space, and frequent failures can make people ignore them. Keeping old values supports continuity but risks mistaken decisions if their age is unclear. Partial results need enough detail to show what can still be trusted.
Checklist
- Can a failed query ever render as a number, including as zero?
- Is stale visually distinct from current, and does the panel say how old?
- What is the staleness window, and does the display know it?
- On partial failure, does the panel say how many series are missing?
- Is error distinguishable from empty, and empty from healthy-zero?
- Does the error say what failed and what to do, or only that something did?
- Does the failure state survive being seen from across a room?
- If the last known value is shown, is it labelled as such with a timestamp?
- Does a panel failure surface anywhere other than the panel?
- Does the alerting rule on this metric handle no-data the same way the panel does?
Compare
Grafana is two products on this question, and the gap is instructive. Its alerting side makes No Data an explicit four-way decision with a default that refuses to call silence healthy; its panel side renders a missing value as a hyphen by default. Prometheus solves the far end well with stale markers, so a departed target vanishes rather than flatlining, and leaves the five-minute middle to whoever builds the display. Datadog carries monitor status alongside the data so a degraded source can colour the panel from outside the query, rather than the panel having to infer trouble from its own empty result. Netdata makes staleness self-evident through motion: a per-second chart that stops moving is visibly stopped, which is the cheapest honest signal in this whole family.
Related
Empty state covers valid results with no records. Loading state precedes a result or failure. Freshness indicator shows data age.
Data source badge identifies the affected source. Alert rule can notify an owner when the problem persists.