From 7b70817dd5b119059e073d045366f2175388016b Mon Sep 17 00:00:00 2001 From: like Date: Fri, 21 Jul 2023 16:09:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=A2=84=E8=AD=A6=E8=A7=84=E5=88=99?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/service/alert_rules.go | 51 +++++++++++++------------- src/service/k8s/prometheusrule_test.go | 2 +- src/service/prometheusrule.go | 5 ++- 3 files changed, 31 insertions(+), 27 deletions(-) diff --git a/src/service/alert_rules.go b/src/service/alert_rules.go index 8f6b771..393417b 100644 --- a/src/service/alert_rules.go +++ b/src/service/alert_rules.go @@ -94,17 +94,7 @@ func (a *AlertRulesSvc) Add(req request.AddAlertRules) (err error) { } } - var item response.AlertRulesItem - item, err = a.GetDataById(request.DetailAlertRules{Id: data.Id}) // 查询完整数据 - prSvc := PrometheusRuleSvc{User: a.User} // 插入数据到 prometheus.yml --> rule_files - createErr := prSvc.Create(item) - if createErr != nil { - _, err = db.Delete(&data) - if err != nil { - return err - } - return createErr - } + err = a.CreatePrometheusRule(req.IsEnabled, data.Id, db) return nil } @@ -185,28 +175,40 @@ func (a *AlertRulesSvc) Update(req request.UpdateAlertRules) (err error) { } } - var item response.AlertRulesItem - item, err = a.GetDataById(request.DetailAlertRules{Id: data.Id}) - prSvc := PrometheusRuleSvc{User: a.User} + err = a.CreatePrometheusRule(req.IsEnabled, data.Id, db) + return nil +} - { - // 删除PrometheusRule - deleteErr := prSvc.Delete(item) - if deleteErr != nil { - return deleteErr +func (a *AlertRulesSvc) CreatePrometheusRule(isEnabled int, id string, db *xorm.Engine) (err error) { + if isEnabled == 1 { + var item response.AlertRulesItem + item, err = a.GetDataById(request.DetailAlertRules{Id: id}) // 查询完整数据 + if err != nil { + return + } + prSvc := PrometheusRuleSvc{User: a.User} + _, exist, _ := prSvc.Get(item) + if exist { + deleteErr := prSvc.Delete(item) + if deleteErr != nil { + _, err = db.ID(id).Delete(&entity.AlertRules{}) + if err != nil { + return + } + return deleteErr + } } - // 再次创建PrometheusRule + createErr := prSvc.Create(item) if createErr != nil { - _, err = db.Delete(&data) + _, err = db.ID(id).Delete(&entity.AlertRules{}) if err != nil { - return err + return } return createErr } } - - return nil + return } func (a *AlertRulesSvc) UpdateIsEnabled(req request.UpdateIsEnabledAlertRules) (err error) { @@ -228,7 +230,6 @@ func (a *AlertRulesSvc) UpdateIsEnabled(req request.UpdateIsEnabledAlertRules) ( if err != nil { return } - if req.IsEnabled == 2 { if item.IsEnabled == 1 { prSvc := PrometheusRuleSvc{User: a.User} diff --git a/src/service/k8s/prometheusrule_test.go b/src/service/k8s/prometheusrule_test.go index fd06db2..89dd4dc 100644 --- a/src/service/k8s/prometheusrule_test.go +++ b/src/service/k8s/prometheusrule_test.go @@ -24,7 +24,7 @@ func init() { svc = PrometheusRule{Header: header} pr = monitoringv1.PrometheusRule{} - alertRulesId := "83343ef6-4a99-47bd-abb4-bcff52feb2ec" // 预警规则id + alertRulesId := "45a50875-20fd-4d93-a7d5-c6790186ad97" // 预警规则id prometheusRuleName := GetPrometheusRuleName(alertRulesId) pr.Name = prometheusRuleName pr.Namespace = "beagle-monitoring" diff --git a/src/service/prometheusrule.go b/src/service/prometheusrule.go index b4f15be..7123b24 100644 --- a/src/service/prometheusrule.go +++ b/src/service/prometheusrule.go @@ -90,7 +90,7 @@ func (p *PrometheusRuleSvc) Create(data response.AlertRulesItem) (err error) { return } -func (p *PrometheusRuleSvc) Get(data response.AlertRulesItem) (obj *monitoringv1.PrometheusRule, err error) { +func (p *PrometheusRuleSvc) Get(data response.AlertRulesItem) (obj *monitoringv1.PrometheusRule, exist bool, err error) { prometheusRuleName := k8s.GetPrometheusRuleName(data.Id) pr := monitoringv1.PrometheusRule{ ObjectMeta: v1.ObjectMeta{ @@ -103,6 +103,9 @@ func (p *PrometheusRuleSvc) Get(data response.AlertRulesItem) (obj *monitoringv1 prSvc := k8s.PrometheusRule{Header: header} conf.Logger.Info("pr", zap.Any("pr", pr)) obj, err = prSvc.Get(pr.Namespace, pr.Name) + if obj != nil && err == nil { + exist = true + } return } -- 2.26.0