Bläddra i källkod

支持采集TPS

AE86 11 månader sedan
förälder
incheckning
bf85a62c2a

+ 3 - 3
dbsyncer-biz/src/main/java/org/dbsyncer/biz/vo/HistoryStackVo.java

@@ -1,7 +1,7 @@
 package org.dbsyncer.biz.vo;
 
-import java.util.LinkedList;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 public class HistoryStackVo {
 
@@ -10,8 +10,8 @@ public class HistoryStackVo {
     private List<Object> value;
 
     public HistoryStackVo() {
-        this.name = new LinkedList<>();
-        this.value = new LinkedList<>();
+        this.name = new CopyOnWriteArrayList<>();
+        this.value = new CopyOnWriteArrayList<>();
     }
 
     public List<Object> getName() {

+ 6 - 2
dbsyncer-web/src/main/java/org/dbsyncer/web/controller/monitor/MonitorController.java

@@ -45,7 +45,7 @@ public class MonitorController extends BaseController {
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
-    private final static int COUNT = 24;
+    private final static int COUNT = 36;
     private HistoryStackVo cpu = new HistoryStackVo();
     private HistoryStackVo memory = new HistoryStackVo();
     private HistoryStackVo tps = new HistoryStackVo();
@@ -98,11 +98,15 @@ public class MonitorController extends BaseController {
         return "monitor/retry.html";
     }
 
+    @Scheduled(fixedRate = 2000)
+    public void recordTPS() {
+        addHistoryStack(tps, timeRegistry.meter(TimeRegistry.GENERAL_BUFFER_ACTUATOR_TPS).getSecondsRate());
+    }
+
     @Scheduled(fixedRate = 5000)
     public void recordHistoryStackMetric() {
         recordHistoryStackMetric(MetricEnum.CPU_USAGE, cpu, cpuHistoryStackValueFormatterImpl);
         recordHistoryStackMetric(MetricEnum.MEMORY_USED, memory, memoryHistoryStackValueFormatterImpl);
-        addHistoryStack(tps, timeRegistry.meter(TimeRegistry.GENERAL_BUFFER_ACTUATOR_TPS).getSecondsRate());
     }
 
     @Scheduled(fixedRate = 10000)

+ 4 - 4
dbsyncer-web/src/main/resources/public/monitor/monitor.html

@@ -41,15 +41,15 @@
                                 </div>
                                 <hr>
                                 <div class="row">
-                                    <div class="col-md-4">
-                                        <div id="eventChart" style="height: 260px;"></div>
+                                    <div class="col-md-6">
+                                        <div id="tpsChart" style="height: 260px;"></div>
                                     </div>
 
-                                    <div class="col-md-4">
+                                    <div class="col-md-3">
                                         <div id="queueChart" style="height: 260px;"></div>
                                     </div>
 
-                                    <div class="col-md-4">
+                                    <div class="col-md-3">
                                         <div id="storageChart" style="height: 260px;"></div>
                                     </div>
                                 </div>

+ 45 - 34
dbsyncer-web/src/main/resources/static/js/monitor/index.js

@@ -259,6 +259,50 @@ function showLog($logList, arr, append) {
     return html;
 }
 
+// 执行器TPS历史
+function showTPSChart(tps) {
+    let option = {
+        title: {
+            show: true,
+            text: '执行器(TPS)',
+            x: 'center',
+            y: 'bottom'
+        },
+        tooltip: {
+            trigger: 'item',
+            formatter: "{b} : {c}/秒完成数"
+        },
+        xAxis: {
+            type: 'category',
+            boundaryGap: false,
+            data: tps.name
+        },
+        yAxis: {
+            type: 'value'
+        },
+        series: [{
+            data: tps.value,
+            type: 'line',
+            itemStyle: {
+                color: 'rgb(255, 70, 131)'
+            },
+            areaStyle: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                    {
+                        offset: 0,
+                        color: 'rgb(255, 158, 68)'
+                    },
+                    {
+                        offset: 1,
+                        color: 'rgb(255, 70, 131)'
+                    }
+                ])
+            },
+        }]
+    };
+    echarts.init(document.getElementById('tpsChart')).setOption(option);
+}
+
 // 堆积数据
 function showQueueChart(queueUp, queueCapacity) {
     let option = {
@@ -307,40 +351,6 @@ function showQueueChart(queueUp, queueCapacity) {
 
 // 事件分类
 function showEventChart(success, fail, ins, upd, del) {
-    let option = {
-        title: {
-            text: '事件分类',
-            left: 'center'
-        },
-        tooltip: {
-            trigger: 'item'
-        },
-        legend: {
-            orient: 'vertical',
-            left: 'left',
-        },
-        series: [
-            {
-                name: '事件',
-                type: 'pie',
-                radius: '50%',
-                data: [
-                    {value: upd, name: '更新'},
-                    {value: ins, name: '插入'},
-                    {value: del, name: '删除'}
-                ],
-                emphasis: {
-                    itemStyle: {
-                        shadowBlur: 10,
-                        shadowOffsetX: 0,
-                        shadowColor: 'rgba(0, 0, 0, 0.5)'
-                    }
-                }
-            }
-        ]
-    };
-    echarts.init(document.getElementById('eventChart')).setOption(option);
-
     $("#totalSpan").html(success + fail);
     $("#successSpan").html(success);
     $("#failSpan").html(fail);
@@ -472,6 +482,7 @@ function showChartTable() {
         if (data.success == true) {
             let report = data.resultValue;
             showEventChart(report.success, report.fail, report.insert, report.update, report.delete);
+            showTPSChart(report.tps);
             showQueueChart(report.queueUp, report.queueCapacity);
             showStorageChart(report.storageQueueUp, report.storageQueueCapacity);
             showCpuChart(report.cpu);