Burn rate needs the same eligible-event denominator as the SLO
Calculate request-based error-budget use, distinguish traffic share from time share, and qualify exhaustion forecasts and multi-window alerts.
On this page
The question for today
What you’ll understand
- Compute burn rate from a defined bad-event fraction and allowed fraction.
- Convert observed bad events into budget consumption using compatible denominators.
- Explain why exhaustion time is a conditional forecast rather than a fixed deadline.
A service-level objective defines which events count and what fraction may be bad. Burn rate compares the observed bad fraction with that allowed fraction. A useful alert then asks how quickly the service is spending its error budget, but the conversion needs care when traffic varies. An hour carrying half the month's requests does not consume budget like an ordinary quiet hour simply because both occupy the same clock duration.
Define good, bad, and eligible before dividing
For a request-based objective, define the eligible population, the criterion for a good result, and the measurement window. Bad events can include latency violations as well as explicit errors when the SLI defines them that way. Excluded traffic, missing telemetry, retries, and partially observed requests can change the denominator. An infrastructure health ratio is not automatically the same as user-request success. Keep the objective's event definition consistent across dashboards, budget calculations, and alerts so one graph does not appear healthier merely because it filters out failed attempts.
Let ε be the allowed bad fraction and r the observed bad fraction over an alert window. Burn b=r/ε is dimensionless; b=1 spends budget at the objective's allowed fraction of traffic. It is not itself a probability and can exceed one. A tiny denominator can make a single failure produce a large noisy ratio, while no eligible events makes the ordinary fraction undefined. Specify missing-data and low-traffic policy rather than silently treating no observations as perfect service or dividing by zero.
Traffic share is not automatically time share
The fraction of a fixed request budget spent in one window is its bad-event count divided by the allowed period count. Expressing this as burn times the window's share of period requests is exact under matching definitions. Replacing that traffic share with window-duration divided by period-duration requires constant eligible traffic or another explicit approximation. Large incidents often change traffic because users retry, abandon requests, or encounter front-door failures. A forecast based on yesterday's rate can therefore be wrong precisely when the budget matters most.
A fixed-period request budget whose final population is not yet known needs an explicit projection or a policy for updating the denominator. A rolling window additionally ages out old good and bad events, so its remaining budget is not a permanently decreasing tank. A time-based availability budget has another denominator and can use duration directly when its SLI is defined that way. Do not switch among these models while keeping the same exhaustion label. State whether a number is observed budget use, a projected final outcome, or a hypothetical exhaustion time under unchanged conditions.
Use multiple windows to separate urgent and sustained evidence
Google's SRE workbook discusses burn-rate alerting across windows to balance detection and reset behavior. A short window can react quickly but be noisy; a longer window can establish sustained spending but retain historical signal after recovery. The exact thresholds should reflect the objective, traffic, and response policy. A cleared short-window ratio is not proof the period budget has recovered. Evaluate alerts with incident traces and low-traffic cases, and keep user-facing budget policy separate from a particular monitoring expression's implementation details.
The probability lab illustrates small-sample variation only. Reset, explicitly set BOTH p=0.01 and n=30, interpret success as a bad event, predict zero bad events with probability 0.99³⁰≈0.7397, then Play or Step. Reset and re-set BOTH p=0.05 and n=30; predict 0.95³⁰≈0.2146. Edits retain t; playback highlights exact independent counts. The lab has no SLO window, rolling budget, telemetry loss, or varying traffic and cannot infer a true production error rate from one count. Its probabilities are illustrative values, not the objective's target.
Work it through
Budget consumption depends on events, not just elapsed hours
A fictional fixed-period objective allows 0.1 percent bad events among a specified one million eligible requests. One hour has 50,000 eligible requests and 250 bad events. Including that hour, the period has accumulated 400 bad events.
Allowed budget is 0.001×1,000,000=1,000 bad events. The hour's bad fraction is 250/50,000=0.005, so its burn rate is five.
That hour spent 250/1,000=0.25, or 25 percent of the fixed event budget. Total period consumption is 400, leaving 600; this calculation uses actual event counts, not the hour's fraction of a calendar month.
If future bad events continue at 250 per hour and this budget stays fixed with no aging-out, remaining time is 600/250=2.4 hours. Changing traffic, recovery, or a rolling window invalidates that simple forecast.
Burn five and 25-percent window consumption describe different but compatible ratios. The 2.4-hour exhaustion estimate is explicitly conditional.
The living notebook
Explore the model
Interactive lab · probability
Quiet samples do not certify a tiny error fraction
For EACH run Reset, set BOTH p and n, predict, then Play or Step. At n=30, bad-event p=0.01 gives P(K=0)≈0.7397; p=0.05 gives ≈0.2146. Edits retain t. Exact independent counts do not implement an SLO, rolling window, observed-rate inference, or budget forecast.
- Mean · np
- 5
- Variance · np(1−p)
- 2.5
- Total probability
- 1
These are exact binomial probabilities for independent trials with one fixed success probability. Playback tours the distribution; it does not resample outcomes. Parameter changes pause playback and recompute the model at the current elapsed time. Reset restores both parameters and returns time to zero. Playback starts paused. Adjust either parameter, then choose Play or Step.
Look forA small observed count is noisy evidence; define the SLI denominator and budget model before interpreting burn.
Pause & reason
Check your understanding
Your turn
Try it yourself
A fixed budget permits 2,000 bad events. A window contains 20,000 eligible events and 100 bad events; ε=0.002. Calculate burn and budget fraction spent in this window.
Take a moment to make a prediction or work it out on paper. Open a hint when you need one.
Give me a hint
The error fraction and the period budget use different denominators. Compute both explicitly.
Compare with the solution
The window error fraction is 100/20,000=0.005, giving burn 0.005/0.002=2.5. The window spends 100/2,000=0.05, or five percent of the fixed event budget. Neither ratio alone says how many hours remain without a future traffic/error-rate model.
Keep the idea
Take it with you
- Burn compares compatible bad-event fractions and requires a nonzero eligible population.
- Request-budget use depends on traffic share, not automatically elapsed-time share.
- Exhaustion and alert forecasts need explicit future-rate and window assumptions.
Read further
Original sources and deeper explanations to follow at your own pace.
Optional progress, saved in this browser when available. Revisit any lesson at any time.
Lesson not marked complete.