Alerting Philosophy
The SRE Book's alerting principles, multi-window multi-burn-rate, and avoiding alert fatigue.
Overview
Where observability meets human attention
Bad alerting is the leading cause of SRE burnout. Good alerting is rare and load-bearing.
The SRE Book's core principle (Ch 6, paraphrased): alert on symptoms, not causes. "Did something break?" is a better question than "Is the database CPU above 90%?"
Most causes don't matter. A DB at 90% CPU might be serving traffic perfectly; paging on it wakes an SRE for nothing. Paging only when users are affected (latency spike, error-rate spike) means every page is a real problem.
Five qualities of a good alert (SRE Book Ch 6 + Workbook)
- 1. Actionable — Someone can do something. "FYI, X happened" belongs on a dashboard
- 2. Precise — Says what's broken and where: "p99 latency on checkout-service > 500ms in us-east-1" beats "something is slow"
- 3. Timely — Fires fast enough to mitigate before users notice or it gets worse
- 4. Not noisy — Low false-positive rate; nobody snoozes it reflexively
- 5. Linked to a runbook — The page comes with documented investigation steps
Speed vs precision: multi-window, multi-burn-rate
Fast alerts have more false positives; precise alerts come too late. The canonical solution (SRE Workbook Ch 5) AND-gates a long window (high precision, slow) with a short window (confirms it's still happening).
At 14.4× the normal burn rate, you exhaust 2% of a 30-day budget in 1 hour. That's actionable now; pair it with a 5-minute window confirming "still burning."
- Page-rate-fast — 1h — 5m — 14.4× — PAGE: fast, urgent — Explosive incidents
- Page-rate-medium — 6h — 30m — 6× — PAGE: slower, sustained — Sustained incidents over a few hours
- Ticket-rate-slow — 3d — 6h — 1× — TICKET: no page — Slow creep over days
> [!IMPORTANT] All three shapes need a response; only the first deserves an urgent page.
Alert fatigue
- SREs reflexively dismiss pages — Every alert must be actionable
- New SREs don't know which pages matter — Every page has a runbook
- "Always firing" alerts never get fixed — Track noisy alerts; kill any that fire more than 3× without action
> [!TIP] Review every alert that fired, weekly. Was it actionable? Did the runbook help? Should it fire faster, slower, or be deleted?
Key concepts
- Alert on symptoms
- "Did something break for the user?" beats "is some internal metric over a threshold?". Symptoms = SLI deviation; causes = internal saturation.
- Multi-window multi-burn-rate
- Long window for trend (precision) + short window for currency (speed) + burn-rate threshold based on error budget. SRE Workbook Ch 5 canonical formula.
- Page vs ticket
- Page = wake someone now. Ticket = work item for next business day. Slow burns get tickets; fast burns get pages.
- Actionable
- A first quality of any alert — someone can do something. If no action, it's a dashboard, not a page.
- Runbook
- Investigation + mitigation steps for an alert. Every alert links to one. SRE's test: a new on-call could resolve from the runbook alone.
- Alert fatigue
- SREs ignore pages because too many fire without merit. Cure: kill noisy alerts, every alert actionable.
When to use it
- Designing alerts for a new service — start from SLOs, derive burn-rate alerts
- Reviewing on-call burden — count pages/week, identify noisy alerts to kill
- Postmortems — was the alert that fired the right one? Did it page early enough?
- On-call handbook — every page should link to a runbook
Interview questions
- Walk me through multi-window multi-burn-rate alerting.
- Why is "DB CPU > 90%" usually a bad page?
- How do you fix alert fatigue on an on-call team?
Sign up free to read the full topic
More SRE topics
Start free on Cariara · Coding problems · System design studio