浏览代码

优化监控

AE86 3 年之前
父节点
当前提交
b6a87eaf3d

+ 2 - 0
dbsyncer-biz/src/main/java/org/dbsyncer/biz/checker/impl/mapping/MappingChecker.java

@@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.util.Assert;
 
+import java.time.Instant;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -124,6 +125,7 @@ public class MappingChecker extends AbstractChecker {
 
         getMetaTotal(meta, mapping.getModel());
 
+        meta.setUpdateTime(Instant.now().toEpochMilli());
         manager.editMeta(meta);
     }
 

+ 22 - 51
dbsyncer-biz/src/main/java/org/dbsyncer/biz/impl/MonitorServiceImpl.java

@@ -9,20 +9,17 @@ import org.dbsyncer.biz.vo.*;
 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.DiskMetricEnum;
 import org.dbsyncer.monitor.enums.MetricEnum;
 import org.dbsyncer.monitor.enums.ThreadPoolMetricEnum;
+import org.dbsyncer.monitor.model.AppReportMetric;
 import org.dbsyncer.monitor.model.MetricResponse;
 import org.dbsyncer.parser.enums.ModelEnum;
 import org.dbsyncer.parser.model.Mapping;
 import org.dbsyncer.parser.model.Meta;
 import org.dbsyncer.storage.constant.ConfigConstant;
 import org.dbsyncer.storage.enums.StorageDataStatusEnum;
-import org.dbsyncer.storage.query.Query;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -40,14 +37,9 @@ import java.util.stream.Collectors;
 @Service
 public class MonitorServiceImpl implements MonitorService {
 
-    private final Logger logger = LoggerFactory.getLogger(getClass());
-
     @Autowired
     private Monitor monitor;
 
-    @Autowired
-    private Manager manager;
-
     private Map<String, MetricDetailFormatter> metricDetailFormatterMap = new LinkedHashMap<>();
 
     @PostConstruct
@@ -71,7 +63,7 @@ public class MonitorServiceImpl implements MonitorService {
 
     @Override
     public List<MetaVo> getMetaAll() {
-        List<MetaVo> list = manager.getMetaAll()
+        List<MetaVo> list = monitor.getMetaAll()
                 .stream()
                 .map(m -> convertMeta2Vo(m))
                 .sorted(Comparator.comparing(MetaVo::getUpdateTime).reversed())
@@ -82,38 +74,18 @@ public class MonitorServiceImpl implements MonitorService {
     @Override
     public String getDefaultMetaId(Map<String, String> params) {
         String id = params.get(ConfigConstant.CONFIG_MODEL_ID);
-        if (StringUtils.isNotBlank(id)) {
-            return id;
-        }
-        return getDefaultMetaId();
+        return getDefaultMetaId(id);
     }
 
     @Override
     public Paging queryData(Map<String, String> params) {
         String id = params.get(ConfigConstant.CONFIG_MODEL_ID);
-        // 获取默认驱动元信息
-        if (StringUtils.isBlank(id)) {
-            id = getDefaultMetaId();
-        }
-
         int pageNum = NumberUtils.toInt(params.get("pageNum"), 1);
         int pageSize = NumberUtils.toInt(params.get("pageSize"), 10);
-        // 没有驱动
-        if (StringUtils.isBlank(id)) {
-            return new Paging(pageNum, pageSize);
-        }
-
-        Query query = new Query(pageNum, pageSize);
-        // 查询异常信息
         String error = params.get(ConfigConstant.DATA_ERROR);
-        if (StringUtils.isNotBlank(error)) {
-            query.put(ConfigConstant.DATA_ERROR, error, true);
-        }
-        // 查询是否成功, 默认查询失败
         String success = params.get(ConfigConstant.DATA_SUCCESS);
-        query.put(ConfigConstant.DATA_SUCCESS, StringUtils.isNotBlank(success) ? success : StorageDataStatusEnum.FAIL.getCode(), false, true);
 
-        Paging paging = manager.queryData(query, id);
+        Paging paging = monitor.queryData(getDefaultMetaId(id), pageNum, pageSize, error, success);
         List<Map> data = (List<Map>) paging.getData();
         paging.setData(data.stream()
                 .map(m -> convert2Vo(m, DataVo.class))
@@ -124,7 +96,7 @@ public class MonitorServiceImpl implements MonitorService {
     @Override
     public String clearData(String id) {
         Assert.hasText(id, "驱动不存在.");
-        manager.clearData(id);
+        monitor.clearData(id);
         return "清空同步数据成功";
     }
 
@@ -132,13 +104,8 @@ public class MonitorServiceImpl implements MonitorService {
     public Paging queryLog(Map<String, String> params) {
         int pageNum = NumberUtils.toInt(params.get("pageNum"), 1);
         int pageSize = NumberUtils.toInt(params.get("pageSize"), 10);
-        Query query = new Query(pageNum, pageSize);
-        // 查询日志内容
         String json = params.get(ConfigConstant.CONFIG_MODEL_JSON);
-        if (StringUtils.isNotBlank(json)) {
-            query.put(ConfigConstant.CONFIG_MODEL_JSON, json, true);
-        }
-        Paging paging = manager.queryLog(query);
+        Paging paging = monitor.queryLog(pageNum, pageSize, json);
         List<Map> data = (List<Map>) paging.getData();
         paging.setData(data.stream()
                 .map(m -> convert2Vo(m, LogVo.class))
@@ -148,13 +115,13 @@ public class MonitorServiceImpl implements MonitorService {
 
     @Override
     public String clearLog() {
-        manager.clearLog();
+        monitor.clearLog();
         return "清空日志成功";
     }
 
     @Override
     public List<StorageDataStatusEnum> getStorageDataStatusEnumAll() {
-        return manager.getStorageDataStatusEnumAll();
+        return monitor.getStorageDataStatusEnumAll();
     }
 
     @Override
@@ -174,7 +141,7 @@ public class MonitorServiceImpl implements MonitorService {
             MetricResponseVo vo = new MetricResponseVo();
             BeanUtils.copyProperties(metric, vo);
             MetricDetailFormatter detailFormatter = metricDetailFormatterMap.get(vo.getCode());
-            if(null != detailFormatter){
+            if (null != detailFormatter) {
                 detailFormatter.format(vo);
             }
             return vo;
@@ -183,11 +150,14 @@ public class MonitorServiceImpl implements MonitorService {
 
     @Override
     public AppReportMetricVo queryAppReportMetric() {
-        return new AppReportMetricVo();
+        AppReportMetric appReportMetric = monitor.getAppReportMetric();
+        AppReportMetricVo vo = new AppReportMetricVo();
+        BeanUtils.copyProperties(appReportMetric, vo);
+        return vo;
     }
 
     private MetaVo convertMeta2Vo(Meta meta) {
-        Mapping mapping = manager.getMapping(meta.getMappingId());
+        Mapping mapping = monitor.getMapping(meta.getMappingId());
         Assert.notNull(mapping, "驱动不存在.");
         ModelEnum modelEnum = ModelEnum.getModelEnum(mapping.getModel());
         MetaVo metaVo = new MetaVo(modelEnum.getName(), mapping.getName());
@@ -197,15 +167,16 @@ public class MonitorServiceImpl implements MonitorService {
     }
 
     private <T> T convert2Vo(Map map, Class<T> clazz) {
-        String json = JsonUtil.objToJson(map);
-        return JsonUtil.jsonToObj(json, clazz);
+        return JsonUtil.jsonToObj(JsonUtil.objToJson(map), clazz);
     }
 
-    private String getDefaultMetaId() {
-        List<MetaVo> list = getMetaAll();
-        if (!CollectionUtils.isEmpty(list)) {
-            return list.get(0).getId();
+    private String getDefaultMetaId(String id) {
+        if (StringUtils.isBlank(id)) {
+            List<MetaVo> list = getMetaAll();
+            if (!CollectionUtils.isEmpty(list)) {
+                return list.get(0).getId();
+            }
         }
-        return "";
+        return id;
     }
 }

+ 2 - 77
dbsyncer-biz/src/main/java/org/dbsyncer/biz/vo/AppReportMetricVo.java

@@ -1,82 +1,7 @@
 package org.dbsyncer.biz.vo;
 
-public class AppReportMetricVo {
+import org.dbsyncer.monitor.model.AppReportMetric;
 
-    /**
-     * 已处理成功数
-     */
-    private long success;
+public class AppReportMetricVo extends AppReportMetric {
 
-    /**
-     * 已处理失败数
-     */
-    private long fail;
-
-    /**
-     * 插入事件
-     */
-    private long insert;
-
-    /**
-     * 更新事件
-     */
-    private long update;
-
-    /**
-     * 删除事件
-     */
-    private long delete;
-
-    /**
-     * 待处理
-     */
-    private long submittedTask;
-
-    public long getSuccess() {
-        return success;
-    }
-
-    public void setSuccess(long success) {
-        this.success = success;
-    }
-
-    public long getFail() {
-        return fail;
-    }
-
-    public void setFail(long fail) {
-        this.fail = fail;
-    }
-
-    public long getInsert() {
-        return insert;
-    }
-
-    public void setInsert(long insert) {
-        this.insert = insert;
-    }
-
-    public long getUpdate() {
-        return update;
-    }
-
-    public void setUpdate(long update) {
-        this.update = update;
-    }
-
-    public long getDelete() {
-        return delete;
-    }
-
-    public void setDelete(long delete) {
-        this.delete = delete;
-    }
-
-    public long getSubmittedTask() {
-        return submittedTask;
-    }
-
-    public void setSubmittedTask(long submittedTask) {
-        this.submittedTask = submittedTask;
-    }
 }

+ 3 - 3
dbsyncer-common/src/main/java/org/dbsyncer/common/model/Paging.java

@@ -5,9 +5,9 @@ import java.util.Collections;
 
 public class Paging {
 
-    private long          total;
-    private int           pageNum;
-    private int           pageSize;
+    private long total;
+    private int pageNum;
+    private int pageSize;
     private Collection data;
 
     public Paging(int pageNum, int pageSize) {

+ 1 - 1
dbsyncer-manager/src/main/java/org/dbsyncer/manager/template/impl/PreloadTemplate.java

@@ -57,7 +57,7 @@ public final class PreloadTemplate extends AbstractTemplate implements Applicati
         Query query = new Query();
         query.setType(StorageEnum.CONFIG);
         String filterType = config.getFilterType();
-        query.put(ConfigConstant.CONFIG_MODEL_TYPE, filterType);
+        query.addFilter(ConfigConstant.CONFIG_MODEL_TYPE, filterType);
 
         int pageNum = 1;
         int pageSize = 20;

+ 22 - 0
dbsyncer-monitor/src/main/java/org/dbsyncer/monitor/Monitor.java

@@ -1,7 +1,12 @@
 package org.dbsyncer.monitor;
 
+import org.dbsyncer.common.model.Paging;
 import org.dbsyncer.monitor.enums.MetricEnum;
+import org.dbsyncer.monitor.model.AppReportMetric;
 import org.dbsyncer.monitor.model.MetricResponse;
+import org.dbsyncer.parser.model.Mapping;
+import org.dbsyncer.parser.model.Meta;
+import org.dbsyncer.storage.enums.StorageDataStatusEnum;
 
 import java.util.List;
 
@@ -14,7 +19,24 @@ public interface Monitor {
 
     boolean isAlive(String id);
 
+    Mapping getMapping(String mappingId);
+
+    List<Meta> getMetaAll();
+
+    Paging queryData(String id, int pageNum, int pageSize, String error, String success);
+
+    void clearData(String collectionId);
+
+    Paging queryLog(int pageNum, int pageSize, String json);
+
+    void clearLog();
+
+    List<StorageDataStatusEnum> getStorageDataStatusEnumAll();
+
     List<MetricEnum> getMetricEnumAll();
 
     List<MetricResponse> getThreadPoolInfo();
+
+    AppReportMetric getAppReportMetric();
+
 }

+ 155 - 1
dbsyncer-monitor/src/main/java/org/dbsyncer/monitor/MonitorFactory.java

@@ -1,12 +1,22 @@
 package org.dbsyncer.monitor;
 
+import org.apache.commons.lang.StringUtils;
+import org.dbsyncer.common.model.Paging;
+import org.dbsyncer.common.util.CollectionUtils;
+import org.dbsyncer.connector.constant.ConnectorConstant;
 import org.dbsyncer.manager.Manager;
 import org.dbsyncer.monitor.enums.MetricEnum;
 import org.dbsyncer.monitor.enums.StatisticEnum;
 import org.dbsyncer.monitor.enums.ThreadPoolMetricEnum;
+import org.dbsyncer.monitor.model.AppReportMetric;
 import org.dbsyncer.monitor.model.MetricResponse;
 import org.dbsyncer.monitor.model.Sample;
 import org.dbsyncer.parser.model.Connector;
+import org.dbsyncer.parser.model.Mapping;
+import org.dbsyncer.parser.model.Meta;
+import org.dbsyncer.storage.constant.ConfigConstant;
+import org.dbsyncer.storage.enums.StorageDataStatusEnum;
+import org.dbsyncer.storage.query.Query;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -14,9 +24,12 @@ import org.springframework.cache.annotation.Cacheable;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Component;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 import java.util.concurrent.Executor;
 import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.atomic.AtomicLong;
 
 /**
  * @author AE86
@@ -41,6 +54,57 @@ public class MonitorFactory implements Monitor {
         return null != connector ? manager.isAliveConnectorConfig(connector.getConfig()) : false;
     }
 
+    @Override
+    public Mapping getMapping(String mappingId) {
+        return manager.getMapping(mappingId);
+    }
+
+    @Override
+    public List<Meta> getMetaAll() {
+        return manager.getMetaAll();
+    }
+
+    @Override
+    public Paging queryData(String id, int pageNum, int pageSize, String error, String success) {
+        // 没有驱动
+        if (StringUtils.isBlank(id)) {
+            return new Paging(pageNum, pageSize);
+        }
+
+        // 查询异常信息
+        Query query = new Query(pageNum, pageSize);
+        if (StringUtils.isNotBlank(error)) {
+            query.addFilter(ConfigConstant.DATA_ERROR, error, true);
+        }
+        // 查询是否成功, 默认查询失败
+        query.addFilter(ConfigConstant.DATA_SUCCESS, StringUtils.isNotBlank(success) ? success : StorageDataStatusEnum.FAIL.getCode(), false, true);
+        return manager.queryData(query, id);
+    }
+
+    @Override
+    public void clearData(String collectionId) {
+        manager.clearData(collectionId);
+    }
+
+    @Override
+    public Paging queryLog(int pageNum, int pageSize, String json) {
+        Query query = new Query(pageNum, pageSize);
+        if (StringUtils.isNotBlank(json)) {
+            query.addFilter(ConfigConstant.CONFIG_MODEL_JSON, json, true);
+        }
+        return manager.queryLog(query);
+    }
+
+    @Override
+    public void clearLog() {
+        manager.clearLog();
+    }
+
+    @Override
+    public List<StorageDataStatusEnum> getStorageDataStatusEnumAll() {
+        return manager.getStorageDataStatusEnumAll();
+    }
+
     @Override
     public List<MetricEnum> getMetricEnumAll() {
         return Arrays.asList(MetricEnum.values());
@@ -60,7 +124,97 @@ public class MonitorFactory implements Monitor {
         return list;
     }
 
+    @Override
+    public AppReportMetric getAppReportMetric() {
+        final List<Meta> metaAll = manager.getMetaAll();
+        AppReportMetric report = new AppReportMetric();
+        report.setSuccess(getMappingSuccess(metaAll));
+        report.setFail(getMappingFail(metaAll));
+        report.setInsert(getMappingInsert(metaAll));
+        report.setUpdate(getMappingUpdate(metaAll));
+        report.setDelete(getMappingDelete(metaAll));
+        report.setTaskNumber(getTaskNumber());
+        return report;
+    }
+
+    /**
+     * 获取所有驱动成功数
+     *
+     * @param metaAll
+     * @return
+     */
+    private long getMappingSuccess(List<Meta> metaAll) {
+        return queryMappingMetricCount(metaAll, (query) -> query.addFilter(ConfigConstant.DATA_SUCCESS, StorageDataStatusEnum.SUCCESS.getCode(), false, true));
+    }
+
+    /**
+     * 获取所有驱动失败数
+     *
+     * @param metaAll
+     * @return
+     */
+    private long getMappingFail(List<Meta> metaAll) {
+        return queryMappingMetricCount(metaAll, (query) -> query.addFilter(ConfigConstant.DATA_SUCCESS, StorageDataStatusEnum.FAIL.getCode(), false, true));
+    }
+
+    /**
+     * 获取所有驱动事件插入数
+     *
+     * @param metaAll
+     * @return
+     */
+    private long getMappingInsert(List<Meta> metaAll) {
+        return queryMappingMetricCount(metaAll, (query) -> query.addFilter(ConfigConstant.DATA_EVENT, ConnectorConstant.OPERTION_INSERT));
+    }
+
+    /**
+     * 获取所有驱动事件更新数
+     *
+     * @param metaAll
+     * @return
+     */
+    private long getMappingUpdate(List<Meta> metaAll) {
+        return queryMappingMetricCount(metaAll, (query) -> query.addFilter(ConfigConstant.DATA_EVENT, ConnectorConstant.OPERTION_UPDATE));
+    }
+
+    /**
+     * 获取所有驱动事件删除数
+     *
+     * @param metaAll
+     * @return
+     */
+    private long getMappingDelete(List<Meta> metaAll) {
+        return queryMappingMetricCount(metaAll, (query) -> query.addFilter(ConfigConstant.DATA_EVENT, ConnectorConstant.OPERTION_DELETE));
+    }
+
+    /**
+     * 获取所有监听器队列待处理数
+     *
+     * @return
+     */
+    private long getTaskNumber() {
+        return 0;
+    }
+
     private MetricResponse createMetricResponse(ThreadPoolMetricEnum metricEnum, Object value) {
         return new MetricResponse(metricEnum.getCode(), metricEnum.getGroup(), metricEnum.getMetricName(), Arrays.asList(new Sample(StatisticEnum.COUNT.getTagValueRepresentation(), value)));
     }
+
+    private long queryMappingMetricCount(List<Meta> metaAll, QueryMappingOperation operation) {
+        AtomicLong total = new AtomicLong(0);
+        if (!CollectionUtils.isEmpty(metaAll)) {
+            Query query = new Query(1, 1);
+            operation.apply(query);
+            metaAll.forEach(meta -> {
+                Paging paging = manager.queryData(query, meta.getId());
+                total.getAndAdd(paging.getTotal());
+            });
+        }
+        return total.get();
+    }
+
+    private interface QueryMappingOperation {
+        void apply(Query query);
+    }
+
 }

+ 82 - 0
dbsyncer-monitor/src/main/java/org/dbsyncer/monitor/model/AppReportMetric.java

@@ -0,0 +1,82 @@
+package org.dbsyncer.monitor.model;
+
+public class AppReportMetric {
+
+    /**
+     * 已处理成功数
+     */
+    private long success;
+
+    /**
+     * 已处理失败数
+     */
+    private long fail;
+
+    /**
+     * 插入事件
+     */
+    private long insert;
+
+    /**
+     * 更新事件
+     */
+    private long update;
+
+    /**
+     * 删除事件
+     */
+    private long delete;
+
+    /**
+     * 待处理数
+     */
+    private long taskNumber;
+
+    public long getSuccess() {
+        return success;
+    }
+
+    public void setSuccess(long success) {
+        this.success = success;
+    }
+
+    public long getFail() {
+        return fail;
+    }
+
+    public void setFail(long fail) {
+        this.fail = fail;
+    }
+
+    public long getInsert() {
+        return insert;
+    }
+
+    public void setInsert(long insert) {
+        this.insert = insert;
+    }
+
+    public long getUpdate() {
+        return update;
+    }
+
+    public void setUpdate(long update) {
+        this.update = update;
+    }
+
+    public long getDelete() {
+        return delete;
+    }
+
+    public void setDelete(long delete) {
+        this.delete = delete;
+    }
+
+    public long getTaskNumber() {
+        return taskNumber;
+    }
+
+    public void setTaskNumber(long taskNumber) {
+        this.taskNumber = taskNumber;
+    }
+}

+ 0 - 5
dbsyncer-storage/src/main/java/org/dbsyncer/storage/query/Param.java

@@ -11,11 +11,6 @@ public class Param {
     private boolean highlighter;
     private boolean number;
 
-    public Param(String key, String value) {
-        this.key = key;
-        this.value = value;
-    }
-
     public Param(String key, String value, boolean highlighter, boolean number) {
         this.key = key;
         this.value = value;

+ 5 - 5
dbsyncer-storage/src/main/java/org/dbsyncer/storage/query/Query.java

@@ -37,15 +37,15 @@ public class Query {
         this.params = new ArrayList<>();
     }
 
-    public void put(String key, String value) {
-        put(key, value, false, false);
+    public void addFilter(String key, String value) {
+        addFilter(key, value, false, false);
     }
 
-    public void put(String key, String value, boolean highlighter) {
-        put(key, value, highlighter, false);
+    public void addFilter(String key, String value, boolean highlighter) {
+        addFilter(key, value, highlighter, false);
     }
 
-    public void put(String key, String value, boolean highlighter, boolean number) {
+    public void addFilter(String key, String value, boolean highlighter, boolean number) {
         params.add(new Param(key, value, highlighter, number));
         if (highlighter) {
             enableHighLightSearch = highlighter;

+ 7 - 10
dbsyncer-web/src/main/java/org/dbsyncer/web/config/CacheConfiguration.java

@@ -35,16 +35,13 @@ public class CacheConfiguration {
 
     @Bean
     public KeyGenerator cacheKeyGenerator() {
-        return new KeyGenerator() {
-            @Override
-            public Object generate(Object target, Method method, Object... params) {
-                String className = method.getDeclaringClass().getSimpleName();
-                String methodName = method.getName();
-                String paramHash = String.valueOf(Arrays.toString(params).hashCode());
-                String cacheKey = new StringJoiner("_").add(className).add(methodName).add(paramHash).toString();
-                logger.debug("generate cache key : {}", cacheKey);
-                return cacheKey;
-            }
+        return (target, method, params) -> {
+            String className = method.getDeclaringClass().getSimpleName();
+            String methodName = method.getName();
+            String paramHash = String.valueOf(Arrays.toString(params).hashCode());
+            String cacheKey = new StringJoiner("_").add(className).add(methodName).add(paramHash).toString();
+            logger.debug("generate cache key : {}", cacheKey);
+            return cacheKey;
         };
     }
 

+ 9 - 2
dbsyncer-web/src/main/resources/static/js/common.js

@@ -78,8 +78,10 @@ function doPoster(url, params, action) {
 }
 
 // 全局Ajax get
-function doGetter(url, params, action) {
-    $.loadingT(true);
+function doGetter(url, params, action, loading) {
+    if(loading == undefined || loading == true){
+        $.loadingT(true);
+    }
     $.get($basePath + url, params, function (data) {
         $.loadingT(false);
         action(data);
@@ -87,4 +89,9 @@ function doGetter(url, params, action) {
         $.loadingT(false);
         bootGrowl("访问异常,请刷新或重试.", "danger");
     });
+}
+
+// 全局Ajax get, 不显示加载动画
+function doGetWithoutLoading(url, params, action) {
+    doGetter(url, params, action, false);
 }

+ 14 - 19
dbsyncer-web/src/main/resources/static/js/monitor/index.js

@@ -211,13 +211,8 @@ function showLog($logList, arr, append){
     return html;
 }
 
-function random(min, max) {
-    return Math.floor(Math.random() * (max - min)) + min;
-}
-
 // 堆积数据
-function showQueueChart(){
-    var value = random(1,1000);
+function showQueueChart(taskNumber){
     var option={
         title:{
             text:"堆积数据",
@@ -255,7 +250,7 @@ function showQueueChart(){
                     }
                 },
                 detail: {fontSize:12, offsetCenter:[0,'65%']},
-                data: [{value: value, name: ''}]
+                data: [{value: taskNumber, name: ''}]
             }
         ]
     };
@@ -263,11 +258,7 @@ function showQueueChart(){
 }
 
 // 事件分类
-function showEventChart(){
-    var del = 2;
-    var upd = 10;
-    var ins = 3;
-
+function showEventChart(ins, upd, del){
     var option = {
         title : {
             show:true,
@@ -308,10 +299,7 @@ function showEventChart(){
 }
 
 // 统计成功失败
-function showTotalChart(){
-    var success = 10;
-    var fail = 5;
-
+function showTotalChart(success, fail){
     var option = {
         title : {
             show:true,
@@ -376,9 +364,16 @@ $(function () {
     bindClearEvent($(".clearDataBtn"), "确认清空数据?", "清空数据成功!", "/monitor/clearData");
     bindClearEvent($(".clearLogBtn"), "确认清空日志?", "清空日志成功!", "/monitor/clearLog");
 
-    showTotalChart();
-    showEventChart();
-    showQueueChart();
+    doGetWithoutLoading("/monitor/queryAppReportMetric",{}, function (data) {
+        if (data.success == true) {
+            var report = data.resultValue;
+            showTotalChart(report.success, report.fail);
+            showEventChart(report.insert, report.update, report.delete);
+            showQueueChart(report.taskNumber);
+        } else {
+            bootGrowl(data.resultValue, "danger");
+        }
+    });
 
     // 绑定回车事件
     $("#searchDataKeyword").keydown(function (e) {