From b9ab9af60f64296e27a6fefdd9bfabb34d4a0dbb Mon Sep 17 00:00:00 2001 From: zhanghan2021 Date: Tue, 29 Oct 2024 17:50:51 +0800 Subject: [PATCH] add db ooperations: save alert and update alert --- server/dao/alert.go | 23 +++++++++++++++++++++++ server/service/alertservice.go | 19 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 server/dao/alert.go diff --git a/server/dao/alert.go b/server/dao/alert.go new file mode 100644 index 0000000..bf6ad71 --- /dev/null +++ b/server/dao/alert.go @@ -0,0 +1,23 @@ +package dao + +import ( + "openeuler.org/PilotGo/prometheus-plugin/db" + "openeuler.org/PilotGo/prometheus-plugin/model" +) + +func SaveAlertList(a *model.Alert) error { + err := db.MySQL.Create(&a).Error + return err +} +func QueryAlerts() ([]model.Alert, error) { + var alerts []model.Alert + err := db.MySQL.Where("alert_end_time = ''").Find(&alerts).Error + return alerts, err +} +func UpdateAlert(alertName, groupId, ip string, alert *model.Alert) error { + var a model.Alert + var maxID uint + db.MySQL.Model(&a).Where("alert_name = ? AND group_id = ? AND ip = ?", alertName, groupId, ip).Order("id desc").Limit(1).Pluck("id", &maxID) + err := db.MySQL.Model(&a).Where("id = ? AND alert_name = ? AND group_id = ? AND ip = ?", maxID, alertName, groupId, ip).Updates(alert).Error + return err +} diff --git a/server/service/alertservice.go b/server/service/alertservice.go index 9939e45..25ccda1 100644 --- a/server/service/alertservice.go +++ b/server/service/alertservice.go @@ -13,6 +13,7 @@ import ( "openeuler.org/PilotGo/prometheus-plugin/config" "openeuler.org/PilotGo/prometheus-plugin/dao" "openeuler.org/PilotGo/prometheus-plugin/model" + prometheus "openeuler.org/PilotGo/prometheus-plugin/service/prometheus" ) func PullAlert() error { @@ -31,6 +32,24 @@ func PullAlert() error { return err } + go func() { + ticker := time.NewTicker(30 * time.Second) + defer ticker.Stop() + + for range ticker.C { + if prometheus.SetDelayTicker { + prometheus.SetDelayTicker = false + continue + } + alerts, err := pullAlert() + if err != nil { + logger.Error("Error pull alerts from kylin-monitor: %v", err.Error()) + continue + } + processAlerts(previousAlerts, alerts) + previousAlerts = alerts + } + }() return nil } func pullAlert() ([]model.AlertResponse, error) { -- Gitee