Definition · Service level objective and error budgetA service level objective fixes a target value for an indicator over a period — here, the fraction of requests that succeed. The error budget is the failure the objective permits: (1 − SLO) × N, where N is the number of requests in the period. It is a count, it is fixed when the period begins, and it is spent by incidents until it is gone.
SLO = 999/1000, rate = 1000 rps, month = 2 628 000 s
N = 1000 × 2 628 000 = 2 628 000 000 requests
budget = (1/1000) × N = 2 628 000 failures
the same budget expressed as a complete outage
(1 − SLO) × period = (1/1000) × 2 628 000 s = 2628 s = 43 min 48 s
Both lines describe the same permission and the second is the one everybody quotes. Note the period it belongs to: a month here is 2 628 000 seconds, a twelfth of a 365-day year. Under a 30-day convention the same three nines would be 2592 seconds, or 43.2 minutes. Neither is wrong and mixing them is.
What an incident actually spends
The burn is rate × duration × failed fraction, and the third factor is the one that uptime monitoring does not have. A service returning errors to one request in ten is not down by any binary measure, and it is spending budget the whole time. Conversely a two-minute total outage at three in the morning, at a tenth of the daytime rate, costs a tenth of what the same two minutes would cost at noon.
a 30-minute incident at 1000 rps, against a 2 628 000 budget
severity failed requests share of budget minutes that spend it all
10% 180 000 6.85% 438.0
25% 450 000 17.12% 175.2
50% 900 000 34.25% 87.6
100% 1 800 000 68.49% 43.8
The last column is the budget in minutes at each severity, and the bottom row is the familiar 43.8 — which is the point. The “43.8 minutes a month” figure is the special case of a full outage, and quoting it as though it were the budget itself understates by a factor of ten what a long partial degradation is allowed to cost.
Where the arithmetic stops
Everything above is computation. What to do when the budget is spent — freeze releases, divert the team to reliability work, revise the objective, accept the overrun — is a policy decision that the arithmetic informs and does not make. The value of separating them is that the argument about policy then happens over an agreed number rather than over whose impression of last month is right.
Example · One incident, and what is leftA thirty-minute total outage at 1000 rps against a three-nines monthly objective burns 1 800 000 of 2 628 000 failures: 68.49% of the month, gone, on day three. 828 000 failures remain, which is another 13.8 minutes of full outage or 138 minutes at ten per cent severity. That is a concrete statement about what the rest of the month can afford, and it is available within minutes of the incident ending.
Example · The objective that was already impossibleSet the lab's objective to four nines and leave the incident at thirty minutes: the budget is 262 800 failures and the single incident burns 684.93% of it. A month's budget at four nines is 4 min 22.8 s of full outage, so one half-hour incident overruns the whole month’s budget nearly seven times over. An objective that a single ordinary incident cannot fit inside is not a target, and the arithmetic says so before anyone has to argue about it.
One measurement caution. The budget is defined against the requests in the period, so a traffic-weighted objective forgives failures during quiet hours and punishes them at peak, which may or may not match what users experience. If ten customers each send a thousand requests and one sends a million, a request-weighted objective is mostly about that one customer. The arithmetic here is exact; what it is exact about is a choice that has to be made deliberately.