You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by pe...@apache.org on 2018/10/11 07:55:09 UTC
[incubator-skywalking] branch master updated: Alarm query and alarm
persistence test. (#1753)
This is an automated email from the ASF dual-hosted git repository.
pengys pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new 7c192b1 Alarm query and alarm persistence test. (#1753)
7c192b1 is described below
commit 7c192b19d675589417981ca2a2c6f15c5b82aac7
Author: 彭勇升 pengys <80...@qq.com>
AuthorDate: Thu Oct 11 15:55:04 2018 +0800
Alarm query and alarm persistence test. (#1753)
* Alarm query and alarm persistence test.
* Fixed the package error.
---
.../server/core/alarm/provider/RunningRule.java | 25 ++-----
.../skywalking/oap/server/core/CoreModule.java | 1 +
.../oap/server/core/CoreModuleProvider.java | 1 +
.../oap/server/core/alarm/AlarmMessage.java | 2 +-
.../oap/server/core/alarm/AlarmRecord.java | 8 ++-
.../core/alarm/AlarmStandardPersistence.java | 11 ++-
.../oap/server/core/query/AlarmQueryService.java | 56 +++++++++++++++
.../server/core/query/entity}/AlarmMessage.java | 8 ++-
.../query/entity/{Trace.java => AlarmTrend.java} | 12 +++-
.../query/entity/{LogEntity.java => Alarms.java} | 15 ++--
.../oap/server/core/query/entity/Attribute.java | 7 ++
.../oap/server/core/query/entity/BasicTrace.java | 21 ++++--
.../oap/server/core/query/entity/Call.java | 3 +
.../oap/server/core/query/entity/ClusterBrief.java | 3 +
.../oap/server/core/query/entity/Endpoint.java | 3 +
.../oap/server/core/query/entity/IntValues.java | 10 ++-
.../oap/server/core/query/entity/KVInt.java | 3 +
.../oap/server/core/query/entity/KeyValue.java | 3 +
.../oap/server/core/query/entity/Language.java | 3 +
.../oap/server/core/query/entity/LogEntity.java | 12 +++-
.../oap/server/core/query/entity/Node.java | 3 +
.../oap/server/core/query/entity/Order.java | 3 +
.../oap/server/core/query/entity/Pagination.java | 3 +
.../oap/server/core/query/entity/QueryOrder.java | 3 +
.../oap/server/core/query/entity/Ref.java | 3 +
.../oap/server/core/query/entity/RefType.java | 3 +
.../oap/server/core/query/entity/Service.java | 3 +
.../server/core/query/entity/ServiceInstance.java | 16 +++--
.../oap/server/core/query/entity/Span.java | 48 +++++++------
.../oap/server/core/query/entity/Step.java | 3 +
.../server/core/query/entity/Thermodynamic.java | 13 ++--
.../oap/server/core/query/entity/TopNEntity.java | 3 +
.../oap/server/core/query/entity/Topology.java | 12 +++-
.../oap/server/core/query/entity/Trace.java | 9 ++-
.../oap/server/core/query/entity/TraceBrief.java | 12 +++-
.../oap/server/core/query/entity/TraceState.java | 3 +
.../skywalking/oap/server/core/source/Scope.java | 9 ++-
.../oap/server/core/storage/StorageModule.java | 2 +-
.../server/core/storage/query/IAlarmQueryDAO.java} | 17 +++--
.../oap/query/graphql/GraphQLQueryProvider.java | 2 +-
.../query/graphql/resolver/AggregationQuery.java | 3 +
.../oap/query/graphql/resolver/AlarmQuery.java | 34 +++++++--
.../oap/query/graphql/resolver/MetadataQuery.java | 3 +
.../oap/query/graphql/resolver/MetricQuery.java | 3 +
.../oap/query/graphql/resolver/TopologyQuery.java | 3 +
.../oap/query/graphql/resolver/TraceQuery.java | 3 +
.../oap/query/graphql/type/AlarmTrend.java | 26 -------
.../skywalking/oap/query/graphql/type/Alarms.java | 26 -------
.../src/main/resources/alarm-settings.yml | 24 +++----
.../server-starter/src/main/resources/log4j2.xml | 1 +
.../StorageModuleElasticsearchProvider.java | 1 +
.../elasticsearch/query/AlarmQueryEsDAO.java | 82 ++++++++++++++++++++++
52 files changed, 434 insertions(+), 152 deletions(-)
diff --git a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRule.java b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRule.java
index d3d1d62..3f8c6ea 100644
--- a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRule.java
+++ b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRule.java
@@ -18,26 +18,15 @@
package org.apache.skywalking.oap.server.core.alarm.provider;
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.ReentrantLock;
-import org.apache.skywalking.oap.server.core.alarm.AlarmMessage;
-import org.apache.skywalking.oap.server.core.alarm.MetaInAlarm;
-import org.apache.skywalking.oap.server.core.analysis.indicator.DoubleValueHolder;
-import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
-import org.apache.skywalking.oap.server.core.analysis.indicator.IntValueHolder;
-import org.apache.skywalking.oap.server.core.analysis.indicator.LongValueHolder;
+import org.apache.skywalking.oap.server.core.alarm.*;
+import org.apache.skywalking.oap.server.core.analysis.indicator.*;
import org.apache.skywalking.oap.server.core.source.Scope;
-import org.apache.skywalking.oap.server.library.util.TimeBucketUtils;
-import org.joda.time.LocalDateTime;
-import org.joda.time.Minutes;
-import org.joda.time.format.DateTimeFormat;
-import org.joda.time.format.DateTimeFormatter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.joda.time.*;
+import org.joda.time.format.*;
+import org.slf4j.*;
/**
* RunningRule represents each rule in running status. Based on the {@link AlarmRule} definition,
@@ -149,7 +138,7 @@ public class RunningRule {
alarmMessage.setId0(meta.getId0());
alarmMessage.setId1(meta.getId1());
alarmMessage.setAlarmMessage(formatter.format(meta));
- alarmMessage.setTimeBucket(TimeBucketUtils.INSTANCE.getTime(LocalDateTime.now()));
+ alarmMessage.setStartTime(System.currentTimeMillis());
alarmMessageList.add(alarmMessage);
}
});
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModule.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModule.java
index eab389b..66cac8d 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModule.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModule.java
@@ -62,6 +62,7 @@ public class CoreModule extends ModuleDefine {
classes.add(TraceQueryService.class);
classes.add(MetadataQueryService.class);
classes.add(AggregationQueryService.class);
+ classes.add(AlarmQueryService.class);
}
private void addServerInterface(List<Class> classes) {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
index 600577c..84435a9 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/CoreModuleProvider.java
@@ -115,6 +115,7 @@ public class CoreModuleProvider extends ModuleProvider {
this.registerServiceImplementation(TraceQueryService.class, new TraceQueryService(getManager()));
this.registerServiceImplementation(MetadataQueryService.class, new MetadataQueryService(getManager()));
this.registerServiceImplementation(AggregationQueryService.class, new AggregationQueryService(getManager()));
+ this.registerServiceImplementation(AlarmQueryService.class, new AlarmQueryService(getManager()));
annotationScan.registerListener(storageAnnotationListener);
annotationScan.registerListener(streamAnnotationListener);
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmMessage.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmMessage.java
index 0f6ccd8..051e761 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmMessage.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmMessage.java
@@ -37,7 +37,7 @@ public class AlarmMessage {
private int id0;
private int id1;
private String alarmMessage;
- private long timeBucket;
+ private long startTime;
private static class NoAlarm extends AlarmMessage {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmRecord.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmRecord.java
index 491b7e2..dfbba92 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmRecord.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmRecord.java
@@ -36,11 +36,12 @@ import org.apache.skywalking.oap.server.core.storage.annotation.*;
public class AlarmRecord extends Record {
public static final String INDEX_NAME = "alarm_record";
- private static final String SCOPE = "scope";
+ public static final String SCOPE = "scope";
private static final String NAME = "name";
private static final String ID0 = "id0";
private static final String ID1 = "id1";
- private static final String ALARM_MESSAGE = "alarm_message";
+ private static final String START_TIME = "start_time";
+ public static final String ALARM_MESSAGE = "alarm_message";
@Override public String id() {
return getTimeBucket() + Const.ID_SPLIT + scope + Const.ID_SPLIT + id0 + Const.ID_SPLIT + id1;
@@ -50,6 +51,7 @@ public class AlarmRecord extends Record {
@Column(columnName = NAME) private String name;
@Column(columnName = ID0) private int id0;
@Column(columnName = ID1) private int id1;
+ @Column(columnName = START_TIME) private long startTime;
@Column(columnName = ALARM_MESSAGE, matchQuery = true) private String alarmMessage;
public static class Builder implements StorageBuilder<AlarmRecord> {
@@ -61,6 +63,7 @@ public class AlarmRecord extends Record {
map.put(ID0, storageData.getId0());
map.put(ID1, storageData.getId1());
map.put(ALARM_MESSAGE, storageData.getAlarmMessage());
+ map.put(START_TIME, storageData.getStartTime());
map.put(TIME_BUCKET, storageData.getTimeBucket());
return map;
}
@@ -72,6 +75,7 @@ public class AlarmRecord extends Record {
record.setId0(((Number)dbMap.get(ID0)).intValue());
record.setId1(((Number)dbMap.get(ID1)).intValue());
record.setAlarmMessage((String)dbMap.get(ALARM_MESSAGE));
+ record.setStartTime(((Number)dbMap.get(START_TIME)).longValue());
record.setTimeBucket(((Number)dbMap.get(TIME_BUCKET)).longValue());
return record;
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmStandardPersistence.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmStandardPersistence.java
index b6cd613..556dfc5 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmStandardPersistence.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmStandardPersistence.java
@@ -20,6 +20,8 @@ package org.apache.skywalking.oap.server.core.alarm;
import java.util.List;
import org.apache.skywalking.oap.server.core.analysis.worker.RecordProcess;
+import org.apache.skywalking.oap.server.library.util.TimeBucketUtils;
+import org.slf4j.*;
/**
* Save the alarm info into storage for UI query.
@@ -28,15 +30,22 @@ import org.apache.skywalking.oap.server.core.analysis.worker.RecordProcess;
*/
public class AlarmStandardPersistence implements AlarmCallback {
+ private static final Logger logger = LoggerFactory.getLogger(AlarmStandardPersistence.class);
+
@Override public void doAlarm(List<AlarmMessage> alarmMessage) {
alarmMessage.forEach(message -> {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Alarm message: {}", message.getAlarmMessage());
+ }
+
AlarmRecord record = new AlarmRecord();
record.setScope(message.getScope().ordinal());
record.setId0(message.getId0());
record.setId1(message.getId1());
record.setName(message.getName());
record.setAlarmMessage(message.getAlarmMessage());
- record.setTimeBucket(message.getTimeBucket());
+ record.setStartTime(message.getStartTime());
+ record.setTimeBucket(TimeBucketUtils.INSTANCE.getMinuteTimeBucket(message.getStartTime()));
RecordProcess.INSTANCE.in(record);
});
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/AlarmQueryService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/AlarmQueryService.java
new file mode 100644
index 0000000..ab8f956
--- /dev/null
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/AlarmQueryService.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.core.query;
+
+import java.io.IOException;
+import org.apache.skywalking.oap.server.core.query.entity.*;
+import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.storage.StorageModule;
+import org.apache.skywalking.oap.server.core.storage.query.IAlarmQueryDAO;
+import org.apache.skywalking.oap.server.library.module.*;
+import org.apache.skywalking.oap.server.library.module.Service;
+import org.slf4j.*;
+
+/**
+ * @author peng-yongsheng
+ */
+public class AlarmQueryService implements Service {
+
+ private static final Logger logger = LoggerFactory.getLogger(AlarmQueryService.class);
+
+ private final ModuleManager moduleManager;
+ private IAlarmQueryDAO alarmQueryDAO;
+
+ public AlarmQueryService(ModuleManager moduleManager) {
+ this.moduleManager = moduleManager;
+ }
+
+ private IAlarmQueryDAO getAlarmQueryDAO() {
+ if (alarmQueryDAO == null) {
+ alarmQueryDAO = moduleManager.find(StorageModule.NAME).getService(IAlarmQueryDAO.class);
+ }
+ return alarmQueryDAO;
+ }
+
+ public Alarms getAlarm(final Scope scope, final String keyword, final Pagination paging, final long startTB,
+ final long endTB) throws IOException {
+ PaginationUtils.Page page = PaginationUtils.INSTANCE.exchange(paging);
+ return getAlarmQueryDAO().getAlarm(scope, keyword, page.getLimit(), page.getFrom(), startTB, endTB);
+ }
+}
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/AlarmMessage.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/AlarmMessage.java
similarity index 88%
copy from oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/AlarmMessage.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/AlarmMessage.java
index e79e938..99bf234 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/AlarmMessage.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/AlarmMessage.java
@@ -16,10 +16,16 @@
*
*/
-package org.apache.skywalking.oap.query.graphql.type;
+package org.apache.skywalking.oap.server.core.query.entity;
+import lombok.*;
import org.apache.skywalking.oap.server.core.source.Scope;
+/**
+ * @author peng-yongsheng
+ */
+@Getter
+@Setter
public class AlarmMessage {
private Scope scope;
private String id;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Trace.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/AlarmTrend.java
similarity index 83%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Trace.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/AlarmTrend.java
index 87988a2..1d4c99e 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Trace.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/AlarmTrend.java
@@ -21,7 +21,15 @@ package org.apache.skywalking.oap.server.core.query.entity;
import java.util.*;
import lombok.Getter;
+/**
+ * @author peng-yongsheng
+ */
@Getter
-public class Trace {
- private List<Span> spans = new ArrayList<>();
+public class AlarmTrend {
+
+ private final List<Integer> numOfAlarm;
+
+ public AlarmTrend() {
+ this.numOfAlarm = new ArrayList<>();
+ }
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/LogEntity.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Alarms.java
similarity index 82%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/LogEntity.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Alarms.java
index 4b3e320..22c0aef 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/LogEntity.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Alarms.java
@@ -21,9 +21,16 @@ package org.apache.skywalking.oap.server.core.query.entity;
import java.util.*;
import lombok.*;
+/**
+ * @author peng-yongsheng
+ */
@Getter
-@Setter
-public class LogEntity {
- private long time;
- private List<KeyValue> data = new ArrayList<>();
+public class Alarms {
+
+ private final List<AlarmMessage> msgs;
+ @Setter private int total;
+
+ public Alarms() {
+ this.msgs = new ArrayList<>();
+ }
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Attribute.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Attribute.java
index aab8fdc..8f7daaf 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Attribute.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Attribute.java
@@ -18,6 +18,13 @@
package org.apache.skywalking.oap.server.core.query.entity;
+import lombok.*;
+
+/**
+ * @author peng-yongsheng
+ */
+@Getter
+@Setter
public class Attribute {
private String name;
private String value;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/BasicTrace.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/BasicTrace.java
index 7ccbdea..33bcace 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/BasicTrace.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/BasicTrace.java
@@ -21,13 +21,20 @@ package org.apache.skywalking.oap.server.core.query.entity;
import java.util.*;
import lombok.*;
+/**
+ * @author peng-yongsheng
+ */
@Getter
-@Setter
public class BasicTrace {
- private String segmentId;
- private List<String> endpointNames = new ArrayList<>();
- private int duration;
- private String start;
- private boolean isError;
- private List<String> traceIds = new ArrayList<>();
+ @Setter private String segmentId;
+ private final List<String> endpointNames;
+ @Setter private int duration;
+ @Setter private String start;
+ @Setter private boolean isError;
+ private final List<String> traceIds;
+
+ public BasicTrace() {
+ this.endpointNames = new ArrayList<>();
+ this.traceIds = new ArrayList<>();
+ }
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Call.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Call.java
index fa211d9..d1d3213 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Call.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Call.java
@@ -21,6 +21,9 @@ package org.apache.skywalking.oap.server.core.query.entity;
import lombok.*;
import org.apache.skywalking.oap.server.core.source.DetectPoint;
+/**
+ * @author peng-yongsheng
+ */
@Getter
@Setter
public class Call {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/ClusterBrief.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/ClusterBrief.java
index 2588590..681eb61 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/ClusterBrief.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/ClusterBrief.java
@@ -20,6 +20,9 @@ package org.apache.skywalking.oap.server.core.query.entity;
import lombok.*;
+/**
+ * @author peng-yongsheng
+ */
@Getter
@Setter
public class ClusterBrief {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Endpoint.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Endpoint.java
index fb55fa7..cf98063 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Endpoint.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Endpoint.java
@@ -20,6 +20,9 @@ package org.apache.skywalking.oap.server.core.query.entity;
import lombok.*;
+/**
+ * @author peng-yongsheng
+ */
@Getter
@Setter
public class Endpoint {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/IntValues.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/IntValues.java
index 70609c5..9426c79 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/IntValues.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/IntValues.java
@@ -21,6 +21,14 @@ package org.apache.skywalking.oap.server.core.query.entity;
import java.util.*;
import lombok.Getter;
+/**
+ * @author peng-yongsheng
+ */
public class IntValues {
- @Getter private List<KVInt> values = new LinkedList<>();
+
+ @Getter private final List<KVInt> values;
+
+ public IntValues() {
+ this.values = new LinkedList<>();
+ }
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/KVInt.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/KVInt.java
index 83d9680..1d16ad1 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/KVInt.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/KVInt.java
@@ -20,6 +20,9 @@ package org.apache.skywalking.oap.server.core.query.entity;
import lombok.*;
+/**
+ * @author peng-yongsheng
+ */
@Setter
@Getter
public class KVInt {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/KeyValue.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/KeyValue.java
index 29cb611..46e355e 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/KeyValue.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/KeyValue.java
@@ -20,6 +20,9 @@ package org.apache.skywalking.oap.server.core.query.entity;
import lombok.*;
+/**
+ * @author peng-yongsheng
+ */
@Getter
@Setter
public class KeyValue {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Language.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Language.java
index bd31a67..75bd1b4 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Language.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Language.java
@@ -18,6 +18,9 @@
package org.apache.skywalking.oap.server.core.query.entity;
+/**
+ * @author peng-yongsheng
+ */
public enum Language {
UNKNOWN,
JAVA,
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/LogEntity.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/LogEntity.java
index 4b3e320..30a0195 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/LogEntity.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/LogEntity.java
@@ -21,9 +21,15 @@ package org.apache.skywalking.oap.server.core.query.entity;
import java.util.*;
import lombok.*;
+/**
+ * @author peng-yongsheng
+ */
@Getter
-@Setter
public class LogEntity {
- private long time;
- private List<KeyValue> data = new ArrayList<>();
+ @Setter private long time;
+ private final List<KeyValue> data;
+
+ public LogEntity() {
+ this.data = new ArrayList<>();
+ }
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Node.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Node.java
index c230232..ee1c548 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Node.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Node.java
@@ -20,6 +20,9 @@ package org.apache.skywalking.oap.server.core.query.entity;
import lombok.*;
+/**
+ * @author peng-yongsheng
+ */
@Getter
@Setter
public class Node {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Order.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Order.java
index fe562c1..b81710e 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Order.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Order.java
@@ -18,6 +18,9 @@
package org.apache.skywalking.oap.server.core.query.entity;
+/**
+ * @author peng-yongsheng
+ */
public enum Order {
ASC,
DES
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Pagination.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Pagination.java
index 1c612e2..8deec5a 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Pagination.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Pagination.java
@@ -20,6 +20,9 @@ package org.apache.skywalking.oap.server.core.query.entity;
import lombok.*;
+/**
+ * @author peng-yongsheng
+ */
@Getter
@Setter
public class Pagination {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/QueryOrder.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/QueryOrder.java
index ec38895..6b829e8 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/QueryOrder.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/QueryOrder.java
@@ -18,6 +18,9 @@
package org.apache.skywalking.oap.server.core.query.entity;
+/**
+ * @author peng-yongsheng
+ */
public enum QueryOrder {
BY_START_TIME,
BY_DURATION
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Ref.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Ref.java
index d2b0f71..c32b36a 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Ref.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Ref.java
@@ -20,6 +20,9 @@ package org.apache.skywalking.oap.server.core.query.entity;
import lombok.*;
+/**
+ * @author peng-yongsheng
+ */
@Setter
@Getter
public class Ref {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/RefType.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/RefType.java
index 4436cd2..6e96257 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/RefType.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/RefType.java
@@ -18,6 +18,9 @@
package org.apache.skywalking.oap.server.core.query.entity;
+/**
+ * @author peng-yongsheng
+ */
public enum RefType {
CROSS_PROCESS,
CROSS_THREAD
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Service.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Service.java
index a2b1124..3f7a97c 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Service.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Service.java
@@ -20,6 +20,9 @@ package org.apache.skywalking.oap.server.core.query.entity;
import lombok.*;
+/**
+ * @author peng-yongsheng
+ */
@Getter
@Setter
public class Service {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/ServiceInstance.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/ServiceInstance.java
index 5acedd2..89bd6d7 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/ServiceInstance.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/ServiceInstance.java
@@ -21,11 +21,17 @@ package org.apache.skywalking.oap.server.core.query.entity;
import java.util.*;
import lombok.*;
+/**
+ * @author peng-yongsheng
+ */
@Getter
-@Setter
public class ServiceInstance {
- private String id;
- private String name;
- private List<Attribute> attributes = new ArrayList<>();
- private Language language;
+ @Setter private String id;
+ @Setter private String name;
+ private final List<Attribute> attributes;
+ @Setter private Language language;
+
+ public ServiceInstance() {
+ this.attributes = new ArrayList<>();
+ }
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Span.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Span.java
index 0a28568..c948c50 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Span.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Span.java
@@ -21,26 +21,34 @@ package org.apache.skywalking.oap.server.core.query.entity;
import java.util.*;
import lombok.*;
+/**
+ * @author peng-yongsheng
+ */
@Getter
-@Setter
public class Span {
- private String traceId;
- private String segmentId;
- private int spanId;
- private int parentSpanId;
- private List<Ref> refs = new ArrayList<>();
- private String serviceCode;
- private long startTime;
- private long endTime;
- private String endpointName;
- private String type;
- private String peer;
- private String component;
- private boolean isError;
- private String layer;
- private List<KeyValue> tags = new ArrayList<>();
- private List<LogEntity> logs = new ArrayList<>();
- private boolean isRoot;
- private String segmentSpanId;
- private String segmentParentSpanId;
+ @Setter private String traceId;
+ @Setter private String segmentId;
+ @Setter private int spanId;
+ @Setter private int parentSpanId;
+ private final List<Ref> refs;
+ @Setter private String serviceCode;
+ @Setter private long startTime;
+ @Setter private long endTime;
+ @Setter private String endpointName;
+ @Setter private String type;
+ @Setter private String peer;
+ @Setter private String component;
+ @Setter private boolean isError;
+ @Setter private String layer;
+ private final List<KeyValue> tags;
+ private final List<LogEntity> logs;
+ @Setter private boolean isRoot;
+ @Setter private String segmentSpanId;
+ @Setter private String segmentParentSpanId;
+
+ public Span() {
+ this.refs = new ArrayList<>();
+ this.tags = new ArrayList<>();
+ this.logs = new ArrayList<>();
+ }
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Step.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Step.java
index 7fed3a5..7d22268 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Step.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Step.java
@@ -18,6 +18,9 @@
package org.apache.skywalking.oap.server.core.query.entity;
+/**
+ * @author peng-yongsheng
+ */
public enum Step {
MONTH,
DAY,
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Thermodynamic.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Thermodynamic.java
index 6748f13..e3b77eb 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Thermodynamic.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Thermodynamic.java
@@ -21,11 +21,17 @@ package org.apache.skywalking.oap.server.core.query.entity;
import java.util.*;
import lombok.*;
+/**
+ * @author peng-yongsheng
+ */
@Getter
-@Setter
public class Thermodynamic {
- private List<List<Long>> nodes = new ArrayList<>();
- private int axisYStep;
+ private final List<List<Long>> nodes;
+ @Setter private int axisYStep;
+
+ public Thermodynamic() {
+ this.nodes = new ArrayList<>();
+ }
public void setNodeValue(int columnNum, int rowNum, Long value) {
List<Long> element = new ArrayList<>(3);
@@ -34,5 +40,4 @@ public class Thermodynamic {
element.add(value);
nodes.add(element);
}
-
}
\ No newline at end of file
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/TopNEntity.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/TopNEntity.java
index 411b9e0..8eb8930 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/TopNEntity.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/TopNEntity.java
@@ -20,6 +20,9 @@ package org.apache.skywalking.oap.server.core.query.entity;
import lombok.*;
+/**
+ * @author peng-yongsheng
+ */
@Getter
@Setter
public class TopNEntity {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Topology.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Topology.java
index c76261d..4f2c181 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Topology.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Topology.java
@@ -21,8 +21,16 @@ package org.apache.skywalking.oap.server.core.query.entity;
import java.util.*;
import lombok.Getter;
+/**
+ * @author peng-yongsheng
+ */
@Getter
public class Topology {
- private List<Node> nodes = new ArrayList<>();
- private List<Call> calls = new ArrayList<>();
+ private final List<Node> nodes;
+ private final List<Call> calls;
+
+ public Topology() {
+ this.nodes = new ArrayList<>();
+ this.calls = new ArrayList<>();
+ }
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Trace.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Trace.java
index 87988a2..f08076c 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Trace.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/Trace.java
@@ -21,7 +21,14 @@ package org.apache.skywalking.oap.server.core.query.entity;
import java.util.*;
import lombok.Getter;
+/**
+ * @author peng-yongsheng
+ */
@Getter
public class Trace {
- private List<Span> spans = new ArrayList<>();
+ private final List<Span> spans;
+
+ public Trace() {
+ this.spans = new ArrayList<>();
+ }
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/TraceBrief.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/TraceBrief.java
index d24333e..64a8744 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/TraceBrief.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/TraceBrief.java
@@ -21,9 +21,15 @@ package org.apache.skywalking.oap.server.core.query.entity;
import java.util.*;
import lombok.*;
-@Setter
+/**
+ * @author peng-yongsheng
+ */
@Getter
public class TraceBrief {
- private List<BasicTrace> traces = new ArrayList<>();
- private int total;
+ private final List<BasicTrace> traces;
+ @Setter private int total;
+
+ public TraceBrief() {
+ this.traces = new ArrayList<>();
+ }
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/TraceState.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/TraceState.java
index c184a00..a7d3cac 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/TraceState.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/entity/TraceState.java
@@ -18,6 +18,9 @@
package org.apache.skywalking.oap.server.core.query.entity;
+/**
+ * @author peng-yongsheng
+ */
public enum TraceState {
ALL,
SUCCESS,
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Scope.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Scope.java
index e77d036..880395c 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Scope.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Scope.java
@@ -25,5 +25,12 @@ public enum Scope {
All, Service, ServiceInstance, Endpoint, ServiceRelation, ServiceInstanceRelation, EndpointRelation, NetworkAddress,
ServiceInstanceJVMCPU, ServiceInstanceJVMMemory, ServiceInstanceJVMMemoryPool, ServiceInstanceJVMGC,
ServiceComponent, ServiceMapping,
- Segment
+ Segment;
+
+ public static Scope valueOf(int ordinal) {
+ if (ordinal < 0 || ordinal >= values().length) {
+ throw new IndexOutOfBoundsException("Invalid ordinal");
+ }
+ return values()[ordinal];
+ }
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/StorageModule.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/StorageModule.java
index 424b235..488661f 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/StorageModule.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/StorageModule.java
@@ -38,6 +38,6 @@ public class StorageModule extends ModuleDefine {
IBatchDAO.class, StorageDAO.class, IRegisterLockDAO.class,
IServiceInventoryCacheDAO.class, IServiceInstanceInventoryCacheDAO.class,
IEndpointInventoryCacheDAO.class, INetworkAddressInventoryCacheDAO.class,
- ITopologyQueryDAO.class, IMetricQueryDAO.class, ITraceQueryDAO.class, IMetadataQueryDAO.class, IAggregationQueryDAO.class};
+ ITopologyQueryDAO.class, IMetricQueryDAO.class, ITraceQueryDAO.class, IMetadataQueryDAO.class, IAggregationQueryDAO.class, IAlarmQueryDAO.class};
}
}
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/AlarmMessage.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IAlarmQueryDAO.java
similarity index 65%
rename from oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/AlarmMessage.java
rename to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IAlarmQueryDAO.java
index e79e938..0f6d4cb 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/AlarmMessage.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/query/IAlarmQueryDAO.java
@@ -16,13 +16,18 @@
*
*/
-package org.apache.skywalking.oap.query.graphql.type;
+package org.apache.skywalking.oap.server.core.storage.query;
+import java.io.IOException;
+import org.apache.skywalking.oap.server.core.query.entity.*;
import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.storage.DAO;
-public class AlarmMessage {
- private Scope scope;
- private String id;
- private String message;
- private Long startTime;
+/**
+ * @author peng-yongsheng
+ */
+public interface IAlarmQueryDAO extends DAO {
+
+ Alarms getAlarm(final Scope scope, final String keyword, final int limit, final int from, final long startTB,
+ final long endTB) throws IOException;
}
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryProvider.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryProvider.java
index 840ef42..7288c43 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryProvider.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryProvider.java
@@ -65,7 +65,7 @@ public class GraphQLQueryProvider extends ModuleProvider {
.file("query-protocol/aggregation.graphqls")
.resolvers(new AggregationQuery(getManager()))
.file("query-protocol/alarm.graphqls")
- .resolvers(new AlarmQuery())
+ .resolvers(new AlarmQuery(getManager()))
.build()
.makeExecutableSchema();
this.graphQL = GraphQL.newGraphQL(schema).build();
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/AggregationQuery.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/AggregationQuery.java
index 47812c3..fabbc2d 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/AggregationQuery.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/AggregationQuery.java
@@ -27,6 +27,9 @@ import org.apache.skywalking.oap.server.core.query.*;
import org.apache.skywalking.oap.server.core.query.entity.*;
import org.apache.skywalking.oap.server.library.module.ModuleManager;
+/**
+ * @author peng-yongsheng
+ */
public class AggregationQuery implements GraphQLQueryResolver {
private final ModuleManager moduleManager;
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/AlarmQuery.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/AlarmQuery.java
index 20b5703..3a30e8f 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/AlarmQuery.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/AlarmQuery.java
@@ -19,16 +19,42 @@
package org.apache.skywalking.oap.query.graphql.resolver;
import com.coxautodev.graphql.tools.GraphQLQueryResolver;
-import org.apache.skywalking.oap.query.graphql.type.*;
-import org.apache.skywalking.oap.server.core.query.entity.Pagination;
+import java.io.IOException;
+import org.apache.skywalking.oap.query.graphql.type.Duration;
+import org.apache.skywalking.oap.server.core.CoreModule;
+import org.apache.skywalking.oap.server.core.query.*;
+import org.apache.skywalking.oap.server.core.query.entity.*;
import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.library.module.ModuleManager;
+/**
+ * @author peng-yongsheng
+ */
public class AlarmQuery implements GraphQLQueryResolver {
+
+ private final ModuleManager moduleManager;
+ private AlarmQueryService queryService;
+
+ public AlarmQuery(ModuleManager moduleManager) {
+ this.moduleManager = moduleManager;
+ }
+
+ private AlarmQueryService getQueryService() {
+ if (queryService == null) {
+ this.queryService = moduleManager.find(CoreModule.NAME).getService(AlarmQueryService.class);
+ }
+ return queryService;
+ }
+
public AlarmTrend getAlarmTrend(final Duration duration) {
return new AlarmTrend();
}
- public Alarms getAlarm(final Duration duration, final Scope scope, final String keyword, final Pagination paging) {
- return new Alarms();
+ public Alarms getAlarm(final Duration duration, final Scope scope, final String keyword,
+ final Pagination paging) throws IOException {
+ long startTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getStart());
+ long endTimeBucket = DurationUtils.INSTANCE.exchangeToTimeBucket(duration.getEnd());
+
+ return getQueryService().getAlarm(scope, keyword, paging, startTimeBucket, endTimeBucket);
}
}
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java
index bcc6da0..3ab69c1 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetadataQuery.java
@@ -28,6 +28,9 @@ import org.apache.skywalking.oap.server.core.query.*;
import org.apache.skywalking.oap.server.core.query.entity.*;
import org.apache.skywalking.oap.server.library.module.ModuleManager;
+/**
+ * @author peng-yongsheng
+ */
public class MetadataQuery implements GraphQLQueryResolver {
private final ModuleManager moduleManager;
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetricQuery.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetricQuery.java
index 618ca0d..429d32f 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetricQuery.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/MetricQuery.java
@@ -27,6 +27,9 @@ import org.apache.skywalking.oap.server.core.query.*;
import org.apache.skywalking.oap.server.core.query.entity.*;
import org.apache.skywalking.oap.server.library.module.ModuleManager;
+/**
+ * @author peng-yongsheng
+ */
public class MetricQuery implements GraphQLQueryResolver {
private final ModuleManager moduleManager;
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/TopologyQuery.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/TopologyQuery.java
index 454d9b7..ef5a7bc 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/TopologyQuery.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/TopologyQuery.java
@@ -26,6 +26,9 @@ import org.apache.skywalking.oap.server.core.query.*;
import org.apache.skywalking.oap.server.core.query.entity.Topology;
import org.apache.skywalking.oap.server.library.module.ModuleManager;
+/**
+ * @author peng-yongsheng
+ */
public class TopologyQuery implements GraphQLQueryResolver {
private final ModuleManager moduleManager;
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/TraceQuery.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/TraceQuery.java
index b2d662a..aca728e 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/TraceQuery.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/resolver/TraceQuery.java
@@ -29,6 +29,9 @@ import org.apache.skywalking.oap.server.library.util.StringUtils;
import static java.util.Objects.nonNull;
+/**
+ * @author peng-yongsheng
+ */
public class TraceQuery implements GraphQLQueryResolver {
private final ModuleManager moduleManager;
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/AlarmTrend.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/AlarmTrend.java
deleted file mode 100644
index a64d10f..0000000
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/AlarmTrend.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.skywalking.oap.query.graphql.type;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class AlarmTrend {
- private List<Integer> numOfAlarm = new ArrayList<>();
-}
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Alarms.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Alarms.java
deleted file mode 100644
index d9d7d3f..0000000
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/type/Alarms.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.skywalking.oap.query.graphql.type;
-
-import java.util.List;
-
-public class Alarms {
- private List<AlarmMessage> msgs;
- private int total;
-}
diff --git a/oap-server/server-starter/src/main/resources/alarm-settings.yml b/oap-server/server-starter/src/main/resources/alarm-settings.yml
index f26fa1e..55c150e 100644
--- a/oap-server/server-starter/src/main/resources/alarm-settings.yml
+++ b/oap-server/server-starter/src/main/resources/alarm-settings.yml
@@ -15,8 +15,8 @@
# limitations under the License.
# Sample alarm rules.
-#rules:
-# # Rule unique name, must be ended with `_rule`.
+rules:
+ # Rule unique name, must be ended with `_rule`.
# endpoint_percent_rule:
# # Indicator value need to be long, double or int
# indicator-name: endpoint_percent
@@ -29,16 +29,16 @@
# # How many times of checks, the alarm keeps silence after alarm triggered, default as same as period.
# silence-period: 10
# message: Successful rate of endpoint {name} is lower than 75%
-# service_percent_rule:
-# indicator-name: service_percent
-# # [Optional] Default, match all services in this indicator
-# include-names:
-# - service_a
-# - service_b
-# threshold: 85
-# op: <
-# period: 10
-# count: 4
+ service_resp_time_rule:
+ indicator-name: service_resp_time
+ # [Optional] Default, match all services in this indicator
+ include-names:
+ - dubbox-provider
+ - dubbox-consumer
+ threshold: 1000
+ op: ">"
+ period: 10
+ count: 1
#webhooks:
# - http://127.0.0.1/notify/
diff --git a/oap-server/server-starter/src/main/resources/log4j2.xml b/oap-server/server-starter/src/main/resources/log4j2.xml
index 2bb7226..5922930 100644
--- a/oap-server/server-starter/src/main/resources/log4j2.xml
+++ b/oap-server/server-starter/src/main/resources/log4j2.xml
@@ -32,6 +32,7 @@
<logger name="io.netty" level="INFO"/>
<logger name="org.apache.http" level="INFO"/>
<logger name="org.apache.skywalking.oap.server.receiver.istio.telemetry" level="DEBUG"/>
+ <logger name="org.apache.skywalking.oap.server.core.alarm.AlarmStandardPersistence" level="DEBUG"/>
<logger name="org.apache.skywalking.oap.server.core.remote" level="INFO"/>
<Root level="INFO">
<AppenderRef ref="Console"/>
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/StorageModuleElasticsearchProvider.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/StorageModuleElasticsearchProvider.java
index 83e85c4..e6b9eb4 100644
--- a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/StorageModuleElasticsearchProvider.java
+++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/StorageModuleElasticsearchProvider.java
@@ -80,6 +80,7 @@ public class StorageModuleElasticsearchProvider extends ModuleProvider {
this.registerServiceImplementation(ITraceQueryDAO.class, new TraceQueryEsDAO(elasticSearchClient));
this.registerServiceImplementation(IMetadataQueryDAO.class, new MetadataQueryEsDAO(elasticSearchClient));
this.registerServiceImplementation(IAggregationQueryDAO.class, new AggregationQueryEsDAO(elasticSearchClient));
+ this.registerServiceImplementation(IAlarmQueryDAO.class, new AlarmQueryEsDAO(elasticSearchClient));
}
@Override
diff --git a/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/AlarmQueryEsDAO.java b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/AlarmQueryEsDAO.java
new file mode 100644
index 0000000..942c3d7
--- /dev/null
+++ b/oap-server/server-storage-plugin/storage-elasticsearch-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/elasticsearch/query/AlarmQueryEsDAO.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.storage.plugin.elasticsearch.query;
+
+import java.io.IOException;
+import java.util.Objects;
+import org.apache.skywalking.oap.server.core.alarm.AlarmRecord;
+import org.apache.skywalking.oap.server.core.query.entity.*;
+import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.core.storage.query.IAlarmQueryDAO;
+import org.apache.skywalking.oap.server.library.client.elasticsearch.ElasticSearchClient;
+import org.apache.skywalking.oap.server.library.util.StringUtils;
+import org.apache.skywalking.oap.server.storage.plugin.elasticsearch.base.*;
+import org.elasticsearch.action.search.SearchResponse;
+import org.elasticsearch.index.query.*;
+import org.elasticsearch.search.SearchHit;
+import org.elasticsearch.search.builder.SearchSourceBuilder;
+
+/**
+ * @author peng-yongsheng
+ */
+public class AlarmQueryEsDAO extends EsDAO implements IAlarmQueryDAO {
+
+ public AlarmQueryEsDAO(ElasticSearchClient client) {
+ super(client);
+ }
+
+ public Alarms getAlarm(final Scope scope, final String keyword, final int limit, final int from, final long startTB,
+ final long endTB) throws IOException {
+ SearchSourceBuilder sourceBuilder = SearchSourceBuilder.searchSource();
+
+ BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
+ boolQueryBuilder.must().add(QueryBuilders.rangeQuery(AlarmRecord.TIME_BUCKET).gte(startTB).lte(endTB));
+
+ if (Objects.nonNull(scope)) {
+ boolQueryBuilder.must().add(QueryBuilders.termQuery(AlarmRecord.SCOPE, scope.ordinal()));
+ }
+
+ if (StringUtils.isNotEmpty(keyword)) {
+ String matchCName = MatchCNameBuilder.INSTANCE.build(AlarmRecord.ALARM_MESSAGE);
+ boolQueryBuilder.must().add(QueryBuilders.matchQuery(matchCName, keyword));
+ }
+
+ sourceBuilder.query(boolQueryBuilder);
+ sourceBuilder.size(limit);
+ sourceBuilder.from(from);
+
+ SearchResponse response = getClient().search(AlarmRecord.INDEX_NAME, sourceBuilder);
+
+ Alarms alarms = new Alarms();
+ alarms.setTotal((int)response.getHits().totalHits);
+
+ for (SearchHit searchHit : response.getHits().getHits()) {
+ AlarmRecord.Builder builder = new AlarmRecord.Builder();
+ AlarmRecord alarmRecord = builder.map2Data(searchHit.getSourceAsMap());
+
+ AlarmMessage message = new AlarmMessage();
+ message.setId(String.valueOf(alarmRecord.getId0()));
+ message.setMessage(alarmRecord.getAlarmMessage());
+ message.setStartTime(alarmRecord.getStartTime());
+ message.setScope(Scope.valueOf(alarmRecord.getScope()));
+ alarms.getMsgs().add(message);
+ }
+ return alarms;
+ }
+}