Recording Rules allow pre-computing frequently used metrics and saving them as new time series.
Simple analogy: Recording Rules are like web caching: instead of computing a complex query each time, you compute it in advance and save the result.
Why:
Example rules file:
1groups:2 - name: http_rules3 interval: 30s4 rules:5 - record: http_requests:rps5m6 expr: rate(http_requests_total[5m])78 - record: http_errors:ratio5m9 expr: |10 sum(rate(http_requests_total{status=~"5.."}[5m])) /11 sum(rate(http_requests_total[5m]))1213 - record: http_latency:p95_5m14 expr: histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))1516 - record: pod_cpu:usage_rate17 expr: rate(container_cpu_usage_seconds_total[5m])1819 - name: slo_rules20 rules:21 - record: service:availability5m22 expr: |23 sum(rate(http_requests_total{status=~"2.."}[5m])) /24 sum(rate(http_requests_total[5m]))
Usage in alerts:
1groups:2 - name: alerts3 rules:4 - alert: HighErrorRate5 expr: http_errors:ratio5m > 0.056 for: 5m7 labels:8 severity: critical
Naming convention: level:metric:operations