You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2020/05/10 16:28:28 UTC
[skywalking] branch master updated: Alarm support multiple scope
(#4769)
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new 749af3e Alarm support multiple scope (#4769)
749af3e is described below
commit 749af3e04efcf577ef8745fd09c15bbde3704d5c
Author: mrproliu <74...@qq.com>
AuthorDate: Mon May 11 00:28:10 2020 +0800
Alarm support multiple scope (#4769)
* Support service relation and database access alarm
* support service instance relation alarm
* support endpoint relation alarm
* document and format the name
* resolve issues
* add database access and endpoint relation rule example
* resolve code format
* remove unnecessary getter and setter package declare
* remove unnecessary fields
Co-authored-by: Mrproliu <mr...@lagou.com>
---
dist-material/alarm-settings.yml | 14 ++++
docs/en/setup/backend/backend-alarm.md | 40 ++++++----
.../server/exporter/provider/MetricFormatter.java | 33 ++++++++
.../oal/rt/parser/ConditionExpression.java | 5 +-
.../skywalking/oal/rt/parser/DataColumn.java | 5 +-
.../skywalking/oal/rt/parser/EntryMethod.java | 5 +-
.../skywalking/oal/rt/parser/Expression.java | 5 +-
.../skywalking/oal/rt/parser/PersistenceField.java | 5 +-
.../skywalking/oal/rt/parser/SourceColumn.java | 5 +-
.../oap/server/core/alarm/provider/AlarmRule.java | 5 +-
.../server/core/alarm/provider/NotifyHandler.java | 57 +++++++++++++-
.../oap/server/core/alarm/provider/Rules.java | 5 +-
.../core/alarm/provider/NotifyHandlerTest.java | 90 ++++++++++++++++++++++
.../oap/server/core/alarm/AlarmMessage.java | 5 +-
.../oap/server/core/alarm/EndpointMetaInAlarm.java | 7 +-
...Alarm.java => EndpointRelationMetaInAlarm.java} | 25 +++---
.../core/alarm/ServiceInstanceMetaInAlarm.java | 7 +-
...ava => ServiceInstanceRelationMetaInAlarm.java} | 25 +++---
.../oap/server/core/alarm/ServiceMetaInAlarm.java | 7 +-
...nAlarm.java => ServiceRelationMetaInAlarm.java} | 21 +++--
.../oap/server/core/source/DatabaseAccess.java | 3 +-
.../oap/server/core/source/DefaultScopeDefine.java | 45 +++++++++++
.../oap/server/core/source/EndpointRelation.java | 3 +-
.../oap/server/core/source/ScopeDefaultColumn.java | 3 +-
.../core/source/ServiceInstanceRelation.java | 3 +-
.../oap/server/core/source/ServiceRelation.java | 3 +-
.../oap/query/graphql/GraphQLQueryConfig.java | 2 +-
27 files changed, 333 insertions(+), 100 deletions(-)
diff --git a/dist-material/alarm-settings.yml b/dist-material/alarm-settings.yml
index fc5e121..6402151 100644
--- a/dist-material/alarm-settings.yml
+++ b/dist-material/alarm-settings.yml
@@ -54,6 +54,20 @@ rules:
count: 2
silence-period: 5
message: Response time of service instance {name} is more than 1000ms in 2 minutes of last 10 minutes
+ database_access_resp_time_rule:
+ metrics-name: database_access_resp_time
+ threshold: 1000
+ op: ">"
+ period: 10
+ count: 2
+ message: Response time of database access {name} is more than 1000ms in 2 minutes of last 10 minutes
+ endpoint_relation_resp_time_rule:
+ metrics-name: endpoint_relation_resp_time
+ threshold: 1000
+ op: ">"
+ period: 10
+ count: 2
+ message: Response time of endpoint relation {name} is more than 1000ms in 2 minutes of last 10 minutes
# Active endpoint related metrics alarm will cost more memory than service and service instance metrics alarm.
# Because the number of endpoint is much more than service and instance.
#
diff --git a/docs/en/setup/backend/backend-alarm.md b/docs/en/setup/backend/backend-alarm.md
index b812036..c00817b 100644
--- a/docs/en/setup/backend/backend-alarm.md
+++ b/docs/en/setup/backend/backend-alarm.md
@@ -5,15 +5,23 @@ There are three parts in alarm rule definition.
1. [Webhooks](#webhook). The list of web service endpoint, which should be called after the alarm is triggered.
1. [gRPCHook](#gRPCHook). The host and port of remote gRPC method, which should be called after the alarm is triggered.
+## Entity name
+Define the relation between scope and entity name.
+- **Service**: Service name
+- **Instance**: {Instance name} of {Service name}
+- **Endpoint**: {Endpoint name} in {Service name}
+- **Database**: Database service name
+- **Service Relation**: {Source service name} to {Dest service name}
+- **Instance Relation**: {Source instance name} of {Source service name} to {Dest instance name} of {Dest service name}
+- **Endpoint Relation**: {Source endpoint name} in {Source Service name} to {Dest endpoint name} in {Dest service name}
+
## Rules
Alarm rule is constituted by following keys
- **Rule name**. Unique name, show in alarm message. Must end with `_rule`.
- **Metrics name**. A.K.A. metrics name in oal script. Only long, double, int types are supported. See
[List of all potential metrics name](#list-of-all-potential-metrics-name).
-- **Include names**. The following entity names are included in this rule. Such as Service name,
-endpoint name.
-- **Exclude names**. The following entity names are excluded in this rule. Such as Service name,
- endpoint name.
+- **Include names**. The following entity names are included in this rule. Please follow [Entity name define](#entity-name).
+- **Exclude names**. The following entity names are excluded in this rule. Please follow [Entity name define](#entity-name).
- **Threshold**. The target value.
For multiple values metrics, such as **percentile**, the threshold is an array. Described like `value1, value2, value3, value4, value5`.
Each value could the threshold for each value of the metrics. Set the value to `-` if don't want to trigger alarm by this or some of the values.
@@ -74,19 +82,21 @@ We provided a default `alarm-setting.yml` in our distribution only for convenien
1. Percentile of service response time is over 1s in last 3 minutes
1. Service Instance average response time over 1s in last 2 minutes.
1. Endpoint average response time over 1s in last 2 minutes.
+1. Database access average response time over 1s in last 2 minutes.
+1. Endpoint relation average response time over 1s in last 2 minutes.
### List of all potential metrics name
The metrics names are defined in official [OAL scripts](../../guides/backend-oal-scripts.md), right now
-metrics from **Service**, **Service Instance**, **Endpoint** scopes could be used in Alarm, we will extend in further versions.
+metrics from **Service**, **Service Instance**, **Endpoint**, **Service Relation**, **Service Instance Relation**, **Endpoint Relation** scopes could be used in Alarm, and the **Database access** same with **Service** scope.
Submit issue or pull request if you want to support any other scope in alarm.
## Webhook
-Webhook requires the peer is a web container. The alarm message will send through HTTP post by `application/json` content type. The JSON format is based on `List<org.apache.skywalking.oap.server.core.alarm.AlarmMessage` with following key information.
+Webhook requires the peer is a web container. The alarm message will send through HTTP post by `application/json` content type. The JSON format is based on `List<org.apache.skywalking.oap.server.core.alarm.AlarmMessage>` with following key information.
- **scopeId**, **scope**. All scopes are defined in org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.
-- **name**. Target scope entity name.
-- **id0**. The ID of scope entity, matched the name.
-- **id1**. Not used today.
+- **name**. Target scope entity name. Please follow [Entity name define](#entity-name).
+- **id0**. The ID of the scope entity matched the name. When using relation scope, it is the source entity ID.
+- **id1**. When using relation scope, it will be the dest entity ID. Otherwise, it is empty.
- **ruleName**. The rule name you configured in `alarm-settings.yml`.
- **alarmMessage**. Alarm text message.
- **startTime**. Alarm time measured in milliseconds, between the current time and midnight, January 1, 1970 UTC.
@@ -95,20 +105,20 @@ Example as following
```json
[{
"scopeId": 1,
- "scope": "SERVICE",
- "name": "serviceA",
+ "scope": "SERVICE",
+ "name": "serviceA",
"id0": "12",
"id1": "",
- "ruleName": "service_resp_time_rule",
+ "ruleName": "service_resp_time_rule",
"alarmMessage": "alarmMessage xxxx",
"startTime": 1560524171000
}, {
"scopeId": 1,
- "scope": "SERVICE",
- "name": "serviceB",
+ "scope": "SERVICE",
+ "name": "serviceB",
"id0": "23",
"id1": "",
- "ruleName": "service_resp_time_rule",
+ "ruleName": "service_resp_time_rule",
"alarmMessage": "alarmMessage yyy",
"startTime": 1560524171000
}]
diff --git a/oap-server/exporter/src/main/java/org/apache/skywalking/oap/server/exporter/provider/MetricFormatter.java b/oap-server/exporter/src/main/java/org/apache/skywalking/oap/server/exporter/provider/MetricFormatter.java
index ba320c6..bd281d9 100644
--- a/oap-server/exporter/src/main/java/org/apache/skywalking/oap/server/exporter/provider/MetricFormatter.java
+++ b/oap-server/exporter/src/main/java/org/apache/skywalking/oap/server/exporter/provider/MetricFormatter.java
@@ -42,6 +42,39 @@ public class MetricFormatter {
final IDManager.EndpointID.EndpointIDDefinition endpointIDDefinition = IDManager.EndpointID.analysisId(
endpointId);
return endpointIDDefinition.getEndpointName();
+ } else if (DefaultScopeDefine.inServiceRelationCatalog(scope)) {
+ final String serviceRelationId = meta.getId();
+ final IDManager.ServiceID.ServiceRelationDefine serviceRelationDefine = IDManager.ServiceID.analysisRelationId(
+ serviceRelationId);
+ final IDManager.ServiceID.ServiceIDDefinition sourceIdDefinition = IDManager.ServiceID.analysisId(
+ serviceRelationDefine.getSourceId());
+ final IDManager.ServiceID.ServiceIDDefinition destIdDefinition = IDManager.ServiceID.analysisId(
+ serviceRelationDefine.getDestId());
+ return sourceIdDefinition.getName() + " to " + destIdDefinition.getName();
+ } else if (DefaultScopeDefine.inServiceInstanceRelationCatalog(scope)) {
+ final String instanceRelationId = meta.getId();
+ final IDManager.ServiceInstanceID.ServiceInstanceRelationDefine serviceRelationDefine = IDManager.ServiceInstanceID.analysisRelationId(
+ instanceRelationId);
+ final IDManager.ServiceInstanceID.InstanceIDDefinition sourceIdDefinition = IDManager.ServiceInstanceID.analysisId(
+ serviceRelationDefine.getSourceId());
+ final IDManager.ServiceID.ServiceIDDefinition sourceServiceId = IDManager.ServiceID.analysisId(
+ sourceIdDefinition.getServiceId());
+ final IDManager.ServiceInstanceID.InstanceIDDefinition destIdDefinition = IDManager.ServiceInstanceID.analysisId(
+ serviceRelationDefine.getDestId());
+ final IDManager.ServiceID.ServiceIDDefinition destServiceId = IDManager.ServiceID.analysisId(
+ destIdDefinition.getServiceId());
+ return sourceIdDefinition.getName() + " of " + sourceServiceId.getName()
+ + " to " + destIdDefinition.getName() + " of " + destServiceId.getName();
+ } else if (DefaultScopeDefine.inEndpointRelationCatalog(scope)) {
+ final String endpointRelationId = meta.getId();
+ final IDManager.EndpointID.EndpointRelationDefine endpointRelationDefine = IDManager.EndpointID.analysisRelationId(
+ endpointRelationId);
+ final IDManager.ServiceID.ServiceIDDefinition sourceService = IDManager.ServiceID.analysisId(
+ endpointRelationDefine.getSourceServiceId());
+ final IDManager.ServiceID.ServiceIDDefinition destService = IDManager.ServiceID.analysisId(
+ endpointRelationDefine.getDestServiceId());
+ return endpointRelationDefine.getSource() + " in " + sourceService.getName()
+ + " to " + endpointRelationDefine.getDest() + " in " + destService.getName();
} else if (scope == DefaultScopeDefine.ALL) {
return "";
} else {
diff --git a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/ConditionExpression.java b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/ConditionExpression.java
index cdcfe8a..c562a70 100644
--- a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/ConditionExpression.java
+++ b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/ConditionExpression.java
@@ -18,12 +18,11 @@
package org.apache.skywalking.oal.rt.parser;
-import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
-@Getter(AccessLevel.PUBLIC)
-@Setter(AccessLevel.PUBLIC)
+@Getter
+@Setter
public class ConditionExpression {
// original from script
private String expressionType;
diff --git a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/DataColumn.java b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/DataColumn.java
index 02e71cb..8a43f9b 100644
--- a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/DataColumn.java
+++ b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/DataColumn.java
@@ -18,13 +18,12 @@
package org.apache.skywalking.oal.rt.parser;
-import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import org.apache.skywalking.oal.rt.util.ClassMethodUtil;
-@Getter(AccessLevel.PUBLIC)
-@Setter(AccessLevel.PUBLIC)
+@Getter
+@Setter
public class DataColumn {
private String fieldName;
private String columnName;
diff --git a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/EntryMethod.java b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/EntryMethod.java
index f716a44..61f5605 100644
--- a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/EntryMethod.java
+++ b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/EntryMethod.java
@@ -20,13 +20,12 @@ package org.apache.skywalking.oal.rt.parser;
import java.util.ArrayList;
import java.util.List;
-import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import org.apache.skywalking.oal.rt.util.ClassMethodUtil;
-@Getter(AccessLevel.PUBLIC)
-@Setter(AccessLevel.PUBLIC)
+@Getter
+@Setter
public class EntryMethod {
static final int LITERAL_TYPE = 1;
static final int IDENTIFIER_TYPE = 2;
diff --git a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/Expression.java b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/Expression.java
index ccd1856..b911d34 100644
--- a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/Expression.java
+++ b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/Expression.java
@@ -18,12 +18,11 @@
package org.apache.skywalking.oal.rt.parser;
-import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
-@Getter(AccessLevel.PUBLIC)
-@Setter(AccessLevel.PUBLIC)
+@Getter
+@Setter
public class Expression {
private String expressionObject;
private String left;
diff --git a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/PersistenceField.java b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/PersistenceField.java
index 622e7e8..45c5a10 100644
--- a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/PersistenceField.java
+++ b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/PersistenceField.java
@@ -18,13 +18,12 @@
package org.apache.skywalking.oal.rt.parser;
-import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import org.apache.skywalking.oal.rt.util.ClassMethodUtil;
-@Getter(AccessLevel.PUBLIC)
-@Setter(AccessLevel.PUBLIC)
+@Getter
+@Setter
public class PersistenceField {
private String fieldName;
private String setter;
diff --git a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/SourceColumn.java b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/SourceColumn.java
index fc798a3..b1d6618 100644
--- a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/SourceColumn.java
+++ b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/parser/SourceColumn.java
@@ -19,13 +19,12 @@
package org.apache.skywalking.oal.rt.parser;
import java.util.Objects;
-import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import org.apache.skywalking.oal.rt.util.ClassMethodUtil;
-@Getter(AccessLevel.PUBLIC)
-@Setter(AccessLevel.PUBLIC)
+@Getter
+@Setter
public class SourceColumn {
private String fieldName;
private String columnName;
diff --git a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/AlarmRule.java b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/AlarmRule.java
index df0cc96..ef6672b 100644
--- a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/AlarmRule.java
+++ b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/AlarmRule.java
@@ -20,7 +20,6 @@ package org.apache.skywalking.oap.server.core.alarm.provider;
import java.util.ArrayList;
import java.util.Objects;
-import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
@@ -31,8 +30,8 @@ import lombok.ToString;
@Builder
@NoArgsConstructor
@AllArgsConstructor
-@Setter(AccessLevel.PUBLIC)
-@Getter(AccessLevel.PUBLIC)
+@Setter
+@Getter
@ToString
public class AlarmRule {
private String alarmRuleName;
diff --git a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandler.java b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandler.java
index d46fe39..bf77c38 100644
--- a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandler.java
+++ b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandler.java
@@ -23,6 +23,9 @@ import java.util.Arrays;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
import org.apache.skywalking.oap.server.core.alarm.AlarmCallback;
+import org.apache.skywalking.oap.server.core.alarm.EndpointRelationMetaInAlarm;
+import org.apache.skywalking.oap.server.core.alarm.ServiceInstanceRelationMetaInAlarm;
+import org.apache.skywalking.oap.server.core.alarm.ServiceRelationMetaInAlarm;
import org.apache.skywalking.oap.server.core.alarm.EndpointMetaInAlarm;
import org.apache.skywalking.oap.server.core.alarm.MetaInAlarm;
import org.apache.skywalking.oap.server.core.alarm.MetricsNotify;
@@ -51,9 +54,9 @@ public class NotifyHandler implements MetricsNotify {
MetricsMetaInfo meta = withMetadata.getMeta();
int scope = meta.getScope();
- if (!DefaultScopeDefine.inServiceCatalog(scope) && !DefaultScopeDefine.inServiceInstanceCatalog(
- scope) && !DefaultScopeDefine
- .inEndpointCatalog(scope)) {
+ if (!DefaultScopeDefine.inServiceCatalog(scope) && !DefaultScopeDefine.inServiceInstanceCatalog(scope)
+ && !DefaultScopeDefine.inEndpointCatalog(scope) && !DefaultScopeDefine.inServiceRelationCatalog(scope)
+ && !DefaultScopeDefine.inServiceInstanceRelationCatalog(scope) && !DefaultScopeDefine.inEndpointRelationCatalog(scope)) {
return;
}
@@ -91,6 +94,54 @@ public class NotifyHandler implements MetricsNotify {
endpointMetaInAlarm.setName(
endpointIDDefinition.getEndpointName() + " in " + serviceIDDefinition.getName());
metaInAlarm = endpointMetaInAlarm;
+ } else if (DefaultScopeDefine.inServiceRelationCatalog(scope)) {
+ final String serviceRelationId = meta.getId();
+ final IDManager.ServiceID.ServiceRelationDefine serviceRelationDefine = IDManager.ServiceID.analysisRelationId(
+ serviceRelationId);
+ final IDManager.ServiceID.ServiceIDDefinition sourceIdDefinition = IDManager.ServiceID.analysisId(
+ serviceRelationDefine.getSourceId());
+ final IDManager.ServiceID.ServiceIDDefinition destIdDefinition = IDManager.ServiceID.analysisId(
+ serviceRelationDefine.getDestId());
+ ServiceRelationMetaInAlarm serviceRelationMetaInAlarm = new ServiceRelationMetaInAlarm();
+ serviceRelationMetaInAlarm.setMetricsName(meta.getMetricsName());
+ serviceRelationMetaInAlarm.setId(serviceRelationId);
+ serviceRelationMetaInAlarm.setName(sourceIdDefinition.getName() + " to " + destIdDefinition.getName());
+ metaInAlarm = serviceRelationMetaInAlarm;
+ } else if (DefaultScopeDefine.inServiceInstanceRelationCatalog(scope)) {
+ final String instanceRelationId = meta.getId();
+ final IDManager.ServiceInstanceID.ServiceInstanceRelationDefine serviceRelationDefine = IDManager.ServiceInstanceID.analysisRelationId(
+ instanceRelationId);
+
+ final IDManager.ServiceInstanceID.InstanceIDDefinition sourceIdDefinition = IDManager.ServiceInstanceID.analysisId(
+ serviceRelationDefine.getSourceId());
+ final IDManager.ServiceID.ServiceIDDefinition sourceServiceId = IDManager.ServiceID.analysisId(
+ sourceIdDefinition.getServiceId());
+ final IDManager.ServiceInstanceID.InstanceIDDefinition destIdDefinition = IDManager.ServiceInstanceID.analysisId(
+ serviceRelationDefine.getDestId());
+ final IDManager.ServiceID.ServiceIDDefinition destServiceId = IDManager.ServiceID.analysisId(
+ destIdDefinition.getServiceId());
+
+ ServiceInstanceRelationMetaInAlarm instanceRelationMetaInAlarm = new ServiceInstanceRelationMetaInAlarm();
+ instanceRelationMetaInAlarm.setMetricsName(meta.getMetricsName());
+ instanceRelationMetaInAlarm.setId(instanceRelationId);
+ instanceRelationMetaInAlarm.setName(sourceIdDefinition.getName() + " of " + sourceServiceId.getName()
+ + " to " + destIdDefinition.getName() + " of " + destServiceId.getName());
+ metaInAlarm = instanceRelationMetaInAlarm;
+ } else if (DefaultScopeDefine.inEndpointRelationCatalog(scope)) {
+ final String endpointRelationId = meta.getId();
+ final IDManager.EndpointID.EndpointRelationDefine endpointRelationDefine = IDManager.EndpointID.analysisRelationId(
+ endpointRelationId);
+ final IDManager.ServiceID.ServiceIDDefinition sourceService = IDManager.ServiceID.analysisId(
+ endpointRelationDefine.getSourceServiceId());
+ final IDManager.ServiceID.ServiceIDDefinition destService = IDManager.ServiceID.analysisId(
+ endpointRelationDefine.getDestServiceId());
+
+ EndpointRelationMetaInAlarm endpointRelationMetaInAlarm = new EndpointRelationMetaInAlarm();
+ endpointRelationMetaInAlarm.setMetricsName(meta.getMetricsName());
+ endpointRelationMetaInAlarm.setId(endpointRelationId);
+ endpointRelationMetaInAlarm.setName(endpointRelationDefine.getSource() + " in " + sourceService.getName()
+ + " to " + endpointRelationDefine.getDest() + " in " + destService.getName());
+ metaInAlarm = endpointRelationMetaInAlarm;
} else {
return;
}
diff --git a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/Rules.java b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/Rules.java
index 4e2560c..87dd507 100644
--- a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/Rules.java
+++ b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/Rules.java
@@ -20,14 +20,13 @@ package org.apache.skywalking.oap.server.core.alarm.provider;
import java.util.ArrayList;
import java.util.List;
-import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.apache.skywalking.oap.server.core.alarm.provider.grpc.GRPCAlarmSetting;
-@Setter(AccessLevel.PUBLIC)
-@Getter(AccessLevel.PUBLIC)
+@Setter
+@Getter
@ToString
public class Rules {
private List<AlarmRule> rules;
diff --git a/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandlerTest.java b/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandlerTest.java
index ba1d3c8..61c9669 100644
--- a/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandlerTest.java
+++ b/oap-server/server-alarm-plugin/src/test/java/org/apache/skywalking/oap/server/core/alarm/provider/NotifyHandlerTest.java
@@ -21,6 +21,9 @@ package org.apache.skywalking.oap.server.core.alarm.provider;
import com.google.common.collect.Lists;
import org.apache.skywalking.oap.server.core.CoreModule;
import org.apache.skywalking.oap.server.core.alarm.AlarmMessage;
+import org.apache.skywalking.oap.server.core.alarm.EndpointRelationMetaInAlarm;
+import org.apache.skywalking.oap.server.core.alarm.ServiceInstanceRelationMetaInAlarm;
+import org.apache.skywalking.oap.server.core.alarm.ServiceRelationMetaInAlarm;
import org.apache.skywalking.oap.server.core.alarm.EndpointMetaInAlarm;
import org.apache.skywalking.oap.server.core.alarm.MetaInAlarm;
import org.apache.skywalking.oap.server.core.alarm.ServiceInstanceMetaInAlarm;
@@ -163,6 +166,93 @@ public class NotifyHandlerTest {
assertEquals(DefaultScopeDefine.SERVICE, metaInAlarm.getScopeId());
}
+ @Test
+ public void testNotifyWithServiceRelationCatalog() {
+ prepareNotify();
+
+ String metricsName = "service-relation-metrics";
+ when(metadata.getMetricsName()).thenReturn(metricsName);
+ when(DefaultScopeDefine.inServiceRelationCatalog(0)).thenReturn(true);
+ final String serviceRelationId = IDManager.ServiceID.buildRelationId(new IDManager.ServiceID.ServiceRelationDefine(
+ IDManager.ServiceID.buildId("from-service", true),
+ IDManager.ServiceID.buildId("dest-service", true)
+ ));
+ when(metadata.getId()).thenReturn(serviceRelationId);
+
+ ArgumentCaptor<MetaInAlarm> metaCaptor = ArgumentCaptor.forClass(MetaInAlarm.class);
+
+ notifyHandler.notify(metrics);
+ verify(rule).in(metaCaptor.capture(), any());
+
+ MetaInAlarm metaInAlarm = metaCaptor.getValue();
+
+ assertTrue(metaInAlarm instanceof ServiceRelationMetaInAlarm);
+ assertEquals(metricsName, metaInAlarm.getMetricsName());
+ assertEquals("ZnJvbS1zZXJ2aWNl.1", metaInAlarm.getId0());
+ assertEquals("ZGVzdC1zZXJ2aWNl.1", metaInAlarm.getId1());
+ assertEquals(DefaultScopeDefine.SERVICE_RELATION_CATALOG_NAME, metaInAlarm.getScope());
+ assertEquals("from-service to dest-service", metaInAlarm.getName());
+ assertEquals(DefaultScopeDefine.SERVICE_RELATION, metaInAlarm.getScopeId());
+ }
+
+ @Test
+ public void testNotifyWithServiceInstanceRelationCatalog() {
+ prepareNotify();
+
+ String metricsName = "service-instance-relation-metrics";
+ when(metadata.getMetricsName()).thenReturn(metricsName);
+ when(DefaultScopeDefine.inServiceInstanceRelationCatalog(0)).thenReturn(true);
+ final String serviceInstanceRelationId = IDManager.ServiceInstanceID.buildRelationId(new IDManager.ServiceInstanceID.ServiceInstanceRelationDefine(
+ IDManager.ServiceInstanceID.buildId(IDManager.ServiceID.buildId("from-service", true), "from-service-instance"),
+ IDManager.ServiceInstanceID.buildId(IDManager.ServiceID.buildId("dest-service", true), "dest-service-instance")
+ ));
+ when(metadata.getId()).thenReturn(serviceInstanceRelationId);
+
+ ArgumentCaptor<MetaInAlarm> metaCaptor = ArgumentCaptor.forClass(MetaInAlarm.class);
+
+ notifyHandler.notify(metrics);
+ verify(rule).in(metaCaptor.capture(), any());
+
+ MetaInAlarm metaInAlarm = metaCaptor.getValue();
+
+ assertTrue(metaInAlarm instanceof ServiceInstanceRelationMetaInAlarm);
+ assertEquals(metricsName, metaInAlarm.getMetricsName());
+ assertEquals("ZnJvbS1zZXJ2aWNl.1_ZnJvbS1zZXJ2aWNlLWluc3RhbmNl", metaInAlarm.getId0());
+ assertEquals("ZGVzdC1zZXJ2aWNl.1_ZGVzdC1zZXJ2aWNlLWluc3RhbmNl", metaInAlarm.getId1());
+ assertEquals(DefaultScopeDefine.SERVICE_INSTANCE_RELATION_CATALOG_NAME, metaInAlarm.getScope());
+ assertEquals("from-service-instance of from-service to dest-service-instance of dest-service", metaInAlarm.getName());
+ assertEquals(DefaultScopeDefine.SERVICE_INSTANCE_RELATION, metaInAlarm.getScopeId());
+ }
+
+ @Test
+ public void testNotifyWithEndpointRelationCatalog() {
+ prepareNotify();
+
+ String metricsName = "endpoint-relation-metrics";
+ when(metadata.getMetricsName()).thenReturn(metricsName);
+ when(DefaultScopeDefine.inEndpointRelationCatalog(0)).thenReturn(true);
+ final String serviceInstanceRelationId = IDManager.EndpointID.buildRelationId(new IDManager.EndpointID.EndpointRelationDefine(
+ IDManager.ServiceID.buildId("from-service", true), "/source-path",
+ IDManager.ServiceID.buildId("dest-service", true), "/dest-path"
+ ));
+ when(metadata.getId()).thenReturn(serviceInstanceRelationId);
+
+ ArgumentCaptor<MetaInAlarm> metaCaptor = ArgumentCaptor.forClass(MetaInAlarm.class);
+
+ notifyHandler.notify(metrics);
+ verify(rule).in(metaCaptor.capture(), any());
+
+ MetaInAlarm metaInAlarm = metaCaptor.getValue();
+
+ assertTrue(metaInAlarm instanceof EndpointRelationMetaInAlarm);
+ assertEquals(metricsName, metaInAlarm.getMetricsName());
+ assertEquals("ZnJvbS1zZXJ2aWNl.1_L3NvdXJjZS1wYXRo", metaInAlarm.getId0());
+ assertEquals("ZGVzdC1zZXJ2aWNl.1_L2Rlc3QtcGF0aA==", metaInAlarm.getId1());
+ assertEquals(DefaultScopeDefine.ENDPOINT_RELATION_CATALOG_NAME, metaInAlarm.getScope());
+ assertEquals("/source-path in from-service to /dest-path in dest-service", metaInAlarm.getName());
+ assertEquals(DefaultScopeDefine.ENDPOINT_RELATION, metaInAlarm.getScopeId());
+ }
+
private void prepareNotify() {
metadata = mock(MetricsMetaInfo.class);
when(metadata.getScope()).thenReturn(DefaultScopeDefine.ALL);
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 e47503a..401e023 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
@@ -18,15 +18,14 @@
package org.apache.skywalking.oap.server.core.alarm;
-import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
/**
* Alarm message represents the details of each alarm.
*/
-@Setter(AccessLevel.PUBLIC)
-@Getter(AccessLevel.PUBLIC)
+@Setter
+@Getter
public class AlarmMessage {
public static AlarmMessage NONE = new NoAlarm();
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/EndpointMetaInAlarm.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/EndpointMetaInAlarm.java
index cccd674..299c07f 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/EndpointMetaInAlarm.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/EndpointMetaInAlarm.java
@@ -18,21 +18,18 @@
package org.apache.skywalking.oap.server.core.alarm;
-import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
-@Getter(AccessLevel.PUBLIC)
-@Setter(AccessLevel.PUBLIC)
+@Getter
+@Setter
public class EndpointMetaInAlarm extends MetaInAlarm {
private String metricsName;
private String id;
private String name;
- private String[] tags;
- private String[] properties;
@Override
public String getScope() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceMetaInAlarm.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/EndpointRelationMetaInAlarm.java
similarity index 61%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceMetaInAlarm.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/EndpointRelationMetaInAlarm.java
index e78d441..c4be140 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceMetaInAlarm.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/EndpointRelationMetaInAlarm.java
@@ -18,39 +18,42 @@
package org.apache.skywalking.oap.server.core.alarm;
-import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
-import org.apache.skywalking.oap.server.core.Const;
+import org.apache.skywalking.oap.server.core.analysis.IDManager;
import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
-@Getter(AccessLevel.PUBLIC)
-@Setter(AccessLevel.PUBLIC)
-public class ServiceInstanceMetaInAlarm extends MetaInAlarm {
+@Getter
+@Setter
+public class EndpointRelationMetaInAlarm extends MetaInAlarm {
private String metricsName;
private String id;
private String name;
- private String[] tags;
- private String[] properties;
@Override
public String getScope() {
- return DefaultScopeDefine.SERVICE_INSTANCE_CATALOG_NAME;
+ return DefaultScopeDefine.ENDPOINT_RELATION_CATALOG_NAME;
}
@Override
public int getScopeId() {
- return DefaultScopeDefine.SERVICE_INSTANCE;
+ return DefaultScopeDefine.ENDPOINT_RELATION;
}
@Override
public String getId0() {
- return id;
+ final IDManager.EndpointID.EndpointRelationDefine endpointRelationDefine =
+ IDManager.EndpointID.analysisRelationId(id);
+
+ return IDManager.EndpointID.buildId(endpointRelationDefine.getSourceServiceId(), endpointRelationDefine.getSource());
}
@Override
public String getId1() {
- return Const.EMPTY_STRING;
+ final IDManager.EndpointID.EndpointRelationDefine endpointRelationDefine =
+ IDManager.EndpointID.analysisRelationId(id);
+
+ return IDManager.EndpointID.buildId(endpointRelationDefine.getDestServiceId(), endpointRelationDefine.getDest());
}
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceMetaInAlarm.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceMetaInAlarm.java
index e78d441..0ec8940 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceMetaInAlarm.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceMetaInAlarm.java
@@ -18,21 +18,18 @@
package org.apache.skywalking.oap.server.core.alarm;
-import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
-@Getter(AccessLevel.PUBLIC)
-@Setter(AccessLevel.PUBLIC)
+@Getter
+@Setter
public class ServiceInstanceMetaInAlarm extends MetaInAlarm {
private String metricsName;
private String id;
private String name;
- private String[] tags;
- private String[] properties;
@Override
public String getScope() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceMetaInAlarm.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceRelationMetaInAlarm.java
similarity index 63%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceMetaInAlarm.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceRelationMetaInAlarm.java
index e78d441..e3b1d73 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceMetaInAlarm.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceRelationMetaInAlarm.java
@@ -18,39 +18,42 @@
package org.apache.skywalking.oap.server.core.alarm;
-import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
-import org.apache.skywalking.oap.server.core.Const;
+import org.apache.skywalking.oap.server.core.analysis.IDManager;
import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
-@Getter(AccessLevel.PUBLIC)
-@Setter(AccessLevel.PUBLIC)
-public class ServiceInstanceMetaInAlarm extends MetaInAlarm {
+@Getter
+@Setter
+public class ServiceInstanceRelationMetaInAlarm extends MetaInAlarm {
private String metricsName;
private String id;
private String name;
- private String[] tags;
- private String[] properties;
@Override
public String getScope() {
- return DefaultScopeDefine.SERVICE_INSTANCE_CATALOG_NAME;
+ return DefaultScopeDefine.SERVICE_INSTANCE_RELATION_CATALOG_NAME;
}
@Override
public int getScopeId() {
- return DefaultScopeDefine.SERVICE_INSTANCE;
+ return DefaultScopeDefine.SERVICE_INSTANCE_RELATION;
}
@Override
public String getId0() {
- return id;
+ final IDManager.ServiceInstanceID.ServiceInstanceRelationDefine instanceRelationDefine =
+ IDManager.ServiceInstanceID.analysisRelationId(id);
+
+ return instanceRelationDefine.getSourceId();
}
@Override
public String getId1() {
- return Const.EMPTY_STRING;
+ final IDManager.ServiceInstanceID.ServiceInstanceRelationDefine instanceRelationDefine =
+ IDManager.ServiceInstanceID.analysisRelationId(id);
+
+ return instanceRelationDefine.getDestId();
}
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceMetaInAlarm.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceMetaInAlarm.java
index c5698a0..42fc900 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceMetaInAlarm.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceMetaInAlarm.java
@@ -18,21 +18,18 @@
package org.apache.skywalking.oap.server.core.alarm;
-import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import org.apache.skywalking.oap.server.core.Const;
import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
-@Getter(AccessLevel.PUBLIC)
-@Setter(AccessLevel.PUBLIC)
+@Getter
+@Setter
public class ServiceMetaInAlarm extends MetaInAlarm {
private String metricsName;
private String id;
private String name;
- private String[] tags;
- private String[] properties;
@Override
public String getScope() {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceMetaInAlarm.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceRelationMetaInAlarm.java
similarity index 68%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceMetaInAlarm.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceRelationMetaInAlarm.java
index e78d441..ce76355 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceInstanceMetaInAlarm.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/ServiceRelationMetaInAlarm.java
@@ -18,39 +18,38 @@
package org.apache.skywalking.oap.server.core.alarm;
-import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
-import org.apache.skywalking.oap.server.core.Const;
+import org.apache.skywalking.oap.server.core.analysis.IDManager;
import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
-@Getter(AccessLevel.PUBLIC)
-@Setter(AccessLevel.PUBLIC)
-public class ServiceInstanceMetaInAlarm extends MetaInAlarm {
+@Getter
+@Setter
+public class ServiceRelationMetaInAlarm extends MetaInAlarm {
private String metricsName;
private String id;
private String name;
- private String[] tags;
- private String[] properties;
@Override
public String getScope() {
- return DefaultScopeDefine.SERVICE_INSTANCE_CATALOG_NAME;
+ return DefaultScopeDefine.SERVICE_RELATION_CATALOG_NAME;
}
@Override
public int getScopeId() {
- return DefaultScopeDefine.SERVICE_INSTANCE;
+ return DefaultScopeDefine.SERVICE_RELATION;
}
@Override
public String getId0() {
- return id;
+ final IDManager.ServiceID.ServiceRelationDefine relationDefine = IDManager.ServiceID.analysisRelationId(id);
+ return relationDefine.getSourceId();
}
@Override
public String getId1() {
- return Const.EMPTY_STRING;
+ final IDManager.ServiceID.ServiceRelationDefine relationDefine = IDManager.ServiceID.analysisRelationId(id);
+ return relationDefine.getDestId();
}
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DatabaseAccess.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DatabaseAccess.java
index 5fd2d87..38b09c2 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DatabaseAccess.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DatabaseAccess.java
@@ -24,8 +24,9 @@ import org.apache.skywalking.oap.server.core.analysis.IDManager;
import org.apache.skywalking.oap.server.core.analysis.NodeType;
import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.DATABASE_ACCESS;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_CATALOG_NAME;
-@ScopeDeclaration(id = DATABASE_ACCESS, name = "DatabaseAccess")
+@ScopeDeclaration(id = DATABASE_ACCESS, name = "DatabaseAccess", catalog = SERVICE_CATALOG_NAME)
@ScopeDefaultColumn.VirtualColumnDefinition(fieldName = "entityId", columnName = "entity_id", isID = true, type = String.class)
public class DatabaseAccess extends Source {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
index b18061f..499d51f 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/DefaultScopeDefine.java
@@ -73,10 +73,16 @@ public class DefaultScopeDefine {
public static final String SERVICE_CATALOG_NAME = "SERVICE";
public static final String SERVICE_INSTANCE_CATALOG_NAME = "SERVICE_INSTANCE";
public static final String ENDPOINT_CATALOG_NAME = "ENDPOINT";
+ public static final String SERVICE_RELATION_CATALOG_NAME = "SERVICE_RELATION";
+ public static final String SERVICE_INSTANCE_RELATION_CATALOG_NAME = "SERVICE_INSTANCE_RELATION";
+ public static final String ENDPOINT_RELATION_CATALOG_NAME = "ENDPOINT_RELATION";
private static final Map<Integer, Boolean> SERVICE_CATALOG = new HashMap<>();
private static final Map<Integer, Boolean> SERVICE_INSTANCE_CATALOG = new HashMap<>();
private static final Map<Integer, Boolean> ENDPOINT_CATALOG = new HashMap<>();
+ private static final Map<Integer, Boolean> SERVICE_RELATION_CATALOG = new HashMap<>();
+ private static final Map<Integer, Boolean> SERVICE_INSTANCE_RELATION_CATALOG = new HashMap<>();
+ private static final Map<Integer, Boolean> ENDPOINT_RELATION_CATALOG = new HashMap<>();
@Setter
private static boolean ACTIVE_EXTRA_MODEL_COLUMNS = false;
@@ -169,6 +175,15 @@ public class DefaultScopeDefine {
case ENDPOINT_CATALOG_NAME:
ENDPOINT_CATALOG.put(id, Boolean.TRUE);
break;
+ case SERVICE_RELATION_CATALOG_NAME:
+ SERVICE_RELATION_CATALOG.put(id, Boolean.TRUE);
+ break;
+ case SERVICE_INSTANCE_RELATION_CATALOG_NAME:
+ SERVICE_INSTANCE_RELATION_CATALOG.put(id, Boolean.TRUE);
+ break;
+ case ENDPOINT_RELATION_CATALOG_NAME:
+ ENDPOINT_RELATION_CATALOG.put(id, Boolean.TRUE);
+ break;
}
}
@@ -240,6 +255,36 @@ public class DefaultScopeDefine {
}
/**
+ * Check whether current service belongs service relation catalog
+ *
+ * @param scopeId represents an existing scope id.
+ * @return true is current scope set {@link ScopeDeclaration#catalog()} == {@link #SERVICE_RELATION_CATALOG_NAME}
+ */
+ public static boolean inServiceRelationCatalog(int scopeId) {
+ return SERVICE_RELATION_CATALOG.containsKey(scopeId);
+ }
+
+ /**
+ * Check whether current service belongs service instance relation catalog
+ *
+ * @param scopeId represents an existing scope id.
+ * @return true is current scope set {@link ScopeDeclaration#catalog()} == {@link #SERVICE_INSTANCE_RELATION_CATALOG_NAME}
+ */
+ public static boolean inServiceInstanceRelationCatalog(int scopeId) {
+ return SERVICE_INSTANCE_RELATION_CATALOG.containsKey(scopeId);
+ }
+
+ /**
+ * Check whether current service belongs endpoint relation catalog
+ *
+ * @param scopeId represents an existing scope id.
+ * @return true is current scope set {@link ScopeDeclaration#catalog()} == {@link #ENDPOINT_RELATION_CATALOG_NAME}
+ */
+ public static boolean inEndpointRelationCatalog(int scopeId) {
+ return ENDPOINT_RELATION_CATALOG.containsKey(scopeId);
+ }
+
+ /**
* Get the default columns defined in Scope. All those columns will forward to persistent entity.
*
* @param scopeName of the default columns
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/EndpointRelation.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/EndpointRelation.java
index 801b473..09bb693 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/EndpointRelation.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/EndpointRelation.java
@@ -24,8 +24,9 @@ import org.apache.skywalking.oap.server.core.analysis.IDManager;
import org.apache.skywalking.oap.server.core.analysis.NodeType;
import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.ENDPOINT_RELATION;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.ENDPOINT_RELATION_CATALOG_NAME;
-@ScopeDeclaration(id = ENDPOINT_RELATION, name = "EndpointRelation")
+@ScopeDeclaration(id = ENDPOINT_RELATION, name = "EndpointRelation", catalog = ENDPOINT_RELATION_CATALOG_NAME)
@ScopeDefaultColumn.VirtualColumnDefinition(fieldName = "entityId", columnName = "entity_id", isID = true, type = String.class)
public class EndpointRelation extends Source {
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ScopeDefaultColumn.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ScopeDefaultColumn.java
index 67585ca..f2f9633 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ScopeDefaultColumn.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ScopeDefaultColumn.java
@@ -22,14 +22,13 @@ import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
-import lombok.AccessLevel;
import lombok.Getter;
/**
* Define the default columns of source scope. These columns pass down into the persistent entity(OAL metrics entity)
* automatically.
*/
-@Getter(AccessLevel.PUBLIC)
+@Getter
public class ScopeDefaultColumn {
private String fieldName;
private String columnName;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceRelation.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceRelation.java
index 83e2975..78ae627 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceRelation.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceRelation.java
@@ -25,8 +25,9 @@ import org.apache.skywalking.oap.server.core.analysis.IDManager;
import org.apache.skywalking.oap.server.core.analysis.NodeType;
import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_RELATION;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_RELATION_CATALOG_NAME;
-@ScopeDeclaration(id = SERVICE_INSTANCE_RELATION, name = "ServiceInstanceRelation")
+@ScopeDeclaration(id = SERVICE_INSTANCE_RELATION, name = "ServiceInstanceRelation", catalog = SERVICE_INSTANCE_RELATION_CATALOG_NAME)
@ScopeDefaultColumn.VirtualColumnDefinition(fieldName = "entityId", columnName = "entity_id", isID = true, type = String.class)
public class ServiceInstanceRelation extends Source {
private String entityId;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceRelation.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceRelation.java
index 40ef19a..4fb40aa 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceRelation.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceRelation.java
@@ -25,8 +25,9 @@ import org.apache.skywalking.oap.server.core.analysis.IDManager;
import org.apache.skywalking.oap.server.core.analysis.NodeType;
import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_RELATION;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_RELATION_CATALOG_NAME;
-@ScopeDeclaration(id = SERVICE_RELATION, name = "ServiceRelation")
+@ScopeDeclaration(id = SERVICE_RELATION, name = "ServiceRelation", catalog = SERVICE_RELATION_CATALOG_NAME)
@ScopeDefaultColumn.VirtualColumnDefinition(fieldName = "entityId", columnName = "entity_id", isID = true, type = String.class)
public class ServiceRelation extends Source {
private String entityId;
diff --git a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryConfig.java b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryConfig.java
index dddfe80..8f89e6b 100644
--- a/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryConfig.java
+++ b/oap-server/server-query-plugin/query-graphql-plugin/src/main/java/org/apache/skywalking/oap/query/graphql/GraphQLQueryConfig.java
@@ -27,7 +27,7 @@ import org.apache.skywalking.oap.server.library.module.ModuleConfig;
* The config of {@code query.graphql}.
*/
@Getter(AccessLevel.PACKAGE)
-@Setter(AccessLevel.PUBLIC)
+@Setter
public class GraphQLQueryConfig extends ModuleConfig {
private String path;
}