get config from metadata
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/Constants.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/Constants.java
index 6bd38ca..b10f566 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/Constants.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/common/util/Constants.java
@@ -55,6 +55,8 @@
public static final String SPECIFICATION_VERSION_KEY = "release";
public static final String GLOBAL_CONFIG = "global";
public static final String GLOBAL_CONFIG_PATH = "config/dubbo/dubbo.properties";
+ public static final String METRICS_PORT = "metrics.port";
+ public static final String METRICS_PROTOCOL = "metrics.protocol";
public static final Set<String> CONFIGS = new HashSet<>();
static {
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/MetricsCollectController.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/MetricsCollectController.java
index b120383..a21fbd1 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/MetricsCollectController.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/MetricsCollectController.java
@@ -19,20 +19,28 @@
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
+import org.apache.dubbo.admin.common.util.Constants;
+import org.apache.dubbo.admin.model.domain.Consumer;
+import org.apache.dubbo.admin.model.domain.Provider;
import org.apache.dubbo.admin.model.dto.MetricDTO;
import org.apache.dubbo.admin.service.ConsumerService;
import org.apache.dubbo.admin.service.ProviderService;
import org.apache.dubbo.admin.service.impl.MetrcisCollectServiceImpl;
+import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;
+import org.apache.dubbo.metadata.identifier.MetadataIdentifier;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
-import java.util.List;
-import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Set;
+import java.util.Iterator;
+
@RestController
@@ -63,17 +71,14 @@
@RequestMapping( value = "/ipAddr", method = RequestMethod.GET)
public List<MetricDTO> searchService(@RequestParam String ip, @RequestParam String group) {
+ System.out.println(ip);
Map<String, String> configMap = new HashMap<String, String>();
- //TODO get this message from config file
- // key:port value:protocol
- configMap.put("54188", "dubbo");
- configMap.put("54199", "dubbo");
+ addMetricsConfigToMap(configMap);
- // default value
+// default value
if (configMap.size() <= 0) {
configMap.put("20880", "dubbo");
}
-
List<MetricDTO> metricDTOS = new ArrayList<>();
for (String port : configMap.keySet()) {
String protocol = configMap.get(port);
@@ -83,4 +88,38 @@
return metricDTOS;
}
+
+ protected void addMetricsConfigToMap(Map<String, String> configMap) {
+ Set<String> services = providerService.findServices();
+ services.addAll(consumerService.findServices());
+ Iterator<String> it = services.iterator();
+ while (it.hasNext()) {
+ String service = it.next();
+ List<Provider> providers = providerService.findByService(service);
+ List<Consumer> consumers = consumerService.findByService(service);
+ String providerApplication = null;
+ String consumerApplication = null;
+ providerApplication = providers.get(0).getApplication();
+ consumerApplication = consumers.get(0).getApplication();
+
+ MetadataIdentifier providerMetadataIdentifier = new MetadataIdentifier(service
+ ,null,null, Constants.PROVIDER_SIDE ,providerApplication);
+ MetadataIdentifier consumerMetadataIdentifier = new MetadataIdentifier(service
+ ,null,null, Constants.CONSUMER_SIDE ,consumerApplication);
+
+ if (consumerApplication != null) {
+ String consumerMetadata = consumerService.getConsumerMetadata(consumerMetadataIdentifier);
+ Map<String, String> consumerParameters = new Gson().fromJson(consumerMetadata, Map.class);
+ configMap.put(consumerParameters.get(Constants.METRICS_PORT), consumerParameters.get(Constants.METRICS_PROTOCOL));
+ }
+
+ if (providerApplication != null) {
+ String providerMetaData = providerService.getProviderMetaData(providerMetadataIdentifier);
+ FullServiceDefinition providerServiceDefinition = new Gson().fromJson(providerMetaData, FullServiceDefinition.class);
+ Map<String, String> parameters = providerServiceDefinition.getParameters();
+ configMap.put(parameters.get(Constants.METRICS_PORT), parameters.get(Constants.METRICS_PROTOCOL));
+ }
+ }
+ configMap.remove(null);
+ }
}
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
index e1b8679..66a05b8 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
@@ -38,6 +38,7 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@@ -107,7 +108,7 @@
@RequestMapping(value = "/services", method = RequestMethod.GET)
public Set<String> allServices(@PathVariable String env) {
- return providerService.findServices();
+ return new HashSet<>(providerService.findServices());
}
@RequestMapping(value = "/applications", method = RequestMethod.GET)