From a27bc7a7ba26f8aa81473e88688ea4204efe2bbb Mon Sep 17 00:00:00 2001 From: wubijie Date: Wed, 21 Jun 2023 09:37:51 +0800 Subject: [PATCH] Add an uninstall redis_exporter package method --- redis/server/httphandler/agent.go | 39 +++++++++++++---------- redis/server/plugin/plugin_redis.go | 7 +++++ redis/server/service/agent.go | 48 +++++++++++++++++++++++------ 3 files changed, 68 insertions(+), 26 deletions(-) diff --git a/redis/server/httphandler/agent.go b/redis/server/httphandler/agent.go index 1a0435e0..bbccadef 100644 --- a/redis/server/httphandler/agent.go +++ b/redis/server/httphandler/agent.go @@ -1,35 +1,40 @@ package httphandler import ( - "net/http" - "gitee.com/openeuler/PilotGo-plugins/sdk/common" + "gitee.com/openeuler/PilotGo-plugins/sdk/response" "github.com/gin-gonic/gin" "openeuler.org/PilotGo/redis-plugin/service" ) // 安装运行 -func InstallRedisExporter(ctx *gin.Context) { +func InstallRedisExporter(c *gin.Context) { // TODOs var param *common.Batch - if err := ctx.BindJSON(param); err != nil { - ctx.JSON(http.StatusBadRequest, gin.H{ - "code": -1, - "status": err, - }) + if err := c.BindJSON(param); err != nil { + response.Fail(c, nil, err.Error()) + return } ret, err := service.Install(param) if err != nil { - ctx.JSON(http.StatusBadRequest, gin.H{ - "code": -1, - "status": err, - }) + response.Fail(c, nil, err.Error()) + return + } + response.Success(c, ret, "安装成功") +} + +func UnInstallRedisExporter(c *gin.Context) { + var param *common.Batch + if err := c.BindJSON(param); err != nil { + response.Fail(c, nil, err.Error()) + return + } + ret, err := service.UnInstall(param) + if err != nil { + response.Fail(c, nil, err.Error()) + return } - ctx.JSON(http.StatusOK, gin.H{ - "code": 0, - "status": "ok", - "data": ret, - }) + response.Success(c, ret, "卸载成功") } diff --git a/redis/server/plugin/plugin_redis.go b/redis/server/plugin/plugin_redis.go index 7ce08113..1704d409 100644 --- a/redis/server/plugin/plugin_redis.go +++ b/redis/server/plugin/plugin_redis.go @@ -33,6 +33,13 @@ func addTargets(targets []string, url string) error { return nil } +func deleteTargets(targets []string, url string) error { + // TODO: + // jobName := "redis" + // 删除yml文件中有关配置 + return nil +} + func MonitorTargets(targets []string) error { plugin, err := client.GetClient().GetPluginInfo("redis") if err != nil { diff --git a/redis/server/service/agent.go b/redis/server/service/agent.go index 509865ab..806f3992 100644 --- a/redis/server/service/agent.go +++ b/redis/server/service/agent.go @@ -2,18 +2,13 @@ package service import ( "gitee.com/openeuler/PilotGo-plugins/sdk/common" + "gitee.com/openeuler/PilotGo-plugins/sdk/plugin/client" "openeuler.org/PilotGo/redis-plugin/global" "openeuler.org/PilotGo/redis-plugin/plugin" ) -func Install(param *common.Batch) ([]interface{}, error) { - cmd := "yum install -y redis_exporter && systemctl start redis_exporter" - - cmdResults, err := global.GlobalClient.RunScript(param, cmd) - if err != nil { - return nil, err - } +func FormatData(cmdResults []*client.CmdResult, sign int) ([]interface{}, error) { ret := []interface{}{} monitorTargets := []string{} for _, result := range cmdResults { @@ -33,18 +28,53 @@ func Install(param *common.Batch) ([]interface{}, error) { d.InstallStatus = "error" d.Error = result.Stderr } else { - // TODO: add redis exporter to prometheus monitor target here + // TODO: add or delete redis exporter to prometheus monitor target here // default exporter port :9121 monitorTargets = append(monitorTargets, result.MachineIP+":9121") } ret = append(ret, d) } + var err error + //分情况,也有删除 + if sign == 1 { + //添加配置 + err = plugin.MonitorTargets(monitorTargets) + } + if sign == 0 { + //删除配置 + err = plugin.MonitorTargets(monitorTargets) + } + if err != nil { + return nil, err + } + return ret, nil +} - err = plugin.MonitorTargets(monitorTargets) +func Install(param *common.Batch) ([]interface{}, error) { + cmd := "yum install -y redis_exporter && systemctl start redis_exporter" + + cmdResults, err := global.GlobalClient.RunScript(param, cmd) + if err != nil { + return nil, err + } + + ret, err := FormatData(cmdResults, 1) if err != nil { return nil, err } + return ret, nil +} +func UnInstall(param *common.Batch) ([]interface{}, error) { + cmd := "systemctl stop redis_exporter && yum autoremove -y redis_exporter" + cmdResults, err := global.GlobalClient.RunScript(param, cmd) + if err != nil { + return nil, err + } + ret, err := FormatData(cmdResults, 0) + if err != nil { + return nil, err + } return ret, nil } -- Gitee