diff --git a/server/apm/apm-common/pom.xml b/server/apm/apm-common/pom.xml
index f40c73cc1..4d00b9be9 100644
--- a/server/apm/apm-common/pom.xml
+++ b/server/apm/apm-common/pom.xml
@@ -46,6 +46,11 @@
com.google.code.gson
gson
+
+ io.holoinsight.server
+ common-service
+ ${project.version}
+
diff --git a/server/apm/apm-common/src/main/java/io/holoinsight/server/apm/common/model/query/BasicTrace.java b/server/apm/apm-common/src/main/java/io/holoinsight/server/apm/common/model/query/BasicTrace.java
index 78978ec2b..b22d81010 100644
--- a/server/apm/apm-common/src/main/java/io/holoinsight/server/apm/common/model/query/BasicTrace.java
+++ b/server/apm/apm-common/src/main/java/io/holoinsight/server/apm/common/model/query/BasicTrace.java
@@ -3,9 +3,11 @@
*/
package io.holoinsight.server.apm.common.model.query;
+import io.holoinsight.server.common.service.Measurable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
+import org.springframework.util.CollectionUtils;
import java.io.Serializable;
import java.util.ArrayList;
@@ -18,7 +20,7 @@
@Data
@AllArgsConstructor
@NoArgsConstructor
-public class BasicTrace implements Serializable {
+public class BasicTrace implements Serializable, Measurable {
private static final long serialVersionUID = -4060937279918402711L;
private String segmentId;
@@ -29,4 +31,12 @@ public class BasicTrace implements Serializable {
private long start;
private boolean isError;
private List traceIds = new ArrayList<>();
+
+ @Override
+ public long measure() {
+ if (CollectionUtils.isEmpty(traceIds)) {
+ return 0;
+ }
+ return this.traceIds.size();
+ }
}
diff --git a/server/apm/apm-common/src/main/java/io/holoinsight/server/apm/common/model/query/Topology.java b/server/apm/apm-common/src/main/java/io/holoinsight/server/apm/common/model/query/Topology.java
index 5a892fc82..197358bd3 100644
--- a/server/apm/apm-common/src/main/java/io/holoinsight/server/apm/common/model/query/Topology.java
+++ b/server/apm/apm-common/src/main/java/io/holoinsight/server/apm/common/model/query/Topology.java
@@ -3,13 +3,15 @@
*/
package io.holoinsight.server.apm.common.model.query;
+import io.holoinsight.server.common.service.Measurable;
import lombok.Getter;
+import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
@Getter
-public class Topology {
+public class Topology implements Measurable {
private final List nodes;
private final List calls;
@@ -17,4 +19,12 @@ public Topology() {
this.nodes = new ArrayList<>();
this.calls = new ArrayList<>();
}
+
+ @Override
+ public long measure() {
+ if (CollectionUtils.isEmpty(calls)) {
+ return 0;
+ }
+ return this.calls.size();
+ }
}
diff --git a/server/apm/apm-common/src/main/java/io/holoinsight/server/apm/common/model/query/TraceBrief.java b/server/apm/apm-common/src/main/java/io/holoinsight/server/apm/common/model/query/TraceBrief.java
index d5a1d7f9f..d328ec28f 100644
--- a/server/apm/apm-common/src/main/java/io/holoinsight/server/apm/common/model/query/TraceBrief.java
+++ b/server/apm/apm-common/src/main/java/io/holoinsight/server/apm/common/model/query/TraceBrief.java
@@ -3,9 +3,11 @@
*/
package io.holoinsight.server.apm.common.model.query;
+import io.holoinsight.server.common.service.Measurable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
+import org.springframework.util.CollectionUtils;
import java.io.Serializable;
import java.util.ArrayList;
@@ -18,8 +20,20 @@
@Data
@AllArgsConstructor
@NoArgsConstructor
-public class TraceBrief implements Serializable {
+public class TraceBrief implements Serializable, Measurable {
private static final long serialVersionUID = -5452437207833607799L;
private List traces = new ArrayList<>();
+
+ @Override
+ public long measure() {
+ if (CollectionUtils.isEmpty(traces)) {
+ return 0;
+ }
+ long result = 0;
+ for (BasicTrace basicTrace : traces) {
+ result += basicTrace.measure();
+ }
+ return result;
+ }
}
diff --git a/server/apm/apm-common/src/main/java/io/holoinsight/server/apm/common/model/specification/sw/Trace.java b/server/apm/apm-common/src/main/java/io/holoinsight/server/apm/common/model/specification/sw/Trace.java
index b0843003f..7d8bd25f2 100644
--- a/server/apm/apm-common/src/main/java/io/holoinsight/server/apm/common/model/specification/sw/Trace.java
+++ b/server/apm/apm-common/src/main/java/io/holoinsight/server/apm/common/model/specification/sw/Trace.java
@@ -3,9 +3,11 @@
*/
package io.holoinsight.server.apm.common.model.specification.sw;
+import io.holoinsight.server.common.service.Measurable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
+import org.springframework.util.CollectionUtils;
import java.io.Serializable;
import java.util.ArrayList;
@@ -18,7 +20,7 @@
@Data
@AllArgsConstructor
@NoArgsConstructor
-public class Trace implements Serializable {
+public class Trace implements Serializable, Measurable {
private static final long serialVersionUID = 3436393920339302223L;
@@ -26,4 +28,12 @@ public class Trace implements Serializable {
* span 列表
*/
private List spans = new ArrayList<>();
+
+ @Override
+ public long measure() {
+ if (CollectionUtils.isEmpty(spans)) {
+ return 0;
+ }
+ return this.spans.size();
+ }
}
diff --git a/server/common/common-service/src/main/java/io/holoinsight/server/common/service/Measurable.java b/server/common/common-service/src/main/java/io/holoinsight/server/common/service/Measurable.java
new file mode 100644
index 000000000..8df4a312d
--- /dev/null
+++ b/server/common/common-service/src/main/java/io/holoinsight/server/common/service/Measurable.java
@@ -0,0 +1,18 @@
+/*
+ * Copyright 2022 Holoinsight Project Authors. Licensed under Apache-2.0.
+ */
+package io.holoinsight.server.common.service;
+
+/**
+ * Measure the data
+ *
+ * @author masaimu
+ * @version 2023-03-10 16:38:00
+ */
+public interface Measurable {
+
+ /**
+ * @return data size
+ */
+ long measure();
+}
diff --git a/server/home/home-alert/src/main/java/io/holoinsight/server/home/alert/service/task/AlertTaskScheduler.java b/server/home/home-alert/src/main/java/io/holoinsight/server/home/alert/service/task/AlertTaskScheduler.java
index 4da004467..dda832f5d 100644
--- a/server/home/home-alert/src/main/java/io/holoinsight/server/home/alert/service/task/AlertTaskScheduler.java
+++ b/server/home/home-alert/src/main/java/io/holoinsight/server/home/alert/service/task/AlertTaskScheduler.java
@@ -50,7 +50,8 @@ public class AlertTaskScheduler {
public void start() {
try {
- StdSchedulerFactory stdSchedulerFactory = new StdSchedulerFactory(getScheduleProperties());
+ StdSchedulerFactory stdSchedulerFactory =
+ new StdSchedulerFactory(getScheduleProperties("AlertTaskScheduler"));
Scheduler scheduler = stdSchedulerFactory.getScheduler();
// 创建需要执行的任务
@@ -73,9 +74,9 @@ public void start() {
}
}
- private Properties getScheduleProperties() {
+ public static Properties getScheduleProperties(String instanceName) {
Properties properties = new Properties();
- properties.setProperty("org.quartz.scheduler.instanceName", "AlertTaskScheduler");
+ properties.setProperty("org.quartz.scheduler.instanceName", instanceName);
properties.setProperty("org.quartz.threadPool.threadCount", "1");
properties.setProperty("org.quartz.jobStore.class", "org.quartz.simpl.RAMJobStore");
properties.setProperty("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool");
diff --git a/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/query/KeyResult.java b/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/query/KeyResult.java
index 8eb1d26c0..f53ba1c75 100644
--- a/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/query/KeyResult.java
+++ b/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/query/KeyResult.java
@@ -3,7 +3,9 @@
*/
package io.holoinsight.server.home.common.service.query;
+import io.holoinsight.server.common.service.Measurable;
import lombok.Data;
+import org.springframework.util.CollectionUtils;
import java.util.List;
@@ -12,8 +14,16 @@
* @date 2022/4/29 11:23 上午
*/
@Data
-public class KeyResult {
+public class KeyResult implements Measurable {
private String metric;
private List tags;
+
+ @Override
+ public long measure() {
+ if (CollectionUtils.isEmpty(tags)) {
+ return 0;
+ }
+ return tags.size();
+ }
}
diff --git a/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/query/QueryResponse.java b/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/query/QueryResponse.java
index d0af5d352..3260010d0 100644
--- a/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/query/QueryResponse.java
+++ b/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/query/QueryResponse.java
@@ -3,13 +3,28 @@
*/
package io.holoinsight.server.home.common.service.query;
+import io.holoinsight.server.common.service.Measurable;
import lombok.Data;
+import org.springframework.util.CollectionUtils;
import java.util.List;
@Data
-public class QueryResponse {
+public class QueryResponse implements Measurable {
private List results;
+ @Override
+ public long measure() {
+ if (CollectionUtils.isEmpty(results)) {
+ return 0;
+ }
+ long size = 0;
+ if (!CollectionUtils.isEmpty(results)) {
+ for (Result result : results) {
+ size += result.measure();
+ }
+ }
+ return size;
+ }
}
diff --git a/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/query/Result.java b/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/query/Result.java
index 082ab164b..72749e9b0 100644
--- a/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/query/Result.java
+++ b/server/home/home-common/src/main/java/io/holoinsight/server/home/common/service/query/Result.java
@@ -3,16 +3,25 @@
*/
package io.holoinsight.server.home.common.service.query;
+import io.holoinsight.server.common.service.Measurable;
import lombok.Data;
+import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Map;
@Data
-public class Result {
+public class Result implements Measurable {
private String metric;
private Map tags;
private List