diff --git a/go.work b/go.work index fc8cf411a74af97c5fe08a83b10c100bf10ef488..2a6a4064d782da650695383f4e27a89f4f432505 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 34722e6ed0ebe25a629e207a2244f2f5d6a2ef0e..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..2bffeb3adf0ef81abad5f49d0b86e6f108ea0929 --- /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 0000000000000000000000000000000000000000..d2c03c1d6ccf6a713d5249d5acbb6b10351d19b5 --- /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) +}