diff options
| author | shizhendong <[email protected]> | 2021-04-20 10:38:30 +0800 |
|---|---|---|
| committer | shizhendong <[email protected]> | 2021-04-20 10:38:30 +0800 |
| commit | e30b44caea62f50eeda05408c2419fdafecc8f6e (patch) | |
| tree | 34ce0304029f0f53121db2df1711c3ecc8420211 | |
| parent | 52a77effdca74542a72ce6b356735c60b8910e26 (diff) | |
NEZ-562 fix: agent 修改 snmp_exporter/blackbox_exporter 更新配置后缺少调用 reload 接口
4 files changed, 46 insertions, 0 deletions
diff --git a/src/main/java/net/geedge/confagent/controller/BaseController.java b/src/main/java/net/geedge/confagent/controller/BaseController.java index 65bebdc..b9d8370 100644 --- a/src/main/java/net/geedge/confagent/controller/BaseController.java +++ b/src/main/java/net/geedge/confagent/controller/BaseController.java @@ -1,6 +1,11 @@ package net.geedge.confagent.controller; +import cn.hutool.core.net.url.UrlBuilder; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; import cn.hutool.log.Log; +import net.geedge.confagent.util.ConfagentUtil; +import net.geedge.confagent.util.Tool; import org.springframework.beans.factory.annotation.Value; public abstract class BaseController { @@ -46,4 +51,23 @@ public abstract class BaseController { @Value("${confagent.prometheus.rule}") protected String rulePath; + /** + * 调用 /-/reload 接口,热加载 server 配置文件, + * + * @param cmdLinePath + * @param serverListenAddr + * @param defaultServerPort + * @param defaultServerIP + * @return + */ + public boolean reloadServerConfiguration(String cmdLinePath, String serverListenAddr, int defaultServerPort, String defaultServerIP) { + UrlBuilder serverReloadUrl = new UrlBuilder(); + int serverPort = ConfagentUtil.getConfFilePort(cmdLinePath, serverListenAddr, defaultServerPort); + serverReloadUrl.setScheme("http").setHost(defaultServerIP).setPort(serverPort).addPath("/-/reload"); + + String url = serverReloadUrl.toString(); + HttpRequest post = Tool.HttpUtil.createPost(url); + HttpResponse response = post.execute(); + return 200 == response.getStatus(); + } } diff --git a/src/main/java/net/geedge/confagent/controller/BlackBoxController.java b/src/main/java/net/geedge/confagent/controller/BlackBoxController.java index 05cdf8a..440b10c 100644 --- a/src/main/java/net/geedge/confagent/controller/BlackBoxController.java +++ b/src/main/java/net/geedge/confagent/controller/BlackBoxController.java @@ -1,6 +1,8 @@ package net.geedge.confagent.controller; +import cn.hutool.log.Log; import net.geedge.confagent.util.R; +import net.geedge.confagent.util.RCode; import net.geedge.confagent.util.Tool; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.PostMapping; @@ -14,6 +16,8 @@ import java.util.Map; @RequestMapping("/blackboxExporter") public class BlackBoxController extends BaseController{ + private Log log = Log.get(); + @Value("${confagent.blackBoxExport.config}") private String blackboxConfPath; @@ -22,6 +26,12 @@ public class BlackBoxController extends BaseController{ Tool.YamlUtil.writeAsMap(configs, blackboxConfPath); + log.info("reload blackbox_exporter"); + boolean success = reloadServerConfiguration(blackboxExporterCmdLinePath, BLACKBOXEXPORTER_LISTEN_ADDR, DEFAULT_BLACKBOXEXPORTER_PORT, defaultBlackboxExporterIP); + if (!success) { + return R.error(RCode.CONFIG_BLAVKBOX_RELOAD_FAILED); + } + return R.ok(); } } diff --git a/src/main/java/net/geedge/confagent/controller/SNMPController.java b/src/main/java/net/geedge/confagent/controller/SNMPController.java index fe75a0f..6a75a5b 100644 --- a/src/main/java/net/geedge/confagent/controller/SNMPController.java +++ b/src/main/java/net/geedge/confagent/controller/SNMPController.java @@ -1,6 +1,8 @@ package net.geedge.confagent.controller; +import cn.hutool.log.Log; import net.geedge.confagent.util.R; +import net.geedge.confagent.util.RCode; import net.geedge.confagent.util.Tool; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.PostMapping; @@ -14,6 +16,8 @@ import java.util.Map; @RequestMapping("/snmpExporter") public class SNMPController extends BaseController{ + private Log log = Log.get(); + @Value("${confagent.snmpExporter.config}") private String snmpConfPath; @@ -22,6 +26,12 @@ public class SNMPController extends BaseController{ Tool.YamlUtil.writeAsMap(configs,snmpConfPath); + log.info("reload snmp_exporter"); + boolean success = reloadServerConfiguration(snmpExporterCmdLinePath, SNMPEXPORTER_LISTEN_ADDR, DEFAULT_SNMPEXPORTER_PORT, defaultSNMPExporterIP); + if (!success) { + return R.error(RCode.CONFIG_SNMP_EXPORTER_RELOAD_FAILED); + } + return R.ok(); } diff --git a/src/main/java/net/geedge/confagent/util/RCode.java b/src/main/java/net/geedge/confagent/util/RCode.java index 48d6654..a853521 100644 --- a/src/main/java/net/geedge/confagent/util/RCode.java +++ b/src/main/java/net/geedge/confagent/util/RCode.java @@ -10,6 +10,8 @@ public enum RCode { AUTH_READ_TOKEN_FAILD(10004,"Read token failed"), CONFIG_PROMETHEUS_RELOAD_FAILED(10005,"Reload prometheus failed"), + CONFIG_BLAVKBOX_RELOAD_FAILED(10006,"Reload blackbox_exporter failed"), + CONFIG_SNMP_EXPORTER_RELOAD_FAILED(10007,"Reload snmp_exporter failed"), ERROR(999, "error"); //通用错误/未知错误 private RCode(Integer code, String msg) { |
