SLO BURN-RATE ALERTS · RUNS IN YOUR BROWSER

From an SLO to alert rules that actually fire

Type your SLO and get the downtime budget, the multi-window burn-rate thresholds from the Google SRE Workbook, how fast each alert fires in an outage, warnings for thresholds that can never fire, and a Prometheus rules file to review.

Nothing is uploaded. This is arithmetic in your browser on the numbers you type; it never contacts your Prometheus.

1. Your SLO

Prefer a CLI?

node cli.mjs plan --slo 99.9 --rps 40
node cli.mjs plan --slo 99.9 --json
node cli.mjs rules --slo 99.9 --name api \
  --errors 'http_requests_total{job="api",code=~"5.."}' \
  --total 'http_requests_total{job="api"}' > slo-api.rules.yml

Get cli.mjs and engine.mjs — Node 18+, nothing to install, no network call. plan exits 1 on an unreachable threshold, so it can gate a pull request that edits an SLO. More: how to set multi-window burn-rate alerts for an SLO.

Common questions

What is a multi-window, multi-burn-rate alert?

Instead of alerting when the error rate crosses a fixed number, you alert on how fast the error budget is being spent. A burn rate of 1 uses the whole budget exactly at the end of the period; 14.4 uses 2% of a 30-day budget in one hour. Requiring a long and a short window to both exceed the threshold makes it page quickly on real outages and reset quickly once fixed.

Why does my 99% or 90% SLO never alert?

The page threshold is the burn rate times the allowed error ratio. For a 90% SLO that is 14.4 x 10% = 144%, which an error ratio cannot reach, so the alert can never fire. The tool flags this and you should lengthen the window or lower the budget fraction.

Does this connect to my Prometheus or read my metrics?

No. It does arithmetic on the numbers you type and prints a rule file. It never contacts any server and nothing you type is uploaded.

Are the generated rules safe to paste into production?

Treat them as a reviewed starting point. They assume your error and total selectors are counters you can rate(), that traffic is steady enough for ratio alerts, and that you have tested the expression in your own Prometheus. Run promtool check rules and try the expressions in the expression browser first.