Define your first SLO
Attach a service level objective to a metric and read the error budget.
A Service Level Objective (SLO) wraps an existing metric in a
target: a percentage of a rolling window during which the metric
must report healthy. The gap between the target and the actual
healthy time is tracked as an error budget. When the metric
reports unhealthy, the budget burns. When it recovers, the burn
stops. The budget surfaces on status pages and in webhook events.
Prerequisites
- A reporting metric. If one is not in place, complete Define your first metric first.
Steps
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.Define the SLO
Open the service, then SLOs, then New SLO.
Configure:
- Metric: the metric defined in the previous quickstart page.
- Target: percentage of the window the metric must remain
healthy. A common starting value is
99.9. - Window: rolling window in days. A common starting value is
30. - Public: enables rendering on customer-facing status pages.
Save the SLO.
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 been unhealthy for some of the window. - Latest burn event: the current or most recent unhealthy stretch, including its start, end (or marker indicating still open), and percent of the budget burned.
- History: prior burn events in the window, with duration and budget cost.
The evaluator runs once per minute. If the metric flipped to unhealthy during the previous quickstart page, a burn event is visible here.
- Error budget remaining: percent of the window's allowance
still available. At
Subscribe to webhook events
If the organisation's plan includes outbound webhooks, open Webhooks, then New subscription. The events relevant to SLOs are:
slo.burn_started: an SLO crossed below its target. 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.
Wire deliveries to PagerDuty, Slack, or any HTTPS endpoint that accepts JSON. Endpoint quotas vary by plan.
Calculation
Each evaluator tick reads the metric's last status, updates the moving window, and recomputes:
budget_burned = total seconds in unhealthy status, within the window
budget_total = window_seconds * (1 - target / 100)
budget_remaining_pct = 100 * (1 - budget_burned / budget_total)
Statuses other than unhealthy (degraded, no_data, unknown)
do not burn budget. Brief degraded flickers therefore do not
consume the allowance on their own.
Next
- Publish your first status page
- Webhook payload reference covers
slo.burn_startedandslo.burn_resolvedpayload shapes.