ObservaStack

runbooks/OrdersApiErrorBudgetBurnSlow.md

# OrdersApiErrorBudgetBurnSlow

Larkspur Grocers is fictional. This note explains the alert. It is not an incident report. It does not record a page, a customer impact, or an MTTR.

## Signal

- Severity: `warning`
- Team: `orders`
- Pending duration (`for`): 2m

```promql
(
  slo:sli_error:ratio_rate1d{service="orders-api",slo="availability"} > (3 * 0.001)
  and
  slo:sli_error:ratio_rate2h{service="orders-api",slo="availability"} > (3 * 0.001)
)
or
(
  slo:sli_error:ratio_rate3d{service="orders-api",slo="availability"} > (1 * 0.001)
  and
  slo:sli_error:ratio_rate6h{service="orders-api",slo="availability"} > (1 * 0.001)
)
```

## What the condition means

Open a ticket when the orders-api availability SLI burns at 3x on both the 2h and 1d windows, or at 1x on both the 6h and 3d windows.

## What an on-call would check

1. Read the expression above and the recording rules it uses.
2. Compare it with the promtool unit tests in `tests/rules/`. Every alert except Watchdog has a firing case and a non-firing case.
3. The annotation `runbook_url` is `https://runbooks.larkspur.example/OrdersApiErrorBudgetBurnSlow`. That host is a placeholder. This file is the copy in the repo.
4. This stack does not page anyone. Receivers use `*_file` credential paths and `example.invalid`.