From 3b6aede461e83abe1b702feef14e93fbec2a28ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Sun, 29 Mar 2026 22:20:14 +0200 Subject: [PATCH] Fix error-rate-high alert firing on no data The alert was firing with DatasourceNoData because zero 5xx responses means the numerator returns empty (not 0). Fixed by: - Adding `or vector(0)` so zero 5xx returns 0% instead of empty - Setting `noDataState: OK` as a safety net Co-Authored-By: Claude Opus 4.6 (1M context) --- infrastructure/grafana/provisioning/alerting/alerts.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/infrastructure/grafana/provisioning/alerting/alerts.yml b/infrastructure/grafana/provisioning/alerting/alerts.yml index 42594e5..e758b25 100644 --- a/infrastructure/grafana/provisioning/alerting/alerts.yml +++ b/infrastructure/grafana/provisioning/alerting/alerts.yml @@ -55,12 +55,13 @@ groups: - uid: error-rate-high title: Error rate > 5% condition: B + noDataState: OK data: - refId: A relativeTimeRange: { from: 600, to: 0 } datasourceUid: prometheus model: - expr: sum(rate(http_request_duration_seconds_count{status=~"5.."}[5m])) / clamp_min(sum(rate(http_request_duration_seconds_count[5m])), 0.001) * 100 + expr: (sum(rate(http_request_duration_seconds_count{status=~"5.."}[5m])) or vector(0)) / clamp_min(sum(rate(http_request_duration_seconds_count[5m])), 0.001) * 100 instant: true - refId: B datasourceUid: __expr__