healthy or degraded. The gap between the target and
the actual up time is tracked as an error budget. Every
unhealthy sample burns the budget. The budget surfaces
on status pages and in alerts.
Prerequisites
- A reporting metric. If one is not in place, complete Define your first metric first.
Steps
1
Create a service
Services group related SLOs and render as a row on status pages. In
the console, open Services, then New service. Name it after
the system the SLOs describe, for example
checkout-api. The
description field is optional.2
Define the SLO
Open the service, then SLOs, then New SLO.Configure:
- Metric: the metric defined in the previous quickstart page.
- Target percentage: percentage of the window the metric must
remain healthy or degraded. A common starting value is
99.9. - Rolling window: rolling window in days. A common starting value
is
30. - Show on public status page: enables rendering on customer-facing status pages.
Choosing a targetThe right target depends on the system’s achieved availability
over the prior 90 days. If that data is not available, start with
99.5% and tighten once the SLO has accumulated a few weeks of
history. A target tighter than reality burns budget on noise and
loses signal value.3
Read the burn timeline
Open the SLO. The detail page reports:
- Error budget remaining: percent of the window’s allowance
still available. At
99.9% / 30 days, the allowance is roughly 43 minutes. Below 100% indicates the metric has recorded unhealthy samples in the window. - Latest burn event: the current or most recent period during which the error budget was negative, with its start, end (or open marker) and percent burned.
- History: prior burn events in the window, with duration and budget cost.
4
Route burn alerts
Open Alerts and select Add destination (Slack, PagerDuty,
generic webhook, and others). Under Alerts, choose Custom and
select the
slo.burn_started and slo.burn_resolved events, shown in
the SLOs group as SLO started using budget fast and
SLO budget use back to normal. SLO alerts go only to destinations
set to All status pages (organization-wide):slo.burn_started: the SLO’s error budget went negative. The payload includes theslo_id,service_id,started_at, and the currenterror_budget_burned_pct.slo.burn_resolved: the SLO recovered. The payload includes the matchingburn_event_idand thefinal_budget_remaining_pct.
Calculation
Each evaluator tick counts the metric’s samples in the moving window and recomputes:error budget
unhealthy samples burn budget. A degraded sample (slower,
but still serving) counts as up, the same rule SLA attainment uses
by default. A no_data sample counts as up when the metric’s no-data
treatment folds it to healthy or degraded.
no_data samples are governed by the SLO’s unknown-data policy;
under the default (down) they burn. Periods with no samples at all
add nothing. See
SLOs and error budgets
for the other two policies.
The budget reads collecting rather than a number until the SLO
has 24 hours of in-window observation. Whenever the metric is stale
it reads No data: a currently-blind metric makes no budget claim
in either direction.
Per-customer overridesCustomers can carry per-SLO target overrides. See
Customer scopes for the model.
Next
- Publish your first status page
- Webhook payload reference covers
slo.burn_startedandslo.burn_resolvedpayload shapes.

