From 3ef583aa059821291f7327e0d098bbeeeb823cec Mon Sep 17 00:00:00 2001 From: Alexander Akhmetov Date: Thu, 20 Mar 2025 18:44:27 +0100 Subject: [PATCH] Alerting: Set MissingSeriesEvalsToResolve to 1 for Prometheus-imported rules (#101973) --- pkg/services/ngalert/prom/convert.go | 6 ++++++ pkg/services/ngalert/prom/convert_test.go | 1 + 2 files changed, 7 insertions(+) diff --git a/pkg/services/ngalert/prom/convert.go b/pkg/services/ngalert/prom/convert.go index 12e97106461..b433a2ec76b 100644 --- a/pkg/services/ngalert/prom/convert.go +++ b/pkg/services/ngalert/prom/convert.go @@ -241,6 +241,12 @@ func (p *Converter) convertRule(orgID int64, namespaceUID string, promGroup Prom RuleGroup: promGroup.Name, IsPaused: isPaused, Record: record, + + // MissingSeriesEvalsToResolve is set to 1 to match the Prometheus behaviour. + // Prometheus resolves alerts as soon as the series disappears. + // By setting this value to 1 we ensure that the alert is resolved on the first evaluation + // that doesn't have the series. + MissingSeriesEvalsToResolve: util.Pointer(1), } if p.cfg.KeepOriginalRuleDefinition != nil && *p.cfg.KeepOriginalRuleDefinition { diff --git a/pkg/services/ngalert/prom/convert_test.go b/pkg/services/ngalert/prom/convert_test.go index 4e92a090b19..479417bc6b8 100644 --- a/pkg/services/ngalert/prom/convert_test.go +++ b/pkg/services/ngalert/prom/convert_test.go @@ -280,6 +280,7 @@ func TestPrometheusRulesToGrafana(t *testing.T) { require.Equal(t, models.Duration(evalOffset), grafanaRule.Data[0].RelativeTimeRange.To) require.Equal(t, models.Duration(10*time.Minute+evalOffset), grafanaRule.Data[0].RelativeTimeRange.From) + require.Equal(t, util.Pointer(1), grafanaRule.MissingSeriesEvalsToResolve) originalRuleDefinition, err := yaml.Marshal(promRule) require.NoError(t, err)