diff --git a/ngrinder-controller/src/main/java/org/ngrinder/agent/controller/MonitorManagerApiController.java b/ngrinder-controller/src/main/java/org/ngrinder/agent/controller/MonitorManagerApiController.java index 02fc923d4f..e60fa8205e 100644 --- a/ngrinder-controller/src/main/java/org/ngrinder/agent/controller/MonitorManagerApiController.java +++ b/ngrinder-controller/src/main/java/org/ngrinder/agent/controller/MonitorManagerApiController.java @@ -13,6 +13,7 @@ */ package org.ngrinder.agent.controller; +import org.ngrinder.common.exception.NGrinderRuntimeException; import org.ngrinder.common.util.AopUtils; import org.ngrinder.infra.config.Config; import org.ngrinder.monitor.controller.model.SystemDataModel; @@ -53,6 +54,13 @@ public class MonitorManagerApiController { */ @GetMapping("/state") public SystemDataModel getRealTimeMonitorData(@RequestParam final String ip) throws InterruptedException, ExecutionException, TimeoutException { + if (!config.isMonitorEnabled()) { + throw new NGrinderRuntimeException( + "Monitoring is disabled. If you want to enable monitoring feature," + + " modify system settings. but there is a risk of attack from the monitoring server." + ); + } + int port = config.getMonitorPort(); Future systemInfoFuture = AopUtils.proxy(this).getAsyncSystemInfo(ip, port); SystemInfo systemInfo = checkNotNull(systemInfoFuture.get(2, TimeUnit.SECONDS), "Monitoring data is not available."); diff --git a/ngrinder-controller/src/main/java/org/ngrinder/common/constant/ControllerConstants.java b/ngrinder-controller/src/main/java/org/ngrinder/common/constant/ControllerConstants.java index d3e5cb88cd..7fd1e84218 100644 --- a/ngrinder-controller/src/main/java/org/ngrinder/common/constant/ControllerConstants.java +++ b/ngrinder-controller/src/main/java/org/ngrinder/common/constant/ControllerConstants.java @@ -60,6 +60,7 @@ public interface ControllerConstants { String PROP_CONTROLLER_MAX_RUN_HOUR = "controller.max_run_hour"; String PROP_CONTROLLER_MAX_VUSER_PER_AGENT = "controller.max_vuser_per_agent"; String PROP_CONTROLLER_MONITOR_PORT = "controller.monitor_port"; + String PROP_CONTROLLER_ENABLE_MONITOR = "controller.enable_monitor"; String PROP_CONTROLLER_PLUGIN_SUPPORT = "controller.plugin_support"; String PROP_CONTROLLER_SAFE_DIST = "controller.safe_dist"; String PROP_CONTROLLER_SAFE_DIST_THRESHOLD = "controller.safe_dist_threshold"; diff --git a/ngrinder-controller/src/main/java/org/ngrinder/infra/config/Config.java b/ngrinder-controller/src/main/java/org/ngrinder/infra/config/Config.java index bf841f8ee0..8720019d0a 100644 --- a/ngrinder-controller/src/main/java/org/ngrinder/infra/config/Config.java +++ b/ngrinder-controller/src/main/java/org/ngrinder/infra/config/Config.java @@ -238,6 +238,10 @@ public int getMonitorPort() { return getControllerProperties().getPropertyInt(PROP_CONTROLLER_MONITOR_PORT); } + public boolean isMonitorEnabled() { + return getControllerProperties().getPropertyBoolean(PROP_CONTROLLER_ENABLE_MONITOR); + } + /** * Check if the periodic usage report is enabled. * diff --git a/ngrinder-controller/src/main/resources/controller-properties.map b/ngrinder-controller/src/main/resources/controller-properties.map index 26e9bdce94..cb9af44281 100644 --- a/ngrinder-controller/src/main/resources/controller-properties.map +++ b/ngrinder-controller/src/main/resources/controller-properties.map @@ -14,6 +14,7 @@ controller.max_run_count,10000,agent.max.runcount controller.max_run_hour,8,agent.max.runhour controller.max_concurrent_test,10,ngrinder.max.concurrenttest controller.monitor_port,13243,monitor.listen.port +controller.enable_monitor,false, controller.url,,ngrinder.http.url,http.url controller.console_port_base,12000,ngrinder.console.portbase controller.controller_port,16001,ngrinder.agent.control.port diff --git a/ngrinder-controller/src/main/resources/ngrinder_home_template/system.conf b/ngrinder-controller/src/main/resources/ngrinder_home_template/system.conf index b3ba075fe7..c72f4533f6 100644 --- a/ngrinder-controller/src/main/resources/ngrinder_home_template/system.conf +++ b/ngrinder-controller/src/main/resources/ngrinder_home_template/system.conf @@ -1,4 +1,4 @@ -# Set verbose to print the detailed log +# Set verbose to print the detailed log #controller.verbose=true # If dev_mode is true, the log goes to stdout and @@ -32,7 +32,6 @@ # true if you want to controller uses high level password encoding(sha256). #controller.user_password_sha256=false - # The maximum number of agents which can be attached per one test. #controller.max_agent_per_test=10 @@ -52,6 +51,9 @@ # The monitor connecting port. The default value is 13243. #controller.monitor_port=13243 +# monitoring feature enable or not. +#controller.enable_monitor=false + # The base URL of the controller. If not set, the controller URL is automatically selected. #controller.url= @@ -135,7 +137,7 @@ # clustering configuration. # This is not the option applied on the fly. You need to reboot to apply this. ###################################################################################### -# These should be very carefully set. +# These should be very carefully set. # You can refer http://www.cubrid.org/wiki_ngrinder/entry/controller-clustering-guide # if you want to enable controller clustering. please enable below. diff --git a/ngrinder-frontend/src/js/components/perftest/modal/TargetHostInfoModal.vue b/ngrinder-frontend/src/js/components/perftest/modal/TargetHostInfoModal.vue index 73781608fb..13ae3b80c2 100644 --- a/ngrinder-frontend/src/js/components/perftest/modal/TargetHostInfoModal.vue +++ b/ngrinder-frontend/src/js/components/perftest/modal/TargetHostInfoModal.vue @@ -90,13 +90,13 @@ this.memory.queue.enQueue(res.data.totalMemory - res.data.freeMemory); this.cpu.chart.load({ json: { 'cpu-usage': this.cpu.queue.getArray() } }); this.memory.chart.load({ json: { 'memory-usage': this.memory.queue.getArray() } }); - }); + }).catch(() => {}); // ignore error. } closeMonitorConnection() { this.$http.get('/monitor/api/close', { params: { - ip: this.ip + ip: this.ip, }, }); }