diff --git a/gala-ops/server/httphandler/component.go b/gala-ops/server/httphandler/component.go index 6d022f96b81d2829f82163606ca9a86294fa4f1a..44b4a54b6d33af986ea5690d4fb263b68d556214 100644 --- a/gala-ops/server/httphandler/component.go +++ b/gala-ops/server/httphandler/component.go @@ -2,6 +2,7 @@ package httphandler import ( "encoding/json" + "fmt" "io" "net/http" "net/url" @@ -52,6 +53,7 @@ func (o *Opsclient) QueryMetric(endpoint string, querymethod string, param strin err = json.Unmarshal(bs, &data) if err != nil { logger.Error("unmarshal cpu usage rate error:%s", err.Error()) + return nil, fmt.Errorf("unmarshal cpu usage rate error:%s", err.Error()) } return data, nil } diff --git a/gala-ops/server/httphandler/metricdata.go b/gala-ops/server/httphandler/metricdata.go index 769209f0793ac42d03ee1adf0b1ad8b5d5f5fb91..02435deec5e1dcbd219a97a8c7845b0872c85b8f 100644 --- a/gala-ops/server/httphandler/metricdata.go +++ b/gala-ops/server/httphandler/metricdata.go @@ -1,29 +1,25 @@ package httphandler import ( - "encoding/json" "fmt" "net/http" "gitee.com/openeuler/PilotGo-plugins/sdk/logger" - "gitee.com/openeuler/PilotGo-plugins/sdk/utils" "github.com/gin-gonic/gin" ) func TargetsList(ctx *gin.Context) { // 查询prometheus监控对象列表 promurl := Galaops.PromePlugin["url"].(string) - promsq := "/api/v1/query?query=up" - bs, err := utils.Request("GET", promurl+promsq) - if err != nil { - logger.Error("faild to get prometheus targets: ", err) - } - var data interface{} + param := map[string]string{ + "query": "up", + } - err = json.Unmarshal(bs, &data) + urlparam := fmt.Sprintf("?query=%v", param["query"]) + data, err := Galaops.QueryMetric(promurl, "query", urlparam) if err != nil { - logger.Error("unmarshal prometheus targets error:%s", err.Error()) + logger.Error("faild to querymetric from prometheus: ", err) } ctx.JSON(http.StatusOK, data) } @@ -31,16 +27,20 @@ func TargetsList(ctx *gin.Context) { func CPUusagerate(ctx *gin.Context) { promurl := Galaops.PromePlugin["url"].(string) start, end := Galaops.UnixTimeStartandEnd(-5) + job := ctx.Query("job") + if job == "" { + logger.Error("need job parameter in url: cpuusagerate") + ctx.JSON(http.StatusOK, "need job parameter in url: cpuusagerate") + } + param := map[string]string{ - //"query": `avg%20by(job)%20(gala_gopher_cpu_total_used_per%7Bjob%3D~%22192.168.75.132%22%7D)`, - "query": `avg by(job) (gala_gopher_cpu_total_used_per{job=~"192.168.75.132"})`, + "query": fmt.Sprintf("avg by(job) (gala_gopher_cpu_total_used_per{job=~\"%s\"})", job), "start": fmt.Sprint(start), "end": fmt.Sprint(end), "step": "15s", } urlparam := fmt.Sprintf("?query=%v&start=%v&end=%v&step=%v", param["query"], param["start"], param["end"], param["step"]) - logger.Debug(urlparam) data, err := Galaops.QueryMetric(promurl, "query_range", urlparam) if err != nil { logger.Error("faild to querymetric from prometheus: ", err) diff --git a/gala-ops/server/router/router.go b/gala-ops/server/router/router.go index f3ef24b00169055aa7966f5f9d61a8feac6f996c..d3429737a15d36a4ee152df2986b493066373a44 100644 --- a/gala-ops/server/router/router.go +++ b/gala-ops/server/router/router.go @@ -19,6 +19,7 @@ func InitRouter(router *gin.Engine) { metrics := router.Group("plugin/gala-ops/api/metrics") { + // url?job=prometheusHOST metrics.GET("/targets_list", httphandler.TargetsList) metrics.GET("/cpu_usage_rate", httphandler.CPUusagerate) }