SLI = the user-visible latency. SLO = the target (“99% of requests served in < 200 ms over a 30-day window”). Error budget = 1 - SLO = 1% of requests may be slow. The SLO points at a histogram with buckets around 200 ms; track monthly in Grafana; pause risky deploys when budget is already burnt.
SLI: p99 latency of /chat/stream for “first token” event.
SLO: 99% of first tokens within 300 ms, measured over 30 days.
Error budget: 1% of /chat/stream calls may exceed; deploys gated by remaining budget.
requests over time -> histogram buckets near SLO -> monthly %
burn rate = (1 - actual%) / (1 - SLO%) --- pause deploys > 1
Pick the SLO from a histogram that’s already populated. Post-hoc SLOs are made up.