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 2019/03/21 00:49:00 UTC

[incubator-skywalking] 01/01: Add catalog to ScopeDeclaration annotation. Make the alarm adapt to it. Now more metric could go through alarm, such as JVM, CLR.

This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch exporter-impl
in repository https://gitbox.apache.org/repos/asf/incubator-skywalking.git

commit 1ac19eba0da4358e3d5269480e06135052e6638b
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Wed Mar 20 17:48:46 2019 -0700

    Add catalog to ScopeDeclaration annotation. Make the alarm adapt to it. Now more metric could go through alarm, such as JVM, CLR.
---
 .../core/alarm/provider/AlarmModuleProvider.java   |  6 +-
 .../server/core/alarm/provider/NotifyHandler.java  | 82 +++++++++++++++++-----
 .../oap/server/core/alarm/AlarmEntrance.java       | 70 ++----------------
 .../oap/server/core/alarm/IndicatorNotify.java     |  2 +-
 .../oap/server/core/source/DefaultScopeDefine.java | 36 ++++++++++
 .../oap/server/core/source/Endpoint.java           |  3 +-
 .../server/core/source/EnvoyInstanceMetric.java    |  3 +-
 .../oap/server/core/source/ScopeDeclaration.java   |  1 +
 .../skywalking/oap/server/core/source/Service.java |  4 +-
 .../oap/server/core/source/ServiceInstance.java    |  3 +-
 .../server/core/source/ServiceInstanceCLRCPU.java  |  3 +-
 .../server/core/source/ServiceInstanceCLRGC.java   |  3 +-
 .../core/source/ServiceInstanceCLRThread.java      |  3 +-
 .../server/core/source/ServiceInstanceJVMCPU.java  |  3 +-
 .../server/core/source/ServiceInstanceJVMGC.java   |  3 +-
 .../core/source/ServiceInstanceJVMMemory.java      |  3 +-
 .../core/source/ServiceInstanceJVMMemoryPool.java  |  3 +-
 17 files changed, 131 insertions(+), 100 deletions(-)

diff --git a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/AlarmModuleProvider.java b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/AlarmModuleProvider.java
index f536caa..87fd321 100644
--- a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/AlarmModuleProvider.java
+++ b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/AlarmModuleProvider.java
@@ -25,6 +25,8 @@ import org.apache.skywalking.oap.server.library.module.*;
 import org.apache.skywalking.oap.server.library.util.ResourceUtils;
 
 public class AlarmModuleProvider extends ModuleProvider {
+    private NotifyHandler notifyHandler;
+
     @Override public String name() {
         return "default";
     }
@@ -46,7 +48,7 @@ public class AlarmModuleProvider extends ModuleProvider {
         }
         RulesReader reader = new RulesReader(applicationReader);
         Rules rules = reader.readRules();
-        NotifyHandler notifyHandler = new NotifyHandler(rules);
+        notifyHandler = new NotifyHandler(rules);
         notifyHandler.init(new AlarmStandardPersistence());
         this.registerServiceImplementation(IndicatorNotify.class, notifyHandler);
     }
@@ -55,7 +57,7 @@ public class AlarmModuleProvider extends ModuleProvider {
     }
 
     @Override public void notifyAfterCompleted() throws ServiceNotProvidedException, ModuleStartException {
-
+        notifyHandler.initCache(getManager());
     }
 
     @Override public String[] requiredModules() {
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 5aa6494..10a4a02 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
@@ -18,16 +18,20 @@
 
 package org.apache.skywalking.oap.server.core.alarm.provider;
 
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.skywalking.oap.server.core.alarm.AlarmCallback;
-import org.apache.skywalking.oap.server.core.alarm.IndicatorNotify;
-import org.apache.skywalking.oap.server.core.alarm.MetaInAlarm;
-import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
-
-import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.*;
+import java.util.*;
+import org.apache.skywalking.oap.server.core.CoreModule;
+import org.apache.skywalking.oap.server.core.alarm.*;
+import org.apache.skywalking.oap.server.core.analysis.indicator.*;
+import org.apache.skywalking.oap.server.core.cache.*;
+import org.apache.skywalking.oap.server.core.register.*;
+import org.apache.skywalking.oap.server.core.source.DefaultScopeDefine;
+import org.apache.skywalking.oap.server.library.module.ModuleManager;
 
 public class NotifyHandler implements IndicatorNotify {
+    private ServiceInventoryCache serviceInventoryCache;
+    private ServiceInstanceInventoryCache serviceInstanceInventoryCache;
+    private EndpointInventoryCache endpointInventoryCache;
+
     private final AlarmCore core;
     private final Rules rules;
 
@@ -36,23 +40,58 @@ public class NotifyHandler implements IndicatorNotify {
         core = new AlarmCore(rules);
     }
 
-    @Override public void notify(MetaInAlarm meta, Indicator indicator) {
-        switch (meta.getScopeId()) {
-            case SERVICE:
-                break;
-            case SERVICE_INSTANCE:
-                break;
-            case ENDPOINT:
-                break;
-            default:
-                return;
+    @Override public void notify(Indicator indicator) {
+        WithMetadata withMetadata = (WithMetadata)indicator;
+        IndicatorMetaInfo meta = withMetadata.getMeta();
+        int scope = meta.getScope();
+
+        if (!DefaultScopeDefine.inServiceCatalog(scope)
+            && !DefaultScopeDefine.inServiceInstanceCatalog(scope)
+            && !DefaultScopeDefine.inEndpointCatalog(scope)) {
+            return;
+        }
+
+        MetaInAlarm metaInAlarm;
+        if (DefaultScopeDefine.inServiceCatalog(scope)) {
+            int serviceId = Integer.parseInt(meta.getId());
+            ServiceInventory serviceInventory = serviceInventoryCache.get(serviceId);
+            ServiceMetaInAlarm serviceMetaInAlarm = new ServiceMetaInAlarm();
+            serviceMetaInAlarm.setIndicatorName(meta.getIndicatorName());
+            serviceMetaInAlarm.setId(serviceId);
+            serviceMetaInAlarm.setName(serviceInventory.getName());
+            metaInAlarm = serviceMetaInAlarm;
+        } else if (DefaultScopeDefine.inServiceInstanceCatalog(scope)) {
+            int serviceInstanceId = Integer.parseInt(meta.getId());
+            ServiceInstanceInventory serviceInstanceInventory = serviceInstanceInventoryCache.get(serviceInstanceId);
+            ServiceInstanceMetaInAlarm instanceMetaInAlarm = new ServiceInstanceMetaInAlarm();
+            instanceMetaInAlarm.setIndicatorName(meta.getIndicatorName());
+            instanceMetaInAlarm.setId(serviceInstanceId);
+            instanceMetaInAlarm.setName(serviceInstanceInventory.getName());
+            metaInAlarm = instanceMetaInAlarm;
+        } else if (DefaultScopeDefine.inEndpointCatalog(scope)) {
+            int endpointId = Integer.parseInt(meta.getId());
+            EndpointInventory endpointInventory = endpointInventoryCache.get(endpointId);
+            EndpointMetaInAlarm endpointMetaInAlarm = new EndpointMetaInAlarm();
+            endpointMetaInAlarm.setIndicatorName(meta.getIndicatorName());
+            endpointMetaInAlarm.setId(endpointId);
+
+            int serviceId = endpointInventory.getServiceId();
+            ServiceInventory serviceInventory = serviceInventoryCache.get(serviceId);
+
+            String textName = endpointInventory.getName() + " in " + serviceInventory.getName();
+
+            endpointMetaInAlarm.setName(textName);
+            metaInAlarm = endpointMetaInAlarm;
+        } else {
+            return;
         }
+
         List<RunningRule> runningRules = core.findRunningRule(meta.getIndicatorName());
         if (runningRules == null) {
             return;
         }
 
-        runningRules.forEach(rule -> rule.in(meta, indicator));
+        runningRules.forEach(rule -> rule.in(metaInAlarm, indicator));
     }
 
     public void init(AlarmCallback... callbacks) {
@@ -64,4 +103,9 @@ public class NotifyHandler implements IndicatorNotify {
         core.start(allCallbacks);
     }
 
+    public void initCache(ModuleManager moduleManager) {
+        serviceInventoryCache = moduleManager.find(CoreModule.NAME).provider().getService(ServiceInventoryCache.class);
+        serviceInstanceInventoryCache = moduleManager.find(CoreModule.NAME).provider().getService(ServiceInstanceInventoryCache.class);
+        endpointInventoryCache = moduleManager.find(CoreModule.NAME).provider().getService(EndpointInventoryCache.class);
+    }
 }
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmEntrance.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmEntrance.java
index 7037a4a..219753a 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmEntrance.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmEntrance.java
@@ -18,29 +18,18 @@
 
 package org.apache.skywalking.oap.server.core.alarm;
 
-import java.util.concurrent.locks.ReentrantLock;
-import org.apache.skywalking.oap.server.core.CoreModule;
-import org.apache.skywalking.oap.server.core.analysis.indicator.*;
-import org.apache.skywalking.oap.server.core.cache.*;
-import org.apache.skywalking.oap.server.core.register.*;
+import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
 import org.apache.skywalking.oap.server.library.module.ModuleManager;
 
-import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.*;
-
 /**
  * @author wusheng
  */
 public class AlarmEntrance {
     private ModuleManager moduleManager;
-    private ServiceInventoryCache serviceInventoryCache;
-    private ServiceInstanceInventoryCache serviceInstanceInventoryCache;
-    private EndpointInventoryCache endpointInventoryCache;
     private IndicatorNotify indicatorNotify;
-    private ReentrantLock initLock;
 
     public AlarmEntrance(ModuleManager moduleManager) {
         this.moduleManager = moduleManager;
-        this.initLock = new ReentrantLock();
     }
 
     public void forward(Indicator indicator) {
@@ -50,63 +39,12 @@ public class AlarmEntrance {
 
         init();
 
-        IndicatorMetaInfo indicatorMetaInfo = ((WithMetadata)indicator).getMeta();
-
-        MetaInAlarm metaInAlarm;
-        switch (indicatorMetaInfo.getScope()) {
-            case SERVICE:
-                int serviceId = Integer.parseInt(indicatorMetaInfo.getId());
-                ServiceInventory serviceInventory = serviceInventoryCache.get(serviceId);
-                ServiceMetaInAlarm serviceMetaInAlarm = new ServiceMetaInAlarm();
-                serviceMetaInAlarm.setIndicatorName(indicatorMetaInfo.getIndicatorName());
-                serviceMetaInAlarm.setId(serviceId);
-                serviceMetaInAlarm.setName(serviceInventory.getName());
-                metaInAlarm = serviceMetaInAlarm;
-                break;
-            case SERVICE_INSTANCE:
-                int serviceInstanceId = Integer.parseInt(indicatorMetaInfo.getId());
-                ServiceInstanceInventory serviceInstanceInventory = serviceInstanceInventoryCache.get(serviceInstanceId);
-                ServiceInstanceMetaInAlarm instanceMetaInAlarm = new ServiceInstanceMetaInAlarm();
-                instanceMetaInAlarm.setIndicatorName(indicatorMetaInfo.getIndicatorName());
-                instanceMetaInAlarm.setId(serviceInstanceId);
-                instanceMetaInAlarm.setName(serviceInstanceInventory.getName());
-                metaInAlarm = instanceMetaInAlarm;
-                break;
-            case ENDPOINT:
-                int endpointId = Integer.parseInt(indicatorMetaInfo.getId());
-                EndpointInventory endpointInventory = endpointInventoryCache.get(endpointId);
-                EndpointMetaInAlarm endpointMetaInAlarm = new EndpointMetaInAlarm();
-                endpointMetaInAlarm.setIndicatorName(indicatorMetaInfo.getIndicatorName());
-                endpointMetaInAlarm.setId(endpointId);
-
-                serviceId = endpointInventory.getServiceId();
-                serviceInventory = serviceInventoryCache.get(serviceId);
-
-                String textName = endpointInventory.getName() + " in " + serviceInventory.getName();
-
-                endpointMetaInAlarm.setName(textName);
-                metaInAlarm = endpointMetaInAlarm;
-                break;
-            default:
-                return;
-        }
-
-        indicatorNotify.notify(metaInAlarm, indicator);
+        indicatorNotify.notify(indicator);
     }
 
     private void init() {
-        if (serviceInventoryCache == null) {
-            initLock.lock();
-            try {
-                if (serviceInventoryCache == null) {
-                    serviceInventoryCache = moduleManager.find(CoreModule.NAME).provider().getService(ServiceInventoryCache.class);
-                    serviceInstanceInventoryCache = moduleManager.find(CoreModule.NAME).provider().getService(ServiceInstanceInventoryCache.class);
-                    endpointInventoryCache = moduleManager.find(CoreModule.NAME).provider().getService(EndpointInventoryCache.class);
-                    indicatorNotify = moduleManager.find(AlarmModule.NAME).provider().getService(IndicatorNotify.class);
-                }
-            } finally {
-                initLock.unlock();
-            }
+        if (indicatorNotify == null) {
+            indicatorNotify = moduleManager.find(AlarmModule.NAME).provider().getService(IndicatorNotify.class);
         }
     }
 }
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/IndicatorNotify.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/IndicatorNotify.java
index 4d05622..59bb037 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/IndicatorNotify.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/IndicatorNotify.java
@@ -32,5 +32,5 @@ import org.apache.skywalking.oap.server.library.module.Service;
  * @author wusheng
  */
 public interface IndicatorNotify extends Service {
-    void notify(MetaInAlarm indicatorName, Indicator indicator);
+    void notify(Indicator indicator);
 }
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 a507597..78b3565 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
@@ -60,6 +60,17 @@ public class DefaultScopeDefine {
     public static final int SERVICE_INSTANCE_CLR_THREAD = 21;
     public static final int ENVOY_INSTANCE_METRIC = 22;
 
+    /**
+     * Catalog of scope, the indicator processor could use this to group all generated indicators by oal tool.
+     */
+    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";
+
+    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<>();
+
     public static class Listener implements AnnotationListener {
         @Override public Class<? extends Annotation> annotation() {
             return ScopeDeclaration.class;
@@ -84,6 +95,19 @@ public class DefaultScopeDefine {
         }
         ID_2_NAME.put(id, name);
         NAME_2_ID.put(name, id);
+
+        String catalogName = declaration.catalog();
+        switch (catalogName) {
+            case SERVICE_CATALOG_NAME:
+                SERVICE_CATALOG.put(id, Boolean.TRUE);
+                break;
+            case SERVICE_INSTANCE_CATALOG_NAME:
+                SERVICE_INSTANCE_CATALOG.put(id, Boolean.TRUE);
+                break;
+            case ENDPOINT_CATALOG_NAME:
+                ENDPOINT_CATALOG.put(id, Boolean.TRUE);
+                break;
+        }
     }
 
     public static String nameOf(int id) {
@@ -106,4 +130,16 @@ public class DefaultScopeDefine {
         NAME_2_ID.clear();
         ID_2_NAME.clear();
     }
+
+    public static boolean inServiceCatalog(int scopeId) {
+        return SERVICE_CATALOG.containsKey(scopeId);
+    }
+
+    public static boolean inServiceInstanceCatalog(int scopeId) {
+        return SERVICE_INSTANCE_CATALOG.containsKey(scopeId);
+    }
+
+    public static boolean inEndpointCatalog(int scopeId) {
+        return ENDPOINT_CATALOG.containsKey(scopeId);
+    }
 }
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Endpoint.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Endpoint.java
index 7879c79..57b51dd 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Endpoint.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Endpoint.java
@@ -21,11 +21,12 @@ package org.apache.skywalking.oap.server.core.source;
 import lombok.*;
 
 import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.ENDPOINT;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.ENDPOINT_CATALOG_NAME;
 
 /**
  * @author peng-yongsheng
  */
-@ScopeDeclaration(id = ENDPOINT, name = "Endpoint")
+@ScopeDeclaration(id = ENDPOINT, name = "Endpoint", catalog = ENDPOINT_CATALOG_NAME)
 public class Endpoint extends Source {
     @Override public int scope() {
         return DefaultScopeDefine.ENDPOINT;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/EnvoyInstanceMetric.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/EnvoyInstanceMetric.java
index 0a5eafb..3877dbe 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/EnvoyInstanceMetric.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/EnvoyInstanceMetric.java
@@ -21,6 +21,7 @@ package org.apache.skywalking.oap.server.core.source;
 import lombok.*;
 
 import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.ENVOY_INSTANCE_METRIC;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_CATALOG_NAME;
 
 /**
  * The envoy metrics. This group of metrics are in Prometheus metric format family.
@@ -29,7 +30,7 @@ import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.EN
  *
  * @author wusheng
  */
-@ScopeDeclaration(id = ENVOY_INSTANCE_METRIC, name = "EnvoyInstanceMetric")
+@ScopeDeclaration(id = ENVOY_INSTANCE_METRIC, name = "EnvoyInstanceMetric", catalog = SERVICE_INSTANCE_CATALOG_NAME)
 public class EnvoyInstanceMetric extends Source {
     @Override public int scope() {
         return ENVOY_INSTANCE_METRIC;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ScopeDeclaration.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ScopeDeclaration.java
index 0f5f062..150461a 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ScopeDeclaration.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ScopeDeclaration.java
@@ -30,4 +30,5 @@ import java.lang.annotation.*;
 public @interface ScopeDeclaration {
     int id();
     String name();
+    String catalog() default "";
 }
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java
index 974596f..cfd03ed 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/Service.java
@@ -20,12 +20,12 @@ package org.apache.skywalking.oap.server.core.source;
 
 import lombok.*;
 
-import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.*;
 
 /**
  * @author wusheng, peng-yongsheng
  */
-@ScopeDeclaration(id = SERVICE, name = "Service")
+@ScopeDeclaration(id = SERVICE, name = "Service", catalog = SERVICE_CATALOG_NAME)
 public class Service extends Source {
     @Override public int scope() {
         return DefaultScopeDefine.SERVICE;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstance.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstance.java
index 63d71a9..c1651ff 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstance.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstance.java
@@ -21,11 +21,12 @@ package org.apache.skywalking.oap.server.core.source;
 import lombok.*;
 
 import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE;
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_CATALOG_NAME;
 
 /**
  * @author peng-yongsheng
  */
-@ScopeDeclaration(id = SERVICE_INSTANCE, name = "ServiceInstance")
+@ScopeDeclaration(id = SERVICE_INSTANCE, name = "ServiceInstance", catalog = SERVICE_INSTANCE_CATALOG_NAME)
 public class ServiceInstance extends Source {
     @Override public int scope() {
         return DefaultScopeDefine.SERVICE_INSTANCE;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceCLRCPU.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceCLRCPU.java
index 0ae797a..82131fc 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceCLRCPU.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceCLRCPU.java
@@ -21,12 +21,13 @@ package org.apache.skywalking.oap.server.core.source;
 import lombok.Getter;
 import lombok.Setter;
 
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_CATALOG_NAME;
 import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_CLR_CPU;
 
 /**
  * @author liuhaoyang
  **/
-@ScopeDeclaration(id = SERVICE_INSTANCE_CLR_CPU, name = "ServiceInstanceCLRCPU")
+@ScopeDeclaration(id = SERVICE_INSTANCE_CLR_CPU, name = "ServiceInstanceCLRCPU", catalog = SERVICE_INSTANCE_CATALOG_NAME)
 public class ServiceInstanceCLRCPU extends Source {
     @Override public int scope() {
         return DefaultScopeDefine.SERVICE_INSTANCE_CLR_CPU;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceCLRGC.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceCLRGC.java
index 904f2f9..aee582c 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceCLRGC.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceCLRGC.java
@@ -21,12 +21,13 @@ package org.apache.skywalking.oap.server.core.source;
 import lombok.Getter;
 import lombok.Setter;
 
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_CATALOG_NAME;
 import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_CLR_GC;
 
 /**
  * @author liuhaoyang
  **/
-@ScopeDeclaration(id = SERVICE_INSTANCE_CLR_GC, name = "ServiceInstanceCLRGC")
+@ScopeDeclaration(id = SERVICE_INSTANCE_CLR_GC, name = "ServiceInstanceCLRGC", catalog = SERVICE_INSTANCE_CATALOG_NAME)
 public class ServiceInstanceCLRGC extends Source {
     @Override public int scope() {
         return DefaultScopeDefine.SERVICE_INSTANCE_CLR_GC;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceCLRThread.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceCLRThread.java
index 6f1e54c..7a9c5bb 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceCLRThread.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceCLRThread.java
@@ -21,12 +21,13 @@ package org.apache.skywalking.oap.server.core.source;
 import lombok.Getter;
 import lombok.Setter;
 
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_CATALOG_NAME;
 import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_CLR_THREAD;
 
 /**
  * @author liuhaoyang
  **/
-@ScopeDeclaration(id = SERVICE_INSTANCE_CLR_THREAD, name = "ServiceInstanceCLRThread")
+@ScopeDeclaration(id = SERVICE_INSTANCE_CLR_THREAD, name = "ServiceInstanceCLRThread", catalog = SERVICE_INSTANCE_CATALOG_NAME)
 public class ServiceInstanceCLRThread extends Source {
     @Override public int scope() {
         return DefaultScopeDefine.SERVICE_INSTANCE_CLR_THREAD;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMCPU.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMCPU.java
index 6195d7b..a1b40ec 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMCPU.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMCPU.java
@@ -20,12 +20,13 @@ package org.apache.skywalking.oap.server.core.source;
 
 import lombok.*;
 
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_CATALOG_NAME;
 import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_JVM_CPU;
 
 /**
  * @author peng-yongsheng
  */
-@ScopeDeclaration(id = SERVICE_INSTANCE_JVM_CPU, name = "ServiceInstanceJVMCPU")
+@ScopeDeclaration(id = SERVICE_INSTANCE_JVM_CPU, name = "ServiceInstanceJVMCPU", catalog = SERVICE_INSTANCE_CATALOG_NAME)
 public class ServiceInstanceJVMCPU extends Source {
     @Override public int scope() {
         return DefaultScopeDefine.SERVICE_INSTANCE_JVM_CPU;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMGC.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMGC.java
index c76acd3..c58e157 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMGC.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMGC.java
@@ -20,12 +20,13 @@ package org.apache.skywalking.oap.server.core.source;
 
 import lombok.*;
 
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_CATALOG_NAME;
 import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_JVM_GC;
 
 /**
  * @author peng-yongsheng
  */
-@ScopeDeclaration(id = SERVICE_INSTANCE_JVM_GC, name = "ServiceInstanceJVMGC")
+@ScopeDeclaration(id = SERVICE_INSTANCE_JVM_GC, name = "ServiceInstanceJVMGC", catalog = SERVICE_INSTANCE_CATALOG_NAME)
 public class ServiceInstanceJVMGC extends Source {
     @Override public int scope() {
         return DefaultScopeDefine.SERVICE_INSTANCE_JVM_GC;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemory.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemory.java
index 889265b..960adb0 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemory.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemory.java
@@ -20,12 +20,13 @@ package org.apache.skywalking.oap.server.core.source;
 
 import lombok.*;
 
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_CATALOG_NAME;
 import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_JVM_MEMORY;
 
 /**
  * @author peng-yongsheng
  */
-@ScopeDeclaration(id = SERVICE_INSTANCE_JVM_MEMORY, name = "ServiceInstanceJVMMemory")
+@ScopeDeclaration(id = SERVICE_INSTANCE_JVM_MEMORY, name = "ServiceInstanceJVMMemory", catalog = SERVICE_INSTANCE_CATALOG_NAME)
 public class ServiceInstanceJVMMemory extends Source {
     @Override public int scope() {
         return DefaultScopeDefine.SERVICE_INSTANCE_JVM_MEMORY;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemoryPool.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemoryPool.java
index 289c6e7..f3cf81b 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemoryPool.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/ServiceInstanceJVMMemoryPool.java
@@ -20,12 +20,13 @@ package org.apache.skywalking.oap.server.core.source;
 
 import lombok.*;
 
+import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_CATALOG_NAME;
 import static org.apache.skywalking.oap.server.core.source.DefaultScopeDefine.SERVICE_INSTANCE_JVM_MEMORY_POOL;
 
 /**
  * @author peng-yongsheng
  */
-@ScopeDeclaration(id = SERVICE_INSTANCE_JVM_MEMORY_POOL, name = "ServiceInstanceJVMMemoryPool")
+@ScopeDeclaration(id = SERVICE_INSTANCE_JVM_MEMORY_POOL, name = "ServiceInstanceJVMMemoryPool", catalog = SERVICE_INSTANCE_CATALOG_NAME)
 public class ServiceInstanceJVMMemoryPool extends Source {
     @Override public int scope() {
         return DefaultScopeDefine.SERVICE_INSTANCE_JVM_MEMORY_POOL;