The same ratio appears in a dashboard, two alerts and a report, and each copy can drift from the others.
groups:
- name: sli
interval: 30s
rules:
- record: sli:checkout:availability_5m
expr: |
sum(rate(http_requests_total{route="checkout",status=~"2..|3.."}[5m]))
/ sum(rate(http_requests_total{route="checkout",status!~"4.."}[5m]))
A naming convention with colons is the established one — level:metric:operation — and it is what makes a recording rule distinguishable from a raw metric at a glance. The rules are also considerably faster to query, which matters for a dashboard covering thirty days where the raw expression would scan every sample.