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/15 09:27:52 UTC

[incubator-skywalking] branch exporter created (now 6a35309)

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

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


      at 6a35309  Rename ALarmSupported to WithMetadata

This branch includes the following new commits:

     new 6a35309  Rename ALarmSupported to WithMetadata

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[incubator-skywalking] 01/01: Rename ALarmSupported to WithMetadata

Posted by wu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 6a35309db049150225dbb0f5aea8bedfbc21d577
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Fri Mar 15 17:27:41 2019 +0800

    Rename ALarmSupported to WithMetadata
---
 oap-server/exporter/pom.xml                        | 39 ++++++++++++++++++++++
 ...lking.oap.server.library.module.ModuleProvider} |  6 ----
 .../code-templates/IndicatorImplementor.ftl        |  8 ++---
 .../IndicatorImplementorExpected.java              |  8 ++---
 oap-server/pom.xml                                 |  1 +
 .../oap/server/core/alarm/AlarmEntrance.java       | 18 +++++-----
 .../indicator/IndicatorMetaInfo.java}              |  8 ++---
 .../indicator/WithMetadata.java}                   |  8 ++---
 .../core/analysis/worker/AlarmNotifyWorker.java    |  8 ++---
 .../{AlarmNotifyWorker.java => ExportWorker.java}  | 14 ++------
 .../analysis/worker/IndicatorPersistentWorker.java | 27 +++++++--------
 .../core/analysis/worker/IndicatorProcess.java     |  7 ++--
 .../ExporterModule.java}                           | 18 +++++++---
 .../MetricValuesExportService.java}                |  9 ++---
 ...ywalking.oap.server.library.module.ModuleDefine |  3 +-
 15 files changed, 109 insertions(+), 73 deletions(-)

diff --git a/oap-server/exporter/pom.xml b/oap-server/exporter/pom.xml
new file mode 100644
index 0000000..492a8e2
--- /dev/null
+++ b/oap-server/exporter/pom.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  ~
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>oap-server</artifactId>
+        <groupId>org.apache.skywalking</groupId>
+        <version>6.1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>exporter</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.skywalking</groupId>
+            <artifactId>server-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/oap-server/server-core/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleDefine b/oap-server/exporter/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleProvider
similarity index 73%
copy from oap-server/server-core/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleDefine
copy to oap-server/exporter/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleProvider
index 3c8629f..eafb553 100644
--- a/oap-server/server-core/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleDefine
+++ b/oap-server/exporter/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleProvider
@@ -15,9 +15,3 @@
 # limitations under the License.
 #
 #
-
-org.apache.skywalking.oap.server.core.storage.StorageModule
-org.apache.skywalking.oap.server.core.cluster.ClusterModule
-org.apache.skywalking.oap.server.core.CoreModule
-org.apache.skywalking.oap.server.core.query.QueryModule
-org.apache.skywalking.oap.server.core.alarm.AlarmModule
\ No newline at end of file
diff --git a/oap-server/generate-tool/src/main/resources/code-templates/IndicatorImplementor.ftl b/oap-server/generate-tool/src/main/resources/code-templates/IndicatorImplementor.ftl
index 8fe2b5a..aa7be17 100644
--- a/oap-server/generate-tool/src/main/resources/code-templates/IndicatorImplementor.ftl
+++ b/oap-server/generate-tool/src/main/resources/code-templates/IndicatorImplementor.ftl
@@ -28,8 +28,6 @@ import org.apache.skywalking.oap.server.core.Const;
         <#break>
     </#if>
 </#list>
-import org.apache.skywalking.oap.server.core.alarm.AlarmMeta;
-import org.apache.skywalking.oap.server.core.alarm.AlarmSupported;
 import org.apache.skywalking.oap.server.core.analysis.indicator.*;
 import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorType;
 import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
@@ -45,7 +43,7 @@ import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
 @IndicatorType
 @StreamData
 @StorageEntity(name = "${tableName}", builder = ${metricName}Indicator.Builder.class, sourceScopeId = ${sourceScopeId})
-public class ${metricName}Indicator extends ${indicatorClassName} implements AlarmSupported {
+public class ${metricName}Indicator extends ${indicatorClassName} implements WithMetadata {
 
 <#list fieldsFromSource as sourceField>
     @Setter @Getter @Column(columnName = "${sourceField.columnName}") <#if sourceField.isID()>@IDColumn</#if> private ${sourceField.typeName} ${sourceField.fieldName};
@@ -170,8 +168,8 @@ public class ${metricName}Indicator extends ${indicatorClassName} implements Ala
 
     }
 
-    @Override public AlarmMeta getAlarmMeta() {
-        return new AlarmMeta("${varName}", ${sourceScopeId}<#if (fieldsFromSource?size>0) ><#list fieldsFromSource as field><#if field.isID()>, ${field.fieldName}</#if></#list></#if>);
+    @Override public IndicatorMetaInfo getMeta() {
+        return new IndicatorMetaInfo("${varName}", ${sourceScopeId}<#if (fieldsFromSource?size>0) ><#list fieldsFromSource as field><#if field.isID()>, ${field.fieldName}</#if></#list></#if>);
     }
 
     @Override
diff --git a/oap-server/generate-tool/src/test/resources/expectedFiles/IndicatorImplementorExpected.java b/oap-server/generate-tool/src/test/resources/expectedFiles/IndicatorImplementorExpected.java
index 461553b..25a102a 100644
--- a/oap-server/generate-tool/src/test/resources/expectedFiles/IndicatorImplementorExpected.java
+++ b/oap-server/generate-tool/src/test/resources/expectedFiles/IndicatorImplementorExpected.java
@@ -21,8 +21,6 @@ package org.apache.skywalking.oap.server.core.analysis.generated.service.service
 import java.util.*;
 import lombok.*;
 import org.apache.skywalking.oap.server.core.Const;
-import org.apache.skywalking.oap.server.core.alarm.AlarmMeta;
-import org.apache.skywalking.oap.server.core.alarm.AlarmSupported;
 import org.apache.skywalking.oap.server.core.analysis.indicator.*;
 import org.apache.skywalking.oap.server.core.analysis.indicator.annotation.IndicatorType;
 import org.apache.skywalking.oap.server.core.remote.annotation.StreamData;
@@ -38,7 +36,7 @@ import org.apache.skywalking.oap.server.core.storage.StorageBuilder;
 @IndicatorType
 @StreamData
 @StorageEntity(name = "service_avg", builder = ServiceAvgIndicator.Builder.class, sourceScopeId = 1)
-public class ServiceAvgIndicator extends LongAvgIndicator implements AlarmSupported {
+public class ServiceAvgIndicator extends LongAvgIndicator implements WithMetadata {
 
     @Setter @Getter @Column(columnName = "entity_id") @IDColumn private java.lang.String entityId;
 
@@ -108,8 +106,8 @@ public class ServiceAvgIndicator extends LongAvgIndicator implements AlarmSuppor
 
     }
 
-    @Override public AlarmMeta getAlarmMeta() {
-        return new AlarmMeta("generate_indicator", 1, entityId);
+    @Override public IndicatorMetaInfo getMeta() {
+        return new IndicatorMetaInfo("generate_indicator", 1, entityId);
     }
 
     @Override
diff --git a/oap-server/pom.xml b/oap-server/pom.xml
index 77bc8a4..dba0370 100644
--- a/oap-server/pom.xml
+++ b/oap-server/pom.xml
@@ -41,6 +41,7 @@
         <module>generate-tool</module>
         <module>server-telemetry</module>
         <module>generate-tool-grammar</module>
+        <module>exporter</module>
     </modules>
 
     <properties>
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 d673e46..7037a4a 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
@@ -20,7 +20,7 @@ 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.Indicator;
+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.library.module.ModuleManager;
@@ -50,33 +50,33 @@ public class AlarmEntrance {
 
         init();
 
-        AlarmMeta alarmMeta = ((AlarmSupported)indicator).getAlarmMeta();
+        IndicatorMetaInfo indicatorMetaInfo = ((WithMetadata)indicator).getMeta();
 
         MetaInAlarm metaInAlarm;
-        switch (alarmMeta.getScope()) {
+        switch (indicatorMetaInfo.getScope()) {
             case SERVICE:
-                int serviceId = Integer.parseInt(alarmMeta.getId());
+                int serviceId = Integer.parseInt(indicatorMetaInfo.getId());
                 ServiceInventory serviceInventory = serviceInventoryCache.get(serviceId);
                 ServiceMetaInAlarm serviceMetaInAlarm = new ServiceMetaInAlarm();
-                serviceMetaInAlarm.setIndicatorName(alarmMeta.getIndicatorName());
+                serviceMetaInAlarm.setIndicatorName(indicatorMetaInfo.getIndicatorName());
                 serviceMetaInAlarm.setId(serviceId);
                 serviceMetaInAlarm.setName(serviceInventory.getName());
                 metaInAlarm = serviceMetaInAlarm;
                 break;
             case SERVICE_INSTANCE:
-                int serviceInstanceId = Integer.parseInt(alarmMeta.getId());
+                int serviceInstanceId = Integer.parseInt(indicatorMetaInfo.getId());
                 ServiceInstanceInventory serviceInstanceInventory = serviceInstanceInventoryCache.get(serviceInstanceId);
                 ServiceInstanceMetaInAlarm instanceMetaInAlarm = new ServiceInstanceMetaInAlarm();
-                instanceMetaInAlarm.setIndicatorName(alarmMeta.getIndicatorName());
+                instanceMetaInAlarm.setIndicatorName(indicatorMetaInfo.getIndicatorName());
                 instanceMetaInAlarm.setId(serviceInstanceId);
                 instanceMetaInAlarm.setName(serviceInstanceInventory.getName());
                 metaInAlarm = instanceMetaInAlarm;
                 break;
             case ENDPOINT:
-                int endpointId = Integer.parseInt(alarmMeta.getId());
+                int endpointId = Integer.parseInt(indicatorMetaInfo.getId());
                 EndpointInventory endpointInventory = endpointInventoryCache.get(endpointId);
                 EndpointMetaInAlarm endpointMetaInAlarm = new EndpointMetaInAlarm();
-                endpointMetaInAlarm.setIndicatorName(alarmMeta.getIndicatorName());
+                endpointMetaInAlarm.setIndicatorName(indicatorMetaInfo.getIndicatorName());
                 endpointMetaInAlarm.setId(endpointId);
 
                 serviceId = endpointInventory.getServiceId();
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmMeta.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/IndicatorMetaInfo.java
similarity index 85%
rename from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmMeta.java
rename to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/IndicatorMetaInfo.java
index c751df0..39bb4ae 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmMeta.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/IndicatorMetaInfo.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.skywalking.oap.server.core.alarm;
+package org.apache.skywalking.oap.server.core.analysis.indicator;
 
 import lombok.*;
 import org.apache.skywalking.oap.server.core.Const;
@@ -24,18 +24,18 @@ import org.apache.skywalking.oap.server.core.Const;
 /**
  * @author wusheng
  */
-public class AlarmMeta {
+public class IndicatorMetaInfo {
     @Setter @Getter private String indicatorName;
     @Setter @Getter private int scope;
     @Setter @Getter private String id;
 
-    public AlarmMeta(String indicatorName, int scope) {
+    public IndicatorMetaInfo(String indicatorName, int scope) {
         this.indicatorName = indicatorName;
         this.scope = scope;
         this.id = Const.EMPTY_STRING;
     }
 
-    public AlarmMeta(String indicatorName, int scope, String id) {
+    public IndicatorMetaInfo(String indicatorName, int scope, String id) {
         this.indicatorName = indicatorName;
         this.scope = scope;
         this.id = id;
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmSupported.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/WithMetadata.java
similarity index 85%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmSupported.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/WithMetadata.java
index 9846491..32a564e 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmSupported.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/indicator/WithMetadata.java
@@ -16,13 +16,13 @@
  *
  */
 
-package org.apache.skywalking.oap.server.core.alarm;
+package org.apache.skywalking.oap.server.core.analysis.indicator;
 
 /**
- * Alarm supported interface implementor could return the {@link AlarmMeta}
+ * Alarm supported interface implementor could return the {@link IndicatorMetaInfo}
  *
  * @author wusheng
  */
-public interface AlarmSupported {
-    AlarmMeta getAlarmMeta();
+public interface WithMetadata {
+    IndicatorMetaInfo getMeta();
 }
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/AlarmNotifyWorker.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/AlarmNotifyWorker.java
index 2b63572..d325648 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/AlarmNotifyWorker.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/AlarmNotifyWorker.java
@@ -18,9 +18,9 @@
 
 package org.apache.skywalking.oap.server.core.analysis.worker;
 
-import org.apache.skywalking.oap.server.core.alarm.AlarmEntrance;
-import org.apache.skywalking.oap.server.core.alarm.AlarmSupported;
-import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
+import org.apache.skywalking.oap.server.core.alarm.*;
+import org.apache.skywalking.oap.server.core.analysis.indicator.*;
+import org.apache.skywalking.oap.server.core.analysis.indicator.WithMetadata;
 import org.apache.skywalking.oap.server.core.worker.AbstractWorker;
 import org.apache.skywalking.oap.server.library.module.ModuleManager;
 
@@ -40,7 +40,7 @@ public class AlarmNotifyWorker extends AbstractWorker<Indicator> {
     }
 
     @Override public void in(Indicator indicator) {
-        if (indicator instanceof AlarmSupported) {
+        if (indicator instanceof WithMetadata) {
             entrance.forward(indicator);
         }
     }
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/AlarmNotifyWorker.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/ExportWorker.java
similarity index 69%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/AlarmNotifyWorker.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/ExportWorker.java
index 2b63572..f1fda9c 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/AlarmNotifyWorker.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/ExportWorker.java
@@ -18,30 +18,22 @@
 
 package org.apache.skywalking.oap.server.core.analysis.worker;
 
-import org.apache.skywalking.oap.server.core.alarm.AlarmEntrance;
-import org.apache.skywalking.oap.server.core.alarm.AlarmSupported;
 import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
 import org.apache.skywalking.oap.server.core.worker.AbstractWorker;
 import org.apache.skywalking.oap.server.library.module.ModuleManager;
 
 /**
- * Alarm notify worker, do a simple route to alarm core after the aggregation persistence.
- *
  * @author wusheng
  */
-public class AlarmNotifyWorker extends AbstractWorker<Indicator> {
+public class ExportWorker extends AbstractWorker<Indicator> {
     private ModuleManager moduleManager;
-    private AlarmEntrance entrance;
 
-    public AlarmNotifyWorker(int workerId, ModuleManager moduleManager) {
+    public ExportWorker(int workerId, ModuleManager moduleManager) {
         super(workerId);
         this.moduleManager = moduleManager;
-        this.entrance = new AlarmEntrance(moduleManager);
     }
 
     @Override public void in(Indicator indicator) {
-        if (indicator instanceof AlarmSupported) {
-            entrance.forward(indicator);
-        }
+
     }
 }
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/IndicatorPersistentWorker.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/IndicatorPersistentWorker.java
index 53134cf..13a5193 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/IndicatorPersistentWorker.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/IndicatorPersistentWorker.java
@@ -18,21 +18,16 @@
 
 package org.apache.skywalking.oap.server.core.analysis.worker;
 
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import org.apache.skywalking.apm.commons.datacarrier.DataCarrier;
 import org.apache.skywalking.apm.commons.datacarrier.consumer.*;
 import org.apache.skywalking.oap.server.core.UnexpectedException;
-import org.apache.skywalking.oap.server.core.analysis.data.EndOfBatchContext;
-import org.apache.skywalking.oap.server.core.analysis.data.MergeDataCache;
+import org.apache.skywalking.oap.server.core.analysis.data.*;
 import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
 import org.apache.skywalking.oap.server.core.storage.IIndicatorDAO;
 import org.apache.skywalking.oap.server.core.worker.AbstractWorker;
 import org.apache.skywalking.oap.server.library.module.ModuleManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.slf4j.*;
 
 import static java.util.Objects.nonNull;
 
@@ -46,16 +41,19 @@ public class IndicatorPersistentWorker extends PersistenceWorker<Indicator, Merg
     private final String modelName;
     private final MergeDataCache<Indicator> mergeDataCache;
     private final IIndicatorDAO indicatorDAO;
-    private final AbstractWorker<Indicator> nextWorker;
+    private final AbstractWorker<Indicator> nextAlarmWorker;
+    private final AbstractWorker<Indicator> nextExportWorker;
     private final DataCarrier<Indicator> dataCarrier;
 
     IndicatorPersistentWorker(int workerId, String modelName, int batchSize, ModuleManager moduleManager,
-        IIndicatorDAO indicatorDAO, AbstractWorker<Indicator> nextWorker) {
+        IIndicatorDAO indicatorDAO, AbstractWorker<Indicator> nextAlarmWorker,
+        AbstractWorker<Indicator> nextExportWorker) {
         super(moduleManager, workerId, batchSize);
         this.modelName = modelName;
         this.mergeDataCache = new MergeDataCache<>();
         this.indicatorDAO = indicatorDAO;
-        this.nextWorker = nextWorker;
+        this.nextAlarmWorker = nextAlarmWorker;
+        this.nextExportWorker = nextExportWorker;
 
         String name = "INDICATOR_L2_AGGREGATION";
         int size = BulkConsumePool.Creator.recommendMaxSize() / 8;
@@ -117,8 +115,11 @@ public class IndicatorPersistentWorker extends PersistenceWorker<Indicator, Merg
                     batchCollection.add(indicatorDAO.prepareBatchInsert(modelName, data));
                 }
 
-                if (Objects.nonNull(nextWorker)) {
-                    nextWorker.in(data);
+                if (Objects.nonNull(nextAlarmWorker)) {
+                    nextAlarmWorker.in(data);
+                }
+                if (Objects.nonNull(nextExportWorker)) {
+                    nextExportWorker.in(data);
                 }
             } catch (Throwable t) {
                 logger.error(t.getMessage(), t);
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/IndicatorProcess.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/IndicatorProcess.java
index 4baea58..599e6fa 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/IndicatorProcess.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/worker/IndicatorProcess.java
@@ -74,8 +74,11 @@ public enum IndicatorProcess {
         AlarmNotifyWorker alarmNotifyWorker = new AlarmNotifyWorker(WorkerIdGenerator.INSTANCES.generate(), moduleManager);
         WorkerInstances.INSTANCES.put(alarmNotifyWorker.getWorkerId(), alarmNotifyWorker);
 
+        ExportWorker exportWorker = new ExportWorker(WorkerIdGenerator.INSTANCES.generate(), moduleManager);
+        WorkerInstances.INSTANCES.put(alarmNotifyWorker.getWorkerId(), alarmNotifyWorker);
+
         IndicatorPersistentWorker minutePersistentWorker = new IndicatorPersistentWorker(WorkerIdGenerator.INSTANCES.generate(), modelName,
-            1000, moduleManager, indicatorDAO, alarmNotifyWorker);
+            1000, moduleManager, indicatorDAO, alarmNotifyWorker, exportWorker);
         WorkerInstances.INSTANCES.put(minutePersistentWorker.getWorkerId(), minutePersistentWorker);
         persistentWorkers.add(minutePersistentWorker);
 
@@ -85,7 +88,7 @@ public enum IndicatorProcess {
     private IndicatorPersistentWorker worker(ModuleManager moduleManager,
         IIndicatorDAO indicatorDAO, String modelName) {
         IndicatorPersistentWorker persistentWorker = new IndicatorPersistentWorker(WorkerIdGenerator.INSTANCES.generate(), modelName,
-            1000, moduleManager, indicatorDAO, null);
+            1000, moduleManager, indicatorDAO, null, null);
         WorkerInstances.INSTANCES.put(persistentWorker.getWorkerId(), persistentWorker);
         persistentWorkers.add(persistentWorker);
 
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmSupported.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/exporter/ExporterModule.java
similarity index 69%
copy from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmSupported.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/exporter/ExporterModule.java
index 9846491..660cf16 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmSupported.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/exporter/ExporterModule.java
@@ -16,13 +16,21 @@
  *
  */
 
-package org.apache.skywalking.oap.server.core.alarm;
+package org.apache.skywalking.oap.server.core.exporter;
+
+import org.apache.skywalking.oap.server.library.module.ModuleDefine;
 
 /**
- * Alarm supported interface implementor could return the {@link AlarmMeta}
- *
  * @author wusheng
  */
-public interface AlarmSupported {
-    AlarmMeta getAlarmMeta();
+public class ExporterModule extends ModuleDefine {
+    public static final String NAME = "exporter";
+
+    public ExporterModule() {
+        super(NAME);
+    }
+
+    @Override public Class[] services() {
+        return new Class[0];
+    }
 }
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmSupported.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/exporter/MetricValuesExportService.java
similarity index 75%
rename from oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmSupported.java
rename to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/exporter/MetricValuesExportService.java
index 9846491..4da1720 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/alarm/AlarmSupported.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/exporter/MetricValuesExportService.java
@@ -16,13 +16,14 @@
  *
  */
 
-package org.apache.skywalking.oap.server.core.alarm;
+package org.apache.skywalking.oap.server.core.exporter;
+
+import org.apache.skywalking.oap.server.library.module.Service;
 
 /**
- * Alarm supported interface implementor could return the {@link AlarmMeta}
+ * Export the metric value from indicators through this service, if provider exists.
  *
  * @author wusheng
  */
-public interface AlarmSupported {
-    AlarmMeta getAlarmMeta();
+public class MetricValuesExportService implements Service {
 }
diff --git a/oap-server/server-core/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleDefine b/oap-server/server-core/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleDefine
index 3c8629f..5d40ce6 100644
--- a/oap-server/server-core/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleDefine
+++ b/oap-server/server-core/src/main/resources/META-INF/services/org.apache.skywalking.oap.server.library.module.ModuleDefine
@@ -20,4 +20,5 @@ org.apache.skywalking.oap.server.core.storage.StorageModule
 org.apache.skywalking.oap.server.core.cluster.ClusterModule
 org.apache.skywalking.oap.server.core.CoreModule
 org.apache.skywalking.oap.server.core.query.QueryModule
-org.apache.skywalking.oap.server.core.alarm.AlarmModule
\ No newline at end of file
+org.apache.skywalking.oap.server.core.alarm.AlarmModule
+org.apache.skywalking.oap.server.core.exporter.ExporterModule
\ No newline at end of file