From 47dd1c0bbe46645d5f42035e2ca6196e804fd1e1 Mon Sep 17 00:00:00 2001 From: zhanghan2021 Date: Thu, 15 Dec 2022 09:54:48 +0800 Subject: [PATCH] pradd ometheus plugin --- go.work | 2 +- prometheus/main.go | 7 --- prometheus/{ => server}/go.mod | 0 prometheus/server/main.go | 24 ++++++++ prometheus/server/router/router.go | 93 ++++++++++++++++++++++++++++++ 5 files changed, 118 insertions(+), 8 deletions(-) delete mode 100644 prometheus/main.go rename prometheus/{ => server}/go.mod (100%) create mode 100644 prometheus/server/main.go create mode 100644 prometheus/server/router/router.go diff --git a/go.work b/go.work index fc8cf411..2a6a4064 100644 --- a/go.work +++ b/go.work @@ -3,6 +3,6 @@ go 1.19 use ( ./PilotGo ./grafana/ - ./prometheus + ./prometheus/server ./sdk ) diff --git a/prometheus/main.go b/prometheus/main.go deleted file mode 100644 index 34722e6e..00000000 --- a/prometheus/main.go +++ /dev/null @@ -1,7 +0,0 @@ -package main - -import "fmt" - -func main() { - fmt.Println("hello prometheus") -} diff --git a/prometheus/go.mod b/prometheus/server/go.mod similarity index 100% rename from prometheus/go.mod rename to prometheus/server/go.mod diff --git a/prometheus/server/main.go b/prometheus/server/main.go new file mode 100644 index 00000000..2bffeb3a --- /dev/null +++ b/prometheus/server/main.go @@ -0,0 +1,24 @@ +package main + +import ( + "fmt" + + "openeuler.org/PilotGo/plugin-sdk/plugin" + Router "openeuler.org/PilotGo/prometheus-plugin/router" +) + +func main() { + fmt.Println("hello prometheus") + + client := Router.DefaultClient(&plugin.PluginInfo{ + Name: "Prometheus", + Version: "Version", + Description: "Prometheus开源系统监视和警报工具包", + Author: "zhanghan", + Email: "zhanghan@kylinos.cn", + Url: "http://10.1.167.93:9090/", + ReverseDest: "http://10.1.167.93:9090/", + }) + + client.Serve(":99090") +} diff --git a/prometheus/server/router/router.go b/prometheus/server/router/router.go new file mode 100644 index 00000000..d2c03c1d --- /dev/null +++ b/prometheus/server/router/router.go @@ -0,0 +1,93 @@ +package plugin + +import ( + "fmt" + "net/http/httputil" + "net/url" + + "github.com/gin-gonic/gin" + "openeuler.org/PilotGo/plugin-sdk/plugin" +) + +func DefaultClient(desc *plugin.PluginInfo) *plugin.Client { + plugin.BaseInfo = desc + dest := desc.ReverseDest + + router := gin.Default() + mg := router.Group("plugin_manage/") + { + mg.GET("/info", plugin.InfoHandler) + } + + pg := router.Group("/plugin/" + desc.Name) + { + pg.GET("/query", func(c *gin.Context) { + c.Set("__internal__reverse_dest", dest) + QueryRange(c) + }) + pg.GET("/query_range", func(c *gin.Context) { + c.Set("__internal__reverse_dest", dest) + QueryRange(c) + }) + pg.GET("/rules", func(c *gin.Context) { + c.Set("__internal__reverse_dest", dest) + QueryRange(c) + }) + + } + + return &plugin.Client{ + Router: router, + } +} + +func Query(c *gin.Context) { + remote := c.GetString("__internal__reverse_dest") + if remote == "" { + fmt.Println("get reverse dest failed!") + return + } + url, err := url.Parse(remote) + if err != nil { + return + } + + proxy := httputil.NewSingleHostReverseProxy(url) + + c.Request.URL.Path = "api/v1/query" //请求API + proxy.ServeHTTP(c.Writer, c.Request) +} + +func QueryRange(c *gin.Context) { + remote := c.GetString("__internal__reverse_dest") + if remote == "" { + fmt.Println("get reverse dest failed!") + return + } + url, err := url.Parse(remote) + if err != nil { + return + } + + proxy := httputil.NewSingleHostReverseProxy(url) + + c.Request.URL.Path = "api/v1/query_range" //请求API + proxy.ServeHTTP(c.Writer, c.Request) +} + +func Rules(c *gin.Context) { + remote := c.GetString("__internal__reverse_dest") + if remote == "" { + fmt.Println("get reverse dest failed!") + return + } + url, err := url.Parse(remote) + if err != nil { + return + } + + proxy := httputil.NewSingleHostReverseProxy(url) + + c.Request.URL.Path = "api/v1/rules" //请求API + proxy.ServeHTTP(c.Writer, c.Request) +} -- Gitee