AE86 преди 3 години
родител
ревизия
517d11b753

+ 10 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/MonitorService.java

@@ -1,8 +1,10 @@
 package org.dbsyncer.biz;
 
 import org.dbsyncer.biz.vo.MetaVo;
+import org.dbsyncer.biz.vo.MetricResponseVo;
 import org.dbsyncer.common.model.Paging;
 import org.dbsyncer.monitor.enums.MetricEnum;
+import org.dbsyncer.monitor.model.MetricResponse;
 import org.dbsyncer.storage.enums.StorageDataStatusEnum;
 
 import java.util.List;
@@ -80,4 +82,12 @@ public interface MonitorService {
      * @return
      */
     List<MetricEnum> getMetricEnumAll();
+
+    /**
+     * 获取监控系统指标
+     *
+     * @param metrics
+     * @return
+     */
+    List<MetricResponseVo> queryMetric(List<MetricResponse> metrics);
 }

+ 15 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/MonitorServiceImpl.java

@@ -6,12 +6,14 @@ import org.dbsyncer.biz.MonitorService;
 import org.dbsyncer.biz.vo.DataVo;
 import org.dbsyncer.biz.vo.LogVo;
 import org.dbsyncer.biz.vo.MetaVo;
+import org.dbsyncer.biz.vo.MetricResponseVo;
 import org.dbsyncer.common.model.Paging;
 import org.dbsyncer.common.util.CollectionUtils;
 import org.dbsyncer.common.util.JsonUtil;
 import org.dbsyncer.manager.Manager;
 import org.dbsyncer.monitor.Monitor;
 import org.dbsyncer.monitor.enums.MetricEnum;
+import org.dbsyncer.monitor.model.MetricResponse;
 import org.dbsyncer.parser.enums.ModelEnum;
 import org.dbsyncer.parser.model.Mapping;
 import org.dbsyncer.parser.model.Meta;
@@ -25,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 
+import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
@@ -144,6 +147,18 @@ public class MonitorServiceImpl implements MonitorService {
         return monitor.getMetricEnumAll();
     }
 
+    @Override
+    public List<MetricResponseVo> queryMetric(List<MetricResponse> metrics) {
+        if (CollectionUtils.isEmpty(metrics)) {
+            return Collections.EMPTY_LIST;
+        }
+        return metrics.stream().map(metric -> {
+            MetricResponseVo vo = new MetricResponseVo();
+            BeanUtils.copyProperties(metric, vo);
+            return vo;
+        }).collect(Collectors.toList());
+    }
+
     private MetaVo convertMeta2Vo(Meta meta) {
         Mapping mapping = manager.getMapping(meta.getMappingId());
         Assert.notNull(mapping, "驱动不存在.");

+ 7 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/vo/MetricResponseVo.java

@@ -0,0 +1,7 @@
+package org.dbsyncer.biz.vo;
+
+import org.dbsyncer.monitor.model.MetricResponse;
+
+public class MetricResponseVo extends MetricResponse {
+
+}

+ 8 - 5
dbsyncer-monitor/src/main/java/org/dbsyncer/monitor/model/Sample.java

@@ -1,18 +1,21 @@
 package org.dbsyncer.monitor.model;
 
-import org.dbsyncer.monitor.enums.StatisticEnum;
-
 public final class Sample {
 
-    private StatisticEnum statistic;
+    private String statistic;
 
     private Double value;
 
-    public StatisticEnum getStatistic() {
+    public Sample(String statistic, Double value) {
+        this.statistic = statistic;
+        this.value = value;
+    }
+
+    public String getStatistic() {
         return statistic;
     }
 
-    public void setStatistic(StatisticEnum statistic) {
+    public void setStatistic(String statistic) {
         this.statistic = statistic;
     }
 

+ 0 - 1
dbsyncer-web/src/main/java/org/dbsyncer/web/controller/TestController.java

@@ -8,7 +8,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.actuate.metrics.MetricsEndpoint;
 import org.springframework.context.ApplicationContext;
 import org.springframework.core.DefaultParameterNameDiscoverer;
 import org.springframework.core.ParameterNameDiscoverer;

+ 19 - 7
dbsyncer-web/src/main/java/org/dbsyncer/web/controller/monitor/MonitorController.java

@@ -5,10 +5,10 @@ import org.dbsyncer.biz.vo.RestResult;
 import org.dbsyncer.common.util.CollectionUtils;
 import org.dbsyncer.monitor.enums.MetricEnum;
 import org.dbsyncer.monitor.model.MetricResponse;
+import org.dbsyncer.monitor.model.Sample;
 import org.dbsyncer.web.controller.BaseController;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.actuate.metrics.MetricsEndpoint;
 import org.springframework.stereotype.Controller;
@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -34,18 +35,29 @@ public class MonitorController extends BaseController {
 
     @ResponseBody
     @RequestMapping("/get")
-    public Object get(ModelMap modelMap) {
-        List<MetricEnum> metricEnumList = monitorService.getMetricEnumAll();
-        List<MetricResponse> list = new ArrayList<>();
-        if(!CollectionUtils.isEmpty(metricEnumList)){
+    public RestResult get() {
+        try {
+            List<MetricEnum> metricEnumList = monitorService.getMetricEnumAll();
+            if (CollectionUtils.isEmpty(metricEnumList)) {
+                return RestResult.restSuccess(Collections.EMPTY_LIST);
+            }
+            List<MetricResponse> list = new ArrayList<>();
             metricEnumList.forEach(m -> {
                 MetricsEndpoint.MetricResponse metric = metricsEndpoint.metric(m.getCode(), null);
                 MetricResponse metricResponse = new MetricResponse();
-                BeanUtils.copyProperties(metric, metricResponse);
+                metricResponse.setName(metric.getName());
+                if (!CollectionUtils.isEmpty(metric.getMeasurements())) {
+                    List<Sample> measurements = new ArrayList<>();
+                    metric.getMeasurements().forEach(s -> measurements.add(new Sample(s.getStatistic().getTagValueRepresentation(), s.getValue())));
+                    metricResponse.setMeasurements(measurements);
+                }
                 list.add(metricResponse);
             });
+            return RestResult.restSuccess(monitorService.queryMetric(list));
+        } catch (Exception e) {
+            logger.error(e.getLocalizedMessage(), e.getClass());
+            return RestResult.restFail(e.getMessage());
         }
-        return list;
     }
 
     @RequestMapping("")

+ 1 - 1
dbsyncer-web/src/main/resources/application.properties

@@ -21,7 +21,7 @@ management.endpoints.web.base-path=/app
 management.endpoints.web.exposure.include=*
 management.endpoint.health.show-details=always
 info.app.name=DBSyncer
-info.app.version=1.0.7-Alpha
+info.app.version=1.0.8-Alpha
 info.app.copyright=&copy;2021 ${info.app.name}(${info.app.version})<br />Designed By <a href='https://gitee.com/ghi/dbsyncer' target='_blank' >AE86</a>
 
 #All < Trace < Debug < Info < Warn < Error < Fatal < OFF