SLO, SLI and SLA: the difference
SLI, SLO and SLA are three related SRE concepts that describe service reliability in numbers. In short: SLI is what you measure, SLO is the target you set, SLA is what you promise the customer by contract.
Definitions
- SLI (Service Level Indicator) — a measurable quality metric. Examples: share of successful requests, share of requests faster than 300 ms, uptime.
- SLO (Service Level Objective) — an internal target for an SLI. For example: "99.9% of requests succeed over 30 days".
- SLA (Service Level Agreement) — an external promise to the customer with consequences (credits, compensation) if breached. Usually looser than the SLO.
Error budget
If SLO = 99.9%, then 0.1% is the allowable error budget. Over 30 days that is about 43 minutes of unavailability. While the budget is not spent you can ship faster; once it is gone, focus shifts to stabilization.
Example SLI in PromQL
sum(rate(http_requests_total{code!~"5.."}[28d]))
/
sum(rate(http_requests_total[28d]))This is the share of non-5xx responses over a 28-day window — a candidate availability SLI.
How to compute it in Unimoni
An SLI is an ordinary PromQL expression, the SLO target is set as a threshold in an alert rule, and uptime and availability over a period are computed by Uptime monitoring and the public status page.