From 25cad60ef815ff88c8ed9fe63cfbe1d4a4a3a357 Mon Sep 17 00:00:00 2001 From: 710leo <710leo@gmail.com> Date: Mon, 23 Aug 2021 18:35:54 +0800 Subject: [PATCH] refactor: event process --- http/router_alert_event.go | 4 ---- judge/handler.go | 6 ++++++ models/alert_event.go | 6 +++--- models/history_alert_event.go | 4 ++-- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/http/router_alert_event.go b/http/router_alert_event.go index e0bf4e2f..3678f0c2 100644 --- a/http/router_alert_event.go +++ b/http/router_alert_event.go @@ -1,7 +1,6 @@ package http import ( - "net/http" "time" "github.com/gin-gonic/gin" @@ -65,9 +64,6 @@ func alertEventNotePut(c *gin.Context) { me := loginUser(c).MustPerm("alert_event_modify") ae := AlertEvent(urlParamInt64(c, "id")) - if len(f.EventNote) == 0 { - bomb(http.StatusBadRequest, "event note is empty") - } renderMessage(c, models.AlertEventUpdateEventNote(ae.Id, ae.HashId, f.EventNote, me.Id)) } diff --git a/judge/handler.go b/judge/handler.go index c812875e..cbde65ee 100644 --- a/judge/handler.go +++ b/judge/handler.go @@ -527,6 +527,12 @@ func sendEventIfNeed(status []bool, event *models.AlertEvent, stra *models.Alert func SendEvent(event *models.AlertEvent) { // update last event LastEvents.Set(event) + ae, err := models.AlertEventGet("hash_id = ?", event.HashId) + if err == nil && ae != nil { + logger.Debugf("[event exists do not send again][type:%+v][event:%+v]", event.IsPromePull, event) + return + } + ok := EventQueue.PushFront(event) if !ok { logger.Errorf("push event:%v err", event) diff --git a/models/alert_event.go b/models/alert_event.go index 8c6c944a..e71124ec 100644 --- a/models/alert_event.go +++ b/models/alert_event.go @@ -18,7 +18,7 @@ type AlertEvent struct { RuleName string `json:"rule_name"` RuleNote string `json:"rule_note"` ProcessorUid int64 `json:"processor_uid"` - ProcessorObjs User `json:"processor_user_objs" xorm:"-"` + ProcessorObj User `json:"processor_user_obj" xorm:"-"` EventNote string `json:"event_note"` HashId string `json:"hash_id"` // 唯一标识 IsPromePull int `json:"is_prome_pull"` // 代表是否是prometheus pull告警,为1时前端使用 ReadableExpression 拉取最近1小时数据 @@ -122,7 +122,7 @@ func (ae *AlertEvent) FillObjs() error { if err != nil { return err } - ae.ProcessorObjs = *processor + ae.ProcessorObj = *processor } return nil @@ -282,7 +282,7 @@ func AlertEventUpdateEventNote(id int64, hashId string, note string, uid int64) return err } - if _, err := session.Exec("UPDATE history_alert_event SET event_note = ?, processor_uid = ? WHERE hash_id = ?", note, uid, hashId); err != nil { + if _, err := session.Exec("UPDATE history_alert_event SET event_note = ?, processor_uid = ? WHERE hash_id = ? ORDER BY id DESC LIMIT 1", note, uid, hashId); err != nil { logger.Errorf("mysql.error: update history_alert_event event_note fail: %v", err) return err } diff --git a/models/history_alert_event.go b/models/history_alert_event.go index a8ef4c4b..f16251fe 100644 --- a/models/history_alert_event.go +++ b/models/history_alert_event.go @@ -16,7 +16,7 @@ type HistoryAlertEvent struct { RuleName string `json:"rule_name"` RuleNote string `json:"rule_note"` ProcessorUid int64 `json:"processor_uid"` - ProcessorObjs User `json:"processor_user_objs" xorm:"-"` + ProcessorObj User `json:"processor_user_objs" xorm:"-"` EventNote string `json:"event_note"` HashId string `json:"hash_id"` // 唯一标识 IsPromePull int `json:"is_prome_pull"` // 代表是否是prometheus pull告警,为1时前端使用 ReadableExpression 拉取最近1小时数据 @@ -87,7 +87,7 @@ func (hae *HistoryAlertEvent) FillObjs() error { if err != nil { return err } - hae.ProcessorObjs = *processor + hae.ProcessorObj = *processor } return nil