From 4ffa29d959aa9fbb856c4fa6cf74c6fb713f4c2e Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Thu, 23 Sep 2021 07:06:27 -0400 Subject: [PATCH] Fix alerts with evaluation interval more than 30 seconds resolving in Alertmanager (#39513) (#39523) (cherry picked from commit 27609dc2c57970f7228ce3c34cebc9c6dd6b9f5c) Co-authored-by: George Robinson --- pkg/services/ngalert/state/state.go | 2 +- pkg/services/ngalert/state/state_test.go | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/services/ngalert/state/state.go b/pkg/services/ngalert/state/state.go index 85bd2e0081c..3f72ae58ca5 100644 --- a/pkg/services/ngalert/state/state.go +++ b/pkg/services/ngalert/state/state.go @@ -158,7 +158,7 @@ func (a *State) TrimResults(alertRule *ngModels.AlertRule) { func (a *State) setEndsAt(alertRule *ngModels.AlertRule, result eval.Result) { ends := ResendDelay if alertRule.IntervalSeconds > int64(ResendDelay.Seconds()) { - ends = time.Duration(alertRule.IntervalSeconds) + ends = time.Second * time.Duration(alertRule.IntervalSeconds) } a.EndsAt = result.EvaluatedAt.Add(ends * 3) diff --git a/pkg/services/ngalert/state/state_test.go b/pkg/services/ngalert/state/state_test.go index a22fa98cb39..e8d5cdd2bc0 100644 --- a/pkg/services/ngalert/state/state_test.go +++ b/pkg/services/ngalert/state/state_test.go @@ -149,14 +149,14 @@ func TestSetEndsAt(t *testing.T) { }, { name: "more than resend delay: for=unset,interval=1m - endsAt = interval * 3", - expected: evaluationTime.Add(60 * 3), + expected: evaluationTime.Add(time.Second * 60 * 3), testRule: &ngmodels.AlertRule{ IntervalSeconds: 60, }, }, { name: "more than resend delay: for=0s,interval=1m - endsAt = resendDelay * 3", - expected: evaluationTime.Add(60 * 3), + expected: evaluationTime.Add(time.Second * 60 * 3), testRule: &ngmodels.AlertRule{ For: 0 * time.Second, IntervalSeconds: 60, @@ -164,7 +164,7 @@ func TestSetEndsAt(t *testing.T) { }, { name: "more than resend delay: for=1m,interval=5m - endsAt = interval * 3", - expected: evaluationTime.Add(300 * 3), + expected: evaluationTime.Add(time.Second * 300 * 3), testRule: &ngmodels.AlertRule{ For: 60 * time.Second, IntervalSeconds: 300, @@ -172,7 +172,7 @@ func TestSetEndsAt(t *testing.T) { }, { name: "more than resend delay: for=5m,interval=1m - endsAt = interval * 3", - expected: evaluationTime.Add(60 * 3), + expected: evaluationTime.Add(time.Second * 60 * 3), testRule: &ngmodels.AlertRule{ For: 300 * time.Second, IntervalSeconds: 60,