From 099b719894e0fc874f0d3329aa7f30ab567b71d7 Mon Sep 17 00:00:00 2001 From: Joey Date: Sun, 18 Jun 2023 16:56:43 +0800 Subject: [PATCH 1/7] add apis --- .../nacos/prometheus/api/ApiConstants.java | 4 + .../controller/PrometheusController.java | 95 +++++++++++++------ .../prometheus/utils/PrometheusUtils.java | 31 ++++++ 3 files changed, 103 insertions(+), 27 deletions(-) create mode 100644 prometheus/src/main/java/com/alibaba/nacos/prometheus/utils/PrometheusUtils.java diff --git a/prometheus/src/main/java/com/alibaba/nacos/prometheus/api/ApiConstants.java b/prometheus/src/main/java/com/alibaba/nacos/prometheus/api/ApiConstants.java index c4e916780f3..e5c62766c3b 100644 --- a/prometheus/src/main/java/com/alibaba/nacos/prometheus/api/ApiConstants.java +++ b/prometheus/src/main/java/com/alibaba/nacos/prometheus/api/ApiConstants.java @@ -24,5 +24,9 @@ public class ApiConstants { public static final String PROMETHEUS_CONTROLLER_PATH = "/prometheus"; + + public static final String PROMETHEUS_CONTROLLER_NAMESPACE_PATH = "/prometheus/namespace/{namespace}"; + + public static final String PROMETHEUS_CONTROLLER_SERVICE_PATH = "/prometheus/namespace/{namespace}/service/{service}"; } diff --git a/prometheus/src/main/java/com/alibaba/nacos/prometheus/controller/PrometheusController.java b/prometheus/src/main/java/com/alibaba/nacos/prometheus/controller/PrometheusController.java index 954fc6433c2..950cd051be0 100644 --- a/prometheus/src/main/java/com/alibaba/nacos/prometheus/controller/PrometheusController.java +++ b/prometheus/src/main/java/com/alibaba/nacos/prometheus/controller/PrometheusController.java @@ -23,20 +23,19 @@ import com.alibaba.nacos.naming.core.v2.ServiceManager; import com.alibaba.nacos.naming.core.v2.pojo.Service; import com.alibaba.nacos.prometheus.api.ApiConstants; +import com.alibaba.nacos.prometheus.utils.PrometheusUtils; import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Set; -import static java.util.stream.Collectors.groupingBy; /** * Support Prometheus SD Controller. @@ -46,16 +45,16 @@ @RestController @ConditionalOnProperty(name = "nacos.prometheus.metrics.enabled", havingValue = "true") public class PrometheusController { - + @Autowired private InstanceOperatorClientImpl instanceServiceV2; - + private final ServiceManager serviceManager; - + public PrometheusController() { this.serviceManager = ServiceManager.getInstance(); } - + /** * Get all service instances. * @@ -69,30 +68,72 @@ public ResponseEntity metric() throws NacosException { for (String namespace : allNamespaces) { Set singletons = serviceManager.getSingletons(namespace); for (Service service : singletons) { - + List instances = instanceServiceV2.listAllInstances(namespace, service.getGroupedServiceName()); - - for (Instance instance : instances) { - targetSet.add(instance); - } - + + targetSet.addAll(instances); + } + } + + PrometheusUtils.assembleArrayNodes(targetSet, arrayNode); + return ResponseEntity.ok().body(arrayNode.toString()); + } + + + /** + * Get service instances from designated namespace. + * + * @throws NacosException NacosException. + */ + @GetMapping(value = ApiConstants.PROMETHEUS_CONTROLLER_NAMESPACE_PATH, produces = "application/json; charset=UTF-8") + public ResponseEntity metricNamespace(@PathVariable("namespace") String namespace) throws NacosException { + ArrayNode arrayNode = JacksonUtils.createEmptyArrayNode(); + Set targetSet = new HashSet<>(); + Set allNamespaces = serviceManager.getAllNamespaces(); + if (!allNamespaces.contains(namespace)) { + return ResponseEntity.ok().body(arrayNode.toString()); + } + + Set singletons = serviceManager.getSingletons(namespace); + for (Service service : singletons) { + + List instances = instanceServiceV2.listAllInstances(namespace, + service.getGroupedServiceName()); + + targetSet.addAll(instances); + } + + PrometheusUtils.assembleArrayNodes(targetSet, arrayNode); + return ResponseEntity.ok().body(arrayNode.toString()); + } + + /** + * Get service instances from designated namespace and service. + * + * @throws NacosException NacosException. + */ + @GetMapping(value = ApiConstants.PROMETHEUS_CONTROLLER_SERVICE_PATH, produces = "application/json; charset=UTF-8") + public ResponseEntity metricNamespaceService(@PathVariable("namespace") String namespace, @PathVariable("service") String service) throws NacosException { + ArrayNode arrayNode = JacksonUtils.createEmptyArrayNode(); + Set targetSet = new HashSet<>(); + Set allNamespaces = serviceManager.getAllNamespaces(); + if (!allNamespaces.contains(namespace)) { + return ResponseEntity.ok().body(arrayNode.toString()); + } + + Set singletons = serviceManager.getSingletons(namespace); + for (Service existService : singletons) { + if (!existService.getName().equals(service)) { + continue; } + List instances = instanceServiceV2.listAllInstances(namespace, + existService.getGroupedServiceName()); + + targetSet.addAll(instances); } - Map> groupingInsMap = targetSet.stream().collect(groupingBy(Instance::getClusterName)); - groupingInsMap.forEach((key, value) -> { - ObjectNode jsonNode = JacksonUtils.createEmptyJsonNode(); - ArrayNode targetsNode = JacksonUtils.createEmptyArrayNode(); - ObjectNode labelNode = JacksonUtils.createEmptyJsonNode(); - value.forEach(e -> { - targetsNode.add(e.getIp() + ":" + e.getPort()); - }); - labelNode.put("__meta_clusterName", key); - jsonNode.replace("targets", targetsNode); - jsonNode.replace("labels", labelNode); - arrayNode.add(jsonNode); - - }); + PrometheusUtils.assembleArrayNodes(targetSet, arrayNode); + return ResponseEntity.ok().body(arrayNode.toString()); } } diff --git a/prometheus/src/main/java/com/alibaba/nacos/prometheus/utils/PrometheusUtils.java b/prometheus/src/main/java/com/alibaba/nacos/prometheus/utils/PrometheusUtils.java new file mode 100644 index 00000000000..2dbcd7a159c --- /dev/null +++ b/prometheus/src/main/java/com/alibaba/nacos/prometheus/utils/PrometheusUtils.java @@ -0,0 +1,31 @@ +package com.alibaba.nacos.prometheus.utils; + +import com.alibaba.nacos.api.naming.pojo.Instance; +import com.alibaba.nacos.common.utils.JacksonUtils; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static java.util.stream.Collectors.groupingBy; + +public class PrometheusUtils { + + public static void assembleArrayNodes(Set targetSet, ArrayNode arrayNode) { + Map> groupingInsMap = targetSet.stream().collect(groupingBy(Instance::getClusterName)); + groupingInsMap.forEach((key, value) -> { + ObjectNode jsonNode = JacksonUtils.createEmptyJsonNode(); + ArrayNode targetsNode = JacksonUtils.createEmptyArrayNode(); + ObjectNode labelNode = JacksonUtils.createEmptyJsonNode(); + value.forEach(e -> { + targetsNode.add(e.getIp() + ":" + e.getPort()); + }); + labelNode.put("__meta_clusterName", key); + jsonNode.replace("targets", targetsNode); + jsonNode.replace("labels", labelNode); + arrayNode.add(jsonNode); + }); + } +} From af347eda8bb36ca4a37955205b035461db9e0126 Mon Sep 17 00:00:00 2001 From: Joey Date: Sun, 18 Jun 2023 17:05:29 +0800 Subject: [PATCH 2/7] add tests --- .../controller/PrometheusControllerTest.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/prometheus/src/test/java/com/alibaba/nacos/prometheus/controller/PrometheusControllerTest.java b/prometheus/src/test/java/com/alibaba/nacos/prometheus/controller/PrometheusControllerTest.java index 8086f1416da..5287d500512 100644 --- a/prometheus/src/test/java/com/alibaba/nacos/prometheus/controller/PrometheusControllerTest.java +++ b/prometheus/src/test/java/com/alibaba/nacos/prometheus/controller/PrometheusControllerTest.java @@ -102,5 +102,28 @@ public void testMetric() throws Exception { Assert.assertEquals(200, response.getStatus()); assertEquals(testInstanceList.size(), JacksonUtils.toObj(response.getContentAsString()).size()); } + + @Test + public void testMetricNamespace() throws Exception { + when(instanceServiceV2.listAllInstances(nameSpace, NamingUtils.getGroupedName(name, group))).thenReturn( + testInstanceList); + String prometheusNamespacePath = ApiConstants.PROMETHEUS_CONTROLLER_NAMESPACE_PATH.replace("{namespace}", nameSpace); + MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get(prometheusNamespacePath); + MockHttpServletResponse response = mockMvc.perform(builder).andReturn().getResponse(); + Assert.assertEquals(200, response.getStatus()); + assertEquals(testInstanceList.size(), JacksonUtils.toObj(response.getContentAsString()).size()); + } + + @Test + public void testMetricNamespaceService() throws Exception { + when(instanceServiceV2.listAllInstances(nameSpace, NamingUtils.getGroupedName(name, group))).thenReturn( + testInstanceList); + String promethesuNamespaceServicePath = ApiConstants.PROMETHEUS_CONTROLLER_NAMESPACE_PATH.replace("{namespace}", nameSpace); + promethesuNamespaceServicePath = promethesuNamespaceServicePath.replace("{service}", service.getName()); + MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get(promethesuNamespaceServicePath); + MockHttpServletResponse response = mockMvc.perform(builder).andReturn().getResponse(); + Assert.assertEquals(200, response.getStatus()); + assertEquals(testInstanceList.size(), JacksonUtils.toObj(response.getContentAsString()).size()); + } } From 24b3a75d8208d0bb116a888effad54714a152f58 Mon Sep 17 00:00:00 2001 From: Joey Date: Sun, 18 Jun 2023 17:34:22 +0800 Subject: [PATCH 3/7] fix checkstyle --- .../conf/PrometheusSecurityConfiguration.java | 4 ++ .../controller/PrometheusController.java | 41 +++++++++++-------- .../prometheus/utils/PrometheusUtils.java | 27 +++++++++++- .../controller/PrometheusControllerTest.java | 10 +++-- 4 files changed, 59 insertions(+), 23 deletions(-) diff --git a/prometheus/src/main/java/com/alibaba/nacos/prometheus/conf/PrometheusSecurityConfiguration.java b/prometheus/src/main/java/com/alibaba/nacos/prometheus/conf/PrometheusSecurityConfiguration.java index 87488b71288..991c966301f 100644 --- a/prometheus/src/main/java/com/alibaba/nacos/prometheus/conf/PrometheusSecurityConfiguration.java +++ b/prometheus/src/main/java/com/alibaba/nacos/prometheus/conf/PrometheusSecurityConfiguration.java @@ -21,7 +21,9 @@ import org.springframework.security.config.annotation.web.builders.WebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import static com.alibaba.nacos.prometheus.api.ApiConstants.PROMETHEUS_CONTROLLER_NAMESPACE_PATH; import static com.alibaba.nacos.prometheus.api.ApiConstants.PROMETHEUS_CONTROLLER_PATH; +import static com.alibaba.nacos.prometheus.api.ApiConstants.PROMETHEUS_CONTROLLER_SERVICE_PATH; /** @@ -36,5 +38,7 @@ public class PrometheusSecurityConfiguration extends WebSecurityConfigurerAdapte @Override public void configure(WebSecurity web) throws Exception { web.ignoring().mvcMatchers(PROMETHEUS_CONTROLLER_PATH); + web.ignoring().mvcMatchers(PROMETHEUS_CONTROLLER_NAMESPACE_PATH); + web.ignoring().mvcMatchers(PROMETHEUS_CONTROLLER_SERVICE_PATH); } } diff --git a/prometheus/src/main/java/com/alibaba/nacos/prometheus/controller/PrometheusController.java b/prometheus/src/main/java/com/alibaba/nacos/prometheus/controller/PrometheusController.java index 950cd051be0..363f8c5eb4c 100644 --- a/prometheus/src/main/java/com/alibaba/nacos/prometheus/controller/PrometheusController.java +++ b/prometheus/src/main/java/com/alibaba/nacos/prometheus/controller/PrometheusController.java @@ -45,16 +45,16 @@ @RestController @ConditionalOnProperty(name = "nacos.prometheus.metrics.enabled", havingValue = "true") public class PrometheusController { - + @Autowired private InstanceOperatorClientImpl instanceServiceV2; - + private final ServiceManager serviceManager; - + public PrometheusController() { this.serviceManager = ServiceManager.getInstance(); } - + /** * Get all service instances. * @@ -68,19 +68,20 @@ public ResponseEntity metric() throws NacosException { for (String namespace : allNamespaces) { Set singletons = serviceManager.getSingletons(namespace); for (Service service : singletons) { - + List instances = instanceServiceV2.listAllInstances(namespace, service.getGroupedServiceName()); - + targetSet.addAll(instances); + } } - + PrometheusUtils.assembleArrayNodes(targetSet, arrayNode); return ResponseEntity.ok().body(arrayNode.toString()); } - - + + /** * Get service instances from designated namespace. * @@ -94,34 +95,36 @@ public ResponseEntity metricNamespace(@PathVariable("namespace") String namespac if (!allNamespaces.contains(namespace)) { return ResponseEntity.ok().body(arrayNode.toString()); } - + Set singletons = serviceManager.getSingletons(namespace); for (Service service : singletons) { - + List instances = instanceServiceV2.listAllInstances(namespace, service.getGroupedServiceName()); - + targetSet.addAll(instances); + } - + PrometheusUtils.assembleArrayNodes(targetSet, arrayNode); return ResponseEntity.ok().body(arrayNode.toString()); } - + /** * Get service instances from designated namespace and service. * * @throws NacosException NacosException. */ @GetMapping(value = ApiConstants.PROMETHEUS_CONTROLLER_SERVICE_PATH, produces = "application/json; charset=UTF-8") - public ResponseEntity metricNamespaceService(@PathVariable("namespace") String namespace, @PathVariable("service") String service) throws NacosException { + public ResponseEntity metricNamespaceService(@PathVariable("namespace") String namespace, + @PathVariable("service") String service) throws NacosException { ArrayNode arrayNode = JacksonUtils.createEmptyArrayNode(); Set targetSet = new HashSet<>(); Set allNamespaces = serviceManager.getAllNamespaces(); if (!allNamespaces.contains(namespace)) { return ResponseEntity.ok().body(arrayNode.toString()); } - + Set singletons = serviceManager.getSingletons(namespace); for (Service existService : singletons) { if (!existService.getName().equals(service)) { @@ -129,11 +132,13 @@ public ResponseEntity metricNamespaceService(@PathVariable("namespace") String n } List instances = instanceServiceV2.listAllInstances(namespace, existService.getGroupedServiceName()); - + targetSet.addAll(instances); + } + PrometheusUtils.assembleArrayNodes(targetSet, arrayNode); - + return ResponseEntity.ok().body(arrayNode.toString()); } } diff --git a/prometheus/src/main/java/com/alibaba/nacos/prometheus/utils/PrometheusUtils.java b/prometheus/src/main/java/com/alibaba/nacos/prometheus/utils/PrometheusUtils.java index 2dbcd7a159c..9fd377af57e 100644 --- a/prometheus/src/main/java/com/alibaba/nacos/prometheus/utils/PrometheusUtils.java +++ b/prometheus/src/main/java/com/alibaba/nacos/prometheus/utils/PrometheusUtils.java @@ -1,3 +1,19 @@ +/* + * Copyright 1999-2018 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.alibaba.nacos.prometheus.utils; import com.alibaba.nacos.api.naming.pojo.Instance; @@ -11,8 +27,17 @@ import static java.util.stream.Collectors.groupingBy; +/** + * prometheus common utils. + * + * @author Joey777210 + */ public class PrometheusUtils { - + + /** + * Assemble arrayNodes for prometheus sd api. + * + */ public static void assembleArrayNodes(Set targetSet, ArrayNode arrayNode) { Map> groupingInsMap = targetSet.stream().collect(groupingBy(Instance::getClusterName)); groupingInsMap.forEach((key, value) -> { diff --git a/prometheus/src/test/java/com/alibaba/nacos/prometheus/controller/PrometheusControllerTest.java b/prometheus/src/test/java/com/alibaba/nacos/prometheus/controller/PrometheusControllerTest.java index 5287d500512..488efabead0 100644 --- a/prometheus/src/test/java/com/alibaba/nacos/prometheus/controller/PrometheusControllerTest.java +++ b/prometheus/src/test/java/com/alibaba/nacos/prometheus/controller/PrometheusControllerTest.java @@ -102,23 +102,25 @@ public void testMetric() throws Exception { Assert.assertEquals(200, response.getStatus()); assertEquals(testInstanceList.size(), JacksonUtils.toObj(response.getContentAsString()).size()); } - + @Test public void testMetricNamespace() throws Exception { when(instanceServiceV2.listAllInstances(nameSpace, NamingUtils.getGroupedName(name, group))).thenReturn( testInstanceList); - String prometheusNamespacePath = ApiConstants.PROMETHEUS_CONTROLLER_NAMESPACE_PATH.replace("{namespace}", nameSpace); + String prometheusNamespacePath = ApiConstants.PROMETHEUS_CONTROLLER_NAMESPACE_PATH.replace("{namespace}", + nameSpace); MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get(prometheusNamespacePath); MockHttpServletResponse response = mockMvc.perform(builder).andReturn().getResponse(); Assert.assertEquals(200, response.getStatus()); assertEquals(testInstanceList.size(), JacksonUtils.toObj(response.getContentAsString()).size()); } - + @Test public void testMetricNamespaceService() throws Exception { when(instanceServiceV2.listAllInstances(nameSpace, NamingUtils.getGroupedName(name, group))).thenReturn( testInstanceList); - String promethesuNamespaceServicePath = ApiConstants.PROMETHEUS_CONTROLLER_NAMESPACE_PATH.replace("{namespace}", nameSpace); + String promethesuNamespaceServicePath = ApiConstants.PROMETHEUS_CONTROLLER_NAMESPACE_PATH.replace("{namespace}", + nameSpace); promethesuNamespaceServicePath = promethesuNamespaceServicePath.replace("{service}", service.getName()); MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get(promethesuNamespaceServicePath); MockHttpServletResponse response = mockMvc.perform(builder).andReturn().getResponse(); From 1c6f3ccb6c2b2ca7f861dcf8bddda30fa4d3b7a9 Mon Sep 17 00:00:00 2001 From: Joey Date: Tue, 4 Jul 2023 22:32:54 +0800 Subject: [PATCH 4/7] param namespace to namespaceId --- .../nacos/prometheus/controller/PrometheusController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/prometheus/src/main/java/com/alibaba/nacos/prometheus/controller/PrometheusController.java b/prometheus/src/main/java/com/alibaba/nacos/prometheus/controller/PrometheusController.java index 363f8c5eb4c..1180e5b8831 100644 --- a/prometheus/src/main/java/com/alibaba/nacos/prometheus/controller/PrometheusController.java +++ b/prometheus/src/main/java/com/alibaba/nacos/prometheus/controller/PrometheusController.java @@ -88,18 +88,18 @@ public ResponseEntity metric() throws NacosException { * @throws NacosException NacosException. */ @GetMapping(value = ApiConstants.PROMETHEUS_CONTROLLER_NAMESPACE_PATH, produces = "application/json; charset=UTF-8") - public ResponseEntity metricNamespace(@PathVariable("namespace") String namespace) throws NacosException { + public ResponseEntity metricNamespace(@PathVariable("namespaceId") String namespaceId) throws NacosException { ArrayNode arrayNode = JacksonUtils.createEmptyArrayNode(); Set targetSet = new HashSet<>(); Set allNamespaces = serviceManager.getAllNamespaces(); - if (!allNamespaces.contains(namespace)) { + if (!allNamespaces.contains(namespaceId)) { return ResponseEntity.ok().body(arrayNode.toString()); } - Set singletons = serviceManager.getSingletons(namespace); + Set singletons = serviceManager.getSingletons(namespaceId); for (Service service : singletons) { - List instances = instanceServiceV2.listAllInstances(namespace, + List instances = instanceServiceV2.listAllInstances(namespaceId, service.getGroupedServiceName()); targetSet.addAll(instances); From 3ab6ccfd4b629673abe30a3a9f33740ef1dc4d74 Mon Sep 17 00:00:00 2001 From: Joey Date: Thu, 6 Jul 2023 22:46:39 +0800 Subject: [PATCH 5/7] namespace to namespaceId --- .../com/alibaba/nacos/prometheus/api/ApiConstants.java | 4 ++-- .../nacos/prometheus/controller/PrometheusController.java | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/prometheus/src/main/java/com/alibaba/nacos/prometheus/api/ApiConstants.java b/prometheus/src/main/java/com/alibaba/nacos/prometheus/api/ApiConstants.java index e5c62766c3b..21864ced96e 100644 --- a/prometheus/src/main/java/com/alibaba/nacos/prometheus/api/ApiConstants.java +++ b/prometheus/src/main/java/com/alibaba/nacos/prometheus/api/ApiConstants.java @@ -25,8 +25,8 @@ public class ApiConstants { public static final String PROMETHEUS_CONTROLLER_PATH = "/prometheus"; - public static final String PROMETHEUS_CONTROLLER_NAMESPACE_PATH = "/prometheus/namespace/{namespace}"; + public static final String PROMETHEUS_CONTROLLER_NAMESPACE_PATH = "/prometheus/namespaceId/{namespaceId}"; - public static final String PROMETHEUS_CONTROLLER_SERVICE_PATH = "/prometheus/namespace/{namespace}/service/{service}"; + public static final String PROMETHEUS_CONTROLLER_SERVICE_PATH = "/prometheus/namespaceId/{namespaceId}/service/{service}"; } diff --git a/prometheus/src/main/java/com/alibaba/nacos/prometheus/controller/PrometheusController.java b/prometheus/src/main/java/com/alibaba/nacos/prometheus/controller/PrometheusController.java index 1180e5b8831..19d197ed8b8 100644 --- a/prometheus/src/main/java/com/alibaba/nacos/prometheus/controller/PrometheusController.java +++ b/prometheus/src/main/java/com/alibaba/nacos/prometheus/controller/PrometheusController.java @@ -116,21 +116,21 @@ public ResponseEntity metricNamespace(@PathVariable("namespaceId") String namesp * @throws NacosException NacosException. */ @GetMapping(value = ApiConstants.PROMETHEUS_CONTROLLER_SERVICE_PATH, produces = "application/json; charset=UTF-8") - public ResponseEntity metricNamespaceService(@PathVariable("namespace") String namespace, + public ResponseEntity metricNamespaceService(@PathVariable("namespaceId") String namespaceId, @PathVariable("service") String service) throws NacosException { ArrayNode arrayNode = JacksonUtils.createEmptyArrayNode(); Set targetSet = new HashSet<>(); Set allNamespaces = serviceManager.getAllNamespaces(); - if (!allNamespaces.contains(namespace)) { + if (!allNamespaces.contains(namespaceId)) { return ResponseEntity.ok().body(arrayNode.toString()); } - Set singletons = serviceManager.getSingletons(namespace); + Set singletons = serviceManager.getSingletons(namespaceId); for (Service existService : singletons) { if (!existService.getName().equals(service)) { continue; } - List instances = instanceServiceV2.listAllInstances(namespace, + List instances = instanceServiceV2.listAllInstances(namespaceId, existService.getGroupedServiceName()); targetSet.addAll(instances); From 01972773bbcd87d4dd5140896ad130b19d5d9ae1 Mon Sep 17 00:00:00 2001 From: Joey Date: Sun, 16 Jul 2023 15:55:41 +0800 Subject: [PATCH 6/7] fix test case --- .../nacos/prometheus/controller/PrometheusControllerTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/prometheus/src/test/java/com/alibaba/nacos/prometheus/controller/PrometheusControllerTest.java b/prometheus/src/test/java/com/alibaba/nacos/prometheus/controller/PrometheusControllerTest.java index 488efabead0..461e7cb6332 100644 --- a/prometheus/src/test/java/com/alibaba/nacos/prometheus/controller/PrometheusControllerTest.java +++ b/prometheus/src/test/java/com/alibaba/nacos/prometheus/controller/PrometheusControllerTest.java @@ -107,7 +107,7 @@ public void testMetric() throws Exception { public void testMetricNamespace() throws Exception { when(instanceServiceV2.listAllInstances(nameSpace, NamingUtils.getGroupedName(name, group))).thenReturn( testInstanceList); - String prometheusNamespacePath = ApiConstants.PROMETHEUS_CONTROLLER_NAMESPACE_PATH.replace("{namespace}", + String prometheusNamespacePath = ApiConstants.PROMETHEUS_CONTROLLER_NAMESPACE_PATH.replace("{namespaceId}", nameSpace); MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get(prometheusNamespacePath); MockHttpServletResponse response = mockMvc.perform(builder).andReturn().getResponse(); @@ -119,7 +119,7 @@ public void testMetricNamespace() throws Exception { public void testMetricNamespaceService() throws Exception { when(instanceServiceV2.listAllInstances(nameSpace, NamingUtils.getGroupedName(name, group))).thenReturn( testInstanceList); - String promethesuNamespaceServicePath = ApiConstants.PROMETHEUS_CONTROLLER_NAMESPACE_PATH.replace("{namespace}", + String promethesuNamespaceServicePath = ApiConstants.PROMETHEUS_CONTROLLER_NAMESPACE_PATH.replace("{namespaceId}", nameSpace); promethesuNamespaceServicePath = promethesuNamespaceServicePath.replace("{service}", service.getName()); MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get(promethesuNamespaceServicePath); From de2dfe44f571ec7e7dae34a62590524322726a04 Mon Sep 17 00:00:00 2001 From: Joey Date: Sun, 16 Jul 2023 16:22:40 +0800 Subject: [PATCH 7/7] fix test case --- .../nacos/prometheus/controller/PrometheusControllerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prometheus/src/test/java/com/alibaba/nacos/prometheus/controller/PrometheusControllerTest.java b/prometheus/src/test/java/com/alibaba/nacos/prometheus/controller/PrometheusControllerTest.java index 461e7cb6332..b321c9ab913 100644 --- a/prometheus/src/test/java/com/alibaba/nacos/prometheus/controller/PrometheusControllerTest.java +++ b/prometheus/src/test/java/com/alibaba/nacos/prometheus/controller/PrometheusControllerTest.java @@ -119,7 +119,7 @@ public void testMetricNamespace() throws Exception { public void testMetricNamespaceService() throws Exception { when(instanceServiceV2.listAllInstances(nameSpace, NamingUtils.getGroupedName(name, group))).thenReturn( testInstanceList); - String promethesuNamespaceServicePath = ApiConstants.PROMETHEUS_CONTROLLER_NAMESPACE_PATH.replace("{namespaceId}", + String promethesuNamespaceServicePath = ApiConstants.PROMETHEUS_CONTROLLER_SERVICE_PATH.replace("{namespaceId}", nameSpace); promethesuNamespaceServicePath = promethesuNamespaceServicePath.replace("{service}", service.getName()); MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get(promethesuNamespaceServicePath);