Problem
Teams alert on every metric that can be graphed, producing floods of pages that are ignored, while real incidents are missed or discovered by customers. Alert fatigue wastes sleep and erodes trust in the monitoring system.
Design alerts that notify humans only about symptoms needing action, with enough context to respond quickly.
Teams alert on every metric that can be graphed, producing floods of pages that are ignored, while real incidents are missed or discovered by customers. Alert fatigue wastes sleep and erodes trust in the monitoring system.
Alerts are interruptions, and every interruption must earn its place. This framework defines what deserves to wake someone and how to keep the rule set healthy over time.
Paging alerts come from SLO burn rate: a fast burn over a short window catches severe outages, while a slower burn over a longer window catches quiet degradation. Both windows must agree before paging to avoid flapping. Resource and cause metrics, such as CPU or queue depth, feed dashboards and low-urgency tickets unless they predict imminent user impact.
A useful test for any proposed page is to ask three questions. Is a user or the business harmed now or imminently? Does it require a human decision that software cannot make? Is there something specific the responder can do? If any answer is no, the signal belongs on a dashboard, in a ticket queue or in an automated remediation job instead. Applying this test during alert reviews steadily shrinks the paging surface while improving the quality of what remains.
groups:
- name: checkout-slo
rules:
- alert: CheckoutErrorBudgetFastBurn
expr: |
(sum(rate(http_requests_total{job="checkout",code=~"5.."}[5m]))
/ sum(rate(http_requests_total{job="checkout"}[5m])) > 14.4 * 0.001)
and
(sum(rate(http_requests_total{job="checkout",code=~"5.."}[1h]))
/ sum(rate(http_requests_total{job="checkout"}[1h])) > 14.4 * 0.001)
for: 2m
labels:
severity: page
team: payments
annotations:
summary: "Checkout burning error budget at 14x"
runbook: "https://runbooks.example.com/checkout/errors"