Glossary · B

Burn Rate

How fast a service consumes its SLO error budget, relative to the rate that would use it up exactly at the end of the SLO window.

By Obseria Editorial TeamUpdated

Definition

Burn rate is the speed at which a service consumes its error budget relative to its SLO. A burn rate of 1 uses up exactly the whole budget by the end of the SLO window; a burn rate of 10 exhausts it ten times faster. It is calculated as the observed error ratio divided by the allowed error ratio.

What burn rate means

Every SLO implies an error budget. An availability objective of 99.9% over 30 days allows 0.1% of requests to fail, which is the budget. Burn rate tells you how quickly that budget is being spent right now. It is defined as:

burn rate = observed error ratio / (1 - SLO target)

With a 99.9% SLO the allowed error ratio is 0.001. If 0.5% of requests currently fail, the burn rate is 0.005 / 0.001 = 5. At that pace the entire 30-day budget would be gone after 30 / 5 = 6 days. A burn rate of exactly 1 means you are on track to end the window with zero budget left, and anything below 1 leaves budget to spare.

The concept is useful because it normalizes errors against the objective. A 0.5% error rate is a crisis for a 99.99% service and harmless for a 99% one; burn rate expresses both cases in the same unit.

The math behind burn-rate alerts

The share of budget consumed during an alert window follows directly from the burn rate:

budget consumed = burn rate x alert window / SLO period

For a 30-day period (720 hours), a burn rate of 14.4 sustained for one hour consumes 14.4 x 1 / 720 = 2% of the budget. A burn rate of 6 over six hours consumes 6 x 6 / 720 = 5%. A burn rate of 1 over three days (72 hours) consumes 10%. The time until the budget is exhausted is simply the SLO period divided by the burn rate, so a constant 14.4x burn empties a 30-day budget in about 50 hours.

Working backwards is how alert thresholds are chosen: decide which share of the budget you are willing to lose before someone is paged, pick a window, and compute the burn rate.

Multiwindow, multi-burn-rate alerts

The Google SRE Workbook (chapter "Alerting on SLOs") recommends combining several burn rates with two windows each. Starting values for a 99.9% SLO over 30 days are:

Budget consumedLong windowShort windowBurn rateAction
2%1 hour5 minutes14.4Page
5%6 hours30 minutes6Page
10%3 days6 hours1Ticket

An alert fires only if the burn rate exceeds the threshold in both the long and the short window. The long window ensures enough budget has really been spent to justify waking someone up. The short window, about one twelfth of the long one, makes the alert stop shortly after the problem is fixed, instead of firing for another hour while the long window still contains old errors. Fast burns are caught within minutes, slow burns within hours, and minor blips that would never threaten the SLO stay silent, which directly reduces alert fatigue.

Detection speed scales with severity. During a complete outage with 100% errors and constant traffic, the one-hour error ratio crosses the 14.4x threshold of 1.44% after roughly 52 seconds, so the page goes out in about a minute. A smaller incident with 2% errors (burn rate 20) needs about 43 minutes to trip the same rule, which is acceptable because it is consuming budget far more slowly.

Example: PromQL rule

An illustrative Prometheus alert for the fastest tier, using request counters for a checkout service:

(
  sum(rate(http_requests_total{job="checkout",code=~"5.."}[1h]))
  / sum(rate(http_requests_total{job="checkout"}[1h]))
) > (14.4 * 0.001)
and
(
  sum(rate(http_requests_total{job="checkout",code=~"5.."}[5m]))
  / sum(rate(http_requests_total{job="checkout"}[5m]))
) > (14.4 * 0.001)

In practice teams precompute the ratios as recording rules for each window so that the alert expressions stay cheap and readable.

Best practices

  • Alert on burn rate, not raw error counts. It ties paging directly to user impact as defined by the SLO.
  • Use the workbook values as a starting point, then tune them based on how often alerts led to real action.
  • Handle low traffic deliberately. When a service receives only a few requests per minute, a single failure can produce a huge burn rate. Add synthetic traffic, require a minimum request count, or group small services under a shared SLO.
  • Apply it to latency SLOs too. Count requests slower than the threshold as "bad events"; the same formula works.
  • Route by urgency. Fast burns go to on-call, slow burns become tickets.

Common mistakes

Using only a single short window produces flapping alerts on every brief spike. Using only a long window detects problems late and keeps alerting long after recovery. Another frequent error is computing the burn rate from averaged per-instance error rates instead of from summed good and total events, which gives small instances the same weight as large ones.

How Obseria helps

Obseria lets you define SLOs on any metric or span query and alert on them with multiwindow, multi-burn-rate rules out of the box, with the remaining error budget always visible. Alerts flow into incident management with the affected services and recent deployments attached.

Frequently asked questions

A burn rate at or below 1 means you will meet the SLO over the window. Values above 1 are not automatically a problem for a short time; what matters is how much budget is consumed. That is why alerts combine a burn-rate threshold with a window length.

It is the burn rate that consumes 2% of a 30-day error budget in one hour: 0.02 x 720 hours / 1 hour = 14.4. The Google SRE Workbook proposes it as the fast-burn paging threshold.

Yes. Define a bad event as a request slower than the target, for example above 300 ms, and compute the ratio of bad to total events. The burn-rate formula and alert windows stay the same.

Recalculate the thresholds with the same formula. For a 28-day window (672 hours), consuming 2% of the budget in one hour corresponds to a burn rate of 0.02 x 672 = 13.44.

Put these concepts into practice

Try Obseria free for 14 days, with OpenTelemetry and no proprietary agents.