From 94a49c17f7034f1f33f22dc93c60db75f533f664 Mon Sep 17 00:00:00 2001 From: Ulric Qin Date: Thu, 3 Mar 2022 10:44:06 +0800 Subject: [PATCH] persist recovered events --- src/server/engine/consume.go | 8 +++++--- src/server/engine/worker.go | 40 +++++++++++++++++------------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/server/engine/consume.go b/src/server/engine/consume.go index e86bb72e..5deb0e51 100644 --- a/src/server/engine/consume.go +++ b/src/server/engine/consume.go @@ -44,9 +44,11 @@ func consume(events []interface{}, sema *semaphore.Semaphore) { func consumeOne(event *models.AlertCurEvent) { logEvent(event, "consume") persist(event) - fillUsers(event) - callback(event) - notify(event) + if event.NotifyRecovered == 1 { + fillUsers(event) + callback(event) + notify(event) + } } func persist(event *models.AlertCurEvent) { diff --git a/src/server/engine/worker.go b/src/server/engine/worker.go index d119e212..2d3583fb 100644 --- a/src/server/engine/worker.go +++ b/src/server/engine/worker.go @@ -352,27 +352,25 @@ func (r RuleEval) recoverRule(alertingKeys map[string]struct{}, now int64) { delete(r.fires, hash) delete(r.pendings, hash) - if r.rule.NotifyRecovered == 1 { - event.IsRecovered = true - event.LastEvalTime = now - // 可能是因为调整了promql才恢复的,所以事件里边要体现最新的promql,否则用户会比较困惑 - // 当然,其实rule的各个字段都可能发生变化了,都更新一下吧 - event.RuleName = r.rule.Name - event.RuleNote = r.rule.Note - event.Severity = r.rule.Severity - event.PromForDuration = r.rule.PromForDuration - event.PromQl = r.rule.PromQl - event.PromEvalInterval = r.rule.PromEvalInterval - event.Callbacks = r.rule.Callbacks - event.CallbacksJSON = r.rule.CallbacksJSON - event.RunbookUrl = r.rule.RunbookUrl - event.NotifyRecovered = r.rule.NotifyRecovered - event.NotifyChannels = r.rule.NotifyChannels - event.NotifyChannelsJSON = r.rule.NotifyChannelsJSON - event.NotifyGroups = r.rule.NotifyGroups - event.NotifyGroupsJSON = r.rule.NotifyGroupsJSON - r.pushEventToQueue(event) - } + event.IsRecovered = true + event.LastEvalTime = now + // 可能是因为调整了promql才恢复的,所以事件里边要体现最新的promql,否则用户会比较困惑 + // 当然,其实rule的各个字段都可能发生变化了,都更新一下吧 + event.RuleName = r.rule.Name + event.RuleNote = r.rule.Note + event.Severity = r.rule.Severity + event.PromForDuration = r.rule.PromForDuration + event.PromQl = r.rule.PromQl + event.PromEvalInterval = r.rule.PromEvalInterval + event.Callbacks = r.rule.Callbacks + event.CallbacksJSON = r.rule.CallbacksJSON + event.RunbookUrl = r.rule.RunbookUrl + event.NotifyRecovered = r.rule.NotifyRecovered + event.NotifyChannels = r.rule.NotifyChannels + event.NotifyChannelsJSON = r.rule.NotifyChannelsJSON + event.NotifyGroups = r.rule.NotifyGroups + event.NotifyGroupsJSON = r.rule.NotifyGroupsJSON + r.pushEventToQueue(event) } }