HIVE80lab — Ops notes

Burn-rate alerts: know you're burning before the budget is gone

An error budget checked at the end of its window is not a budget — it is an autopsy. The 28-day window ends, the number is red, and the only thing anyone learned is that the month is unsavable. Burn-rate alerts fix the timing: instead of watching the total, they watch the pace of spending against the budget, and they say something while there is still budget left to save. This page is the alerting math that makes an error budget policy fire on time; the SLO definition sets the bar, this page builds the smoke alarm on it.

Why not just alert when the error rate crosses the target? Because a 0.4% error rate on a 99.7% target means nothing on its own: for ten minutes it is a rounding error, for two days it is the whole budget. The rate of spending is the quantity that carries urgency, and pace is what burn-rate alerts measure.

1. The one formula

Burn rate = fraction of budget spent ÷ fraction of window elapsed. A burn rate of 1.0 is exactly on pace to end the window with the budget spent to zero — technically a breach, practically a coin flip. Below 1.0 you are trending safe; above it you are spending faster than the month can afford, and the higher it goes, the fewer hours you have left:

Do the arithmetic once, on one line, for your own budget: B = 121 minutes over 28 days = 40,320 minutes, so allowed pace = 11s/hour. 14.4× = 2.6 minutes of badness per hour (2% of the budget). 6× = 6.5 bad minutes per 6-hour stretch. Those two thresholds are the entire alert scheme.

2. Two windows, one truth

A single window cannot do the job. Long windows ignore disasters (a 24-hour burn barely moves a 28-day graph until it is too late); short windows amplify noise (one retry storm at 3 a.m. pages a human for nothing). The fix is a pair: a fast window to catch the spike, a slow window to confirm it is real. The alert fires only when both agree:

3. Thresholds you can defend in a review

4. Wiring it (one afternoon, not one quarter)

5. Worked example

A twelve-person SaaS, checkout SLO 99.7% → 121 budget minutes per 28 days. Saturday 14:00, a config change ships a regression that burns about 3 budget-minutes per hour. At 14:45 the 1-hour window crosses 14.4×; by 16:15 the 6-hour window crosses 6× — the pair fires, and the on-call gets one page with the projection line. He rolls back at 16:25. Total damage: 7 of 121 minutes. The month survives; the error budget policy never triggers; the post-mortem is a ten-minute doc about a bad config value.

The counter-example is the same regression, same Saturday, at a team with no burn alerts: the raw error rate sits under the alert threshold all weekend (0.4% < 1% alert line), the 28-day graph looks flat, and by Monday the budget has spent 40 minutes and the policy pause lands mid-sprint with no culprit and no graph that shows the moment it started. The difference between the two Saturdays is not discipline. It is an alert on the pace instead of the total.

6. Metrics

From the HIVE80lab kit

Related: the SLO definition template sets the bar these alerts watch, the error budget policy decides what happens when the budget burns through, and the paging policy decides which human the pair-fire wakes.

Related: the four golden signals — the four golden signals define the latency and error rows those alerts watch.