ML Systems Lab Open interactive version →
Intermediate 35 min read alertingrunbooksincident responseon-call

Alerting & Runbooks

Alert thresholds, alert fatigue, P1/P2/P3 classification, runbook structure

The monitoring system fires 47 alerts in a week. The team acknowledges every one and fixes none. The alerts have become wallpaper — everyone has learned to tune them out. Two months later a real model failure runs undetected for three days, because the alert *did* fire and nobody acted. Alert fatigue has quietly converted the whole monitoring system into a false sense of safety.


Fatigue is a calibration problem, not a people problem

When the false-positive rate is high, ignoring alerts is the *rational* response — engineers are running expected-value math, not being lazy. An alert that's actionable only 20% of the time trains everyone to assume it's noise 4 times out of 5. The first genuine P1 that gets waved off during that mental shortcut is where fatigue turns into real business damage.


The fix starts with runbooks

A runbook is the procedure stapled to an alert type: what triggered it (the exact condition), what it means (the business interpretation), its severity, the immediate action (page? auto-rollback?), the ordered investigation steps, and the resolution decision tree (if X then Y, else Z). Without one, every alert forces the on-call engineer to re-derive the whole investigation from scratch at 3am. A runbook turns one person's expertise into a process anyone on the rotation can run.


Four rules that keep false positives down

*Actionable* — if there's no clear action when it fires, it's a metric to watch, not an alert to page on. *Low false-positive rate* — past ~20%, people start ignoring it. *Severity routing* — P0 (model down / financial risk: page now), P1 (significant drift: ticket for tomorrow), P2 (early warning: weekly queue). *Deduplication* — collapse 15 cascading alerts from one upstream failure into a single alert with a root-cause hypothesis.

And the myth to bury: "more alerts = better monitoring." More alerts means more noise means ignored alerts means *worse* monitoring than having fewer. The target is zero false positives, every alert actionable, every alert backed by a runbook. Start with five high-signal alerts and add another only when it has a written runbook and a measured false-positive rate under 20%. Never enable an alert you haven't written the runbook for.

Key points

Takeaway

Alert fatigue is a calibration problem, not a personnel problem — write the runbook before enabling the alert, calibrate thresholds per feature from observed production variation, and track alert-to-action conversion rate monthly to catch alert debt before it degrades incident response.

Recap

Check your understanding

Q1. Your on-call engineer receives 50 alerts per day, most of which turn out to be false positives. How do you fix this?

Q2. Which two statements correctly explain why the module insists you write the runbook before you enable the alert?

Q3. A single upstream feature-store outage triggers 15 cascading alerts at once. Which of the four rules addresses this directly?

Try it interactively

ML Systems Lab is a free interview-prep platform for ML engineers — work through the full interactive module, quizzes, and drills.

Open ML Systems Lab →