From 5bcf4fe459bd8358de21e3e003696fe339e078eb Mon Sep 17 00:00:00 2001 From: zhanghan2021 Date: Wed, 30 Oct 2024 11:36:36 +0800 Subject: [PATCH] add search alert list handler --- server/httphandler/alerthandler.go | 95 ++++++++++++++++++++++++++++++ server/router/router.go | 6 ++ 2 files changed, 101 insertions(+) create mode 100644 server/httphandler/alerthandler.go diff --git a/server/httphandler/alerthandler.go b/server/httphandler/alerthandler.go new file mode 100644 index 0000000..87e67d8 --- /dev/null +++ b/server/httphandler/alerthandler.go @@ -0,0 +1,95 @@ +package httphandler + +import ( + "encoding/json" + + "gitee.com/openeuler/PilotGo/sdk/response" + "github.com/gin-gonic/gin" + "openeuler.org/PilotGo/prometheus-plugin/dao" + "openeuler.org/PilotGo/prometheus-plugin/model" + "openeuler.org/PilotGo/prometheus-plugin/service" + "openeuler.org/PilotGo/prometheus-plugin/utils" +) + +func QuerySearchAlerts(c *gin.Context) { + query := &response.PaginationQ{} + err := c.ShouldBindQuery(query) + if err != nil { + response.Fail(c, nil, err.Error()) + return + } + + alertName := c.Query("alertName") + ip := c.Query("ip") + level := c.Query("level") + handleState := c.Query("handleState") + alertState := c.Query("state") + alertStart := c.Query("alertStart") + alertEnd := c.Query("alertEnd") + search := c.Query("search") + + var as model.AlertTime + if len(alertStart) != 0 { + err = json.Unmarshal([]byte(alertStart), &as) + if err != nil { + response.Fail(c, nil, err.Error()) + return + } + } + + var ae model.AlertTime + if len(alertEnd) != 0 { + err = json.Unmarshal([]byte(alertEnd), &ae) + if err != nil { + response.Fail(c, nil, err.Error()) + return + } + } + + Ifpage := c.Query("paged") + switch Ifpage { + case "false": + if search == "true" { + data, total, err := service.SearchAlerts(alertName, ip, level, handleState, alertState, as, ae) + if err != nil { + response.Fail(c, nil, err.Error()) + return + } + response.DataPagination(c, data, total, query) + } else { + data, total, err := dao.QueryAlerts() + if err != nil { + response.Fail(c, nil, err.Error()) + return + } + response.DataPagination(c, data, total, query) + } + + default: + if search == "true" { + data, total, err := service.SearchAlerts(alertName, ip, level, handleState, alertState, as, ae) + if err != nil { + response.Fail(c, nil, err.Error()) + return + } + lists, err := utils.DataPaging(query, data, total) + if err != nil { + response.Fail(c, nil, err.Error()) + return + } + response.DataPagination(c, lists, total, query) + } else { + data, total, err := dao.QueryAlerts() + if err != nil { + response.Fail(c, nil, err.Error()) + return + } + lists, err := utils.DataPaging(query, data, total) + if err != nil { + response.Fail(c, nil, err.Error()) + return + } + response.DataPagination(c, lists, total, query) + } + } +} diff --git a/server/router/router.go b/server/router/router.go index 02f81a6..495b527 100644 --- a/server/router/router.go +++ b/server/router/router.go @@ -70,6 +70,12 @@ func RegisterAPIs(router *gin.Engine) { ruleManager.POST("ruleUpdate", httphandler.UpdateRule) ruleManager.GET("ruleMetrics", httphandler.GetMonitorMetricsAndAlertLevel) } + + //prometheus alert manager + alertManager := router.Group("/plugin/" + plugin.Client.PluginInfo.Name) + { + alertManager.GET("alertQuery", httphandler.QuerySearchAlerts) + } } func StaticRouter(router *gin.Engine) { -- Gitee