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)