Skip to content

SLOs

Per-monitor target %, time window, achieved %, error budget, burn rate.

Service Level Objectives are an operator-defined contract:

“This service should be up 99.9% of the time, measured over a 30-day window.”

Pulse lets you attach an SLO target to any monitor.

On the monitor edit panel:

  • SLO target (%) — e.g. 99.90. Leave blank for “no SLO”.
  • SLO window (days) — default 30.

The SLOs tile on the dashboard lists one row per monitor with a configured target:

  • Monitor name
  • Target % (muted) and Achieved % (bold)
  • Tone badge: On track (burn_rate ≤ 1), At risk (1 < burn_rate ≤ 2), or Breached (burn_rate > 2)
  • Minutes of error budget remaining in the window
allowed_downtime = window × (1 - target/100)
consumed_downtime = (failed_checks / total_checks) × window
budget_remaining = allowed_downtime - consumed_downtime
burn_rate = (last_1h_fail_rate) / (1 - target/100)

burn_rate = 1.0 means you’re consuming budget at exactly the allowed rate. Higher = faster burn.

The monitor detail page shows an SLO card when a target is configured: big achieved %, target as a smaller subline, budget remaining (minutes), and burn rate with the same on-track / at-risk / breached treatment.

  • Burn rate is computed off a single window (last 1h). Google SRE’s “multi-window” burn alerts (fast 5m + slow 1h pair) aren’t implemented; consider it a follow-up.
  • Math is check-ratio, not interval-weighted. For monitors with a mix of regions and intervals, the answer is within ~1% of an interval-weighted model; for pure single-region monitors the two are identical.
  • No alert-rule integration yet for burn_rate > X. You can still alert on status_is down and use the SLO surface as a budget tracker.