← All posts

Alerts worth waking up for

2 min read
Sample post cover: Alerts worth waking for
On this page

This is a sample post, here so the layout can be checked. Delete content/posts/sample-alerts-worth-waking-for.md and its cover when you are done with it.

Every alerting setup I have inherited had the same shape: hundreds of rules, a channel nobody reads, and an on-call engineer who has learned that most pages resolve themselves. That last part is the real failure. Once a pager is usually wrong, it is ignored exactly when it is right.

Alert on symptoms, not causes

A node at 90% memory is not an incident. It is a fact. It becomes an incident when requests start failing or slowing down, and that may never happen.

The question worth encoding is always the same: is someone having a bad time? Which gives a short list.

  • Requests failing beyond the error budget burn rate
  • Latency past the point users abandon the page
  • Work queued faster than it is drained
  • A scheduled job that did not run at all

Everything else is a dashboard. Dashboards are for when you are already looking; alerts are for when you are not.

Burn rate, not thresholds

A fixed threshold like "error rate above 1%" fires on a thirty-second blip and stays quiet through a slow bleed that eats the month's budget. Burn rate asks how fast the budget is going:

yaml

Two rules, two urgencies. The fast one wakes someone. The slow one does not, because nothing is on fire, but it still gets looked at on a Tuesday.

Make the trace the first thing you reach for

An alert that says something is wrong without saying where costs you the first ten minutes of every incident. Instrument once with OpenTelemetry and that gap closes, because the alert can link straight to exemplar traces:

python

The attribute split is the part people get wrong. Order ids on a metric label produce a series per order and eventually take Prometheus down. On a span they cost nothing and are exactly what you want when debugging one bad checkout.

The test that matters

For every rule that can page a human, answer two questions:

  1. If this fires at 3am, is there something a person can do right now?
  2. If they do nothing until morning, does it get worse?

If either answer is no, it is not a page. Make it a ticket, or delete it. A smaller set of alerts that are always worth reading beats a complete set nobody trusts.