diff --git a/server/dao/alert.go b/server/dao/alert.go new file mode 100644 index 0000000000000000000000000000000000000000..bf6ad71f8cd51adb2d1675ce0ff05538b6b99629 --- /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 9939e4574bda8b5084fe8df042ae14977bf4bf7b..25ccda1ac30f45095f2863dc490ff9d2c5920254 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) {