Observability gaps are discovered during incidents, which is the worst time and the most expensive. This matrix finds them in advance by asking a simple question per service: if this broke right now, would we know, and could we tell why?
What you get
Coverage mapped across metrics, logs, traces, and alerts per service
A detection-source check: would monitoring or a customer tell you first?
An alert quality review, since too many alerts is also a gap
A remediation list prioritised by service tier
How to use this template
1
Ask whether you would know, and whether you could explain. Two different questions. Alerts answer the first; logs and traces answer the second. A service with alerts but no useful logs tells you it is broken and nothing more.
2
Check how recent incidents were detected. Pull your last ten incidents and record whether monitoring or a human reported them first. Customer-detected incidents point straight at the gaps worth closing.
3
Count alert noise as a coverage gap. A service generating forty alerts a week is as unmonitored as one generating none, because nobody reads them. Track actionability alongside existence.
What's inside
Here's a preview. Unlock the free download to get all 4 sections (3 more below).
Coverage matrix
Y / partial / N per column. The alerting column should cover user-visible symptoms, with infrastructure as the baseline.
Most SLOs are picked because 99.9% sounds respectable, then never referenced again. An SLO is only useful if a specific number of bad minutes triggers a specific decision, so this worksheet makes you write the error budget policy before you pick the target.
A runbook is read by a tired person at 03:00 who did not write it and does not know this service. That single constraint rules out most of what people put in runbooks: architecture background, rationale, and anything written in prose when it could have been a command.
The question that wastes most time at the start of an incident is who owns this. A register answering that in one lookup (with the on-call route, the runbook, and the dashboard) is worth more than most tooling.
What should an observability coverage matrix track?
+
Per service: metrics, centralised logs, traces, alerts on user-visible symptoms, a dashboard, a runbook, and an SLO, plus the service tier so gaps can be prioritised by how much the service matters.
What is the difference between infrastructure alerts and symptom alerts?
+
Infrastructure alerts fire on CPU, memory, or disk and frequently have no user impact. Symptom alerts fire on what a user would notice: errors, latency, failed transactions. Symptom alerts are what you page on.
Can you have too many alerts?
+
Yes, and it is functionally the same as having none. An alert that fires weekly and is never acted on trains people to dismiss the channel, so the genuine alert gets dismissed with it. Track actionability as rigorously as coverage.