From cf89a656639eb8dc852726ece72a94e18d41dbf3 Mon Sep 17 00:00:00 2001 From: Cairry <115769353+Cairry@users.noreply.github.com> Date: Fri, 21 Feb 2025 18:29:55 +0800 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Remove=20event=20state=20f?= =?UTF-8?q?eild?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- alert/consumer/consumer.go | 4 ---- alert/eval/eval.go | 7 ++++++- alert/process/process.go | 10 ++++------ internal/models/alert_current_event.go | 3 +-- internal/models/fault_center.go | 1 + internal/services/fault_center.go | 9 ++++++--- 6 files changed, 18 insertions(+), 16 deletions(-) diff --git a/alert/consumer/consumer.go b/alert/consumer/consumer.go index 3c2cc42..0477f56 100644 --- a/alert/consumer/consumer.go +++ b/alert/consumer/consumer.go @@ -225,10 +225,6 @@ func (c *Consume) isMutedEvent(event *models.AlertCurEvent, faultCenter models.F // validateEvent 事件验证 func (c *Consume) validateEvent(event *models.AlertCurEvent, faultCenter models.FaultCenter) bool { - if event.State == "Pending" { - return false - } - return event.IsRecovered || event.LastSendTime == 0 || event.LastEvalTime >= event.LastSendTime+faultCenter.RepeatNoticeInterval*60 } diff --git a/alert/eval/eval.go b/alert/eval/eval.go index c04b9ee..b999ab7 100644 --- a/alert/eval/eval.go +++ b/alert/eval/eval.go @@ -146,6 +146,10 @@ func (t *AlertRule) Recover(faultCenterKey string, faultCenterInfoKey string, cu return } + // 调整为待恢复状态 + event.Status = 3 + t.ctx.Redis.Event().PushEventToFaultCenter(&event) + // 判断是否在等待时间范围内 wTime, exists := t.alarmRecoverWaitStore.Get(key) if !exists { @@ -159,7 +163,8 @@ func (t *AlertRule) Recover(faultCenterKey string, faultCenterInfoKey string, cu continue } - event.State = "Firing" + // 已恢复状态 + event.Status = 4 event.IsRecovered = true event.RecoverTime = curTime event.LastSendTime = 0 diff --git a/alert/process/process.go b/alert/process/process.go index d5d6959..949ff71 100644 --- a/alert/process/process.go +++ b/alert/process/process.go @@ -51,17 +51,15 @@ func PushEventToFaultCenter(ctx *ctx.Context, event *models.AlertCurEvent) { event.LastEvalTime = eventOpt.GetLastEvalTimeForFaultCenter() event.LastSendTime = eventOpt.GetLastSendTimeForFaultCenter(event.TenantId, event.FaultCenterId, event.Fingerprint) - event.State = "Pending" if event.IsArriveForDuration() { - event.State = "Firing" + event.Status = 1 } - if event.IsRecovered { - event.State = "Recover" - } - if isSilencedEvent(event) { event.Status = 2 } + if event.IsRecovered { + event.Status = 3 + } eventOpt.PushEventToFaultCenter(event) } diff --git a/internal/models/alert_current_event.go b/internal/models/alert_current_event.go index 6bfcbfb..5a64646 100644 --- a/internal/models/alert_current_event.go +++ b/internal/models/alert_current_event.go @@ -14,7 +14,6 @@ type AlertCurEvent struct { DatasourceType string `json:"datasource_type"` DatasourceId string `json:"datasource_id" gorm:"datasource_id"` Fingerprint string `json:"fingerprint"` - State string `json:"state"` // 事件状态,Pending / Firing Severity string `json:"severity"` Metric map[string]interface{} `json:"metric" gorm:"metric;serializer:json"` Labels map[string]string `json:"labels" gorm:"labels;serializer:json"` @@ -36,7 +35,7 @@ type AlertCurEvent struct { FaultCenter FaultCenter `json:"faultCenter" gorm:"-"` ResponseTime string `json:"response_time" gorm:"-"` TimeRemaining int64 `json:"time_remaining" gorm:"-"` - Status int64 `json:"status" gorm:"-"` // 事件状态,告警中:1,静默中:2 + Status int64 `json:"status" gorm:"-"` // 事件状态,告警中:1,静默中:2,待恢复:3,已恢复:4 } type AlertCurEventQuery struct { diff --git a/internal/models/fault_center.go b/internal/models/fault_center.go index 4172732..7d910bb 100644 --- a/internal/models/fault_center.go +++ b/internal/models/fault_center.go @@ -18,6 +18,7 @@ type FaultCenter struct { RecoverWaitTime int64 `json:"recoverWaitTime"` CurrentAlertNumber int64 `json:"currentAlertNumber" gorm:"-"` CurrentMuteNumber int64 `json:"currentMuteNumber" gorm:"-"` + CurrentRecoverNumber int64 `json:"currentRecoverNumber" gorm:"-"` } func (f *FaultCenter) TableName() string { diff --git a/internal/services/fault_center.go b/internal/services/fault_center.go index 4652e91..b37e297 100644 --- a/internal/services/fault_center.go +++ b/internal/services/fault_center.go @@ -89,14 +89,17 @@ func (f faultCenterService) List(req interface{}) (data interface{}, err interfa } for _, event := range events { - if event.Status == 1 { + switch event.Status { + case 1: faultCenters[index].CurrentAlertNumber++ - } else { + case 2: faultCenters[index].CurrentMuteNumber++ + case 3: + faultCenters[index].CurrentRecoverNumber++ } } - } + return faultCenters, nil }