wu-sheng closed pull request #809: Feature/applicationalarm
URL: https://github.com/apache/incubator-skywalking/pull/809
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git 
a/apm-collector/apm-collector-analysis/analysis-alarm/alarm-define/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/define/graph/AlarmWorkerIdDefine.java
 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-define/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/define/graph/AlarmWorkerIdDefine.java
index 0241473f6..d36427468 100644
--- 
a/apm-collector/apm-collector-analysis/analysis-alarm/alarm-define/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/define/graph/AlarmWorkerIdDefine.java
+++ 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-define/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/define/graph/AlarmWorkerIdDefine.java
@@ -22,45 +22,52 @@
  * @author peng-yongsheng
  */
 public class AlarmWorkerIdDefine {
-    public static final int SERVICE_METRIC_ALARM_ASSERT_WORKER_ID = 500;
-    public static final int SERVICE_METRIC_ALARM_GRAPH_BRIDGE_WORKER_ID = 501;
-    public static final int SERVICE_METRIC_ALARM_REMOTE_WORKER_ID = 502;
-    public static final int SERVICE_METRIC_ALARM_PERSISTENCE_WORKER_ID = 503;
-    public static final int SERVICE_METRIC_ALARM_LIST_PERSISTENCE_WORKER_ID = 
504;
-    public static final int SERVICE_METRIC_ALARM_TO_LIST_NODE_PROCESSOR_ID = 
505;
+    public static final int SERVICE_METRIC_ALARM_ASSERT_WORKER_ID = 5000;
+    public static final int SERVICE_METRIC_ALARM_GRAPH_BRIDGE_WORKER_ID = 5001;
+    public static final int SERVICE_METRIC_ALARM_REMOTE_WORKER_ID = 5002;
+    public static final int SERVICE_METRIC_ALARM_PERSISTENCE_WORKER_ID = 5003;
+    public static final int SERVICE_METRIC_ALARM_LIST_PERSISTENCE_WORKER_ID = 
5004;
+    public static final int SERVICE_METRIC_ALARM_TO_LIST_NODE_PROCESSOR_ID = 
5005;
 
-    public static final int INSTANCE_METRIC_ALARM_ASSERT_WORKER_ID = 510;
-    public static final int INSTANCE_METRIC_ALARM_GRAPH_BRIDGE_WORKER_ID = 511;
-    public static final int INSTANCE_METRIC_ALARM_REMOTE_WORKER_ID = 512;
-    public static final int INSTANCE_METRIC_ALARM_PERSISTENCE_WORKER_ID = 513;
-    public static final int INSTANCE_METRIC_ALARM_LIST_PERSISTENCE_WORKER_ID = 
514;
-    public static final int INSTANCE_METRIC_ALARM_TO_LIST_NODE_PROCESSOR_ID = 
515;
+    public static final int INSTANCE_METRIC_ALARM_ASSERT_WORKER_ID = 5010;
+    public static final int INSTANCE_METRIC_ALARM_GRAPH_BRIDGE_WORKER_ID = 
5011;
+    public static final int INSTANCE_METRIC_ALARM_REMOTE_WORKER_ID = 5012;
+    public static final int INSTANCE_METRIC_ALARM_PERSISTENCE_WORKER_ID = 5013;
+    public static final int INSTANCE_METRIC_ALARM_LIST_PERSISTENCE_WORKER_ID = 
5014;
+    public static final int INSTANCE_METRIC_ALARM_TO_LIST_NODE_PROCESSOR_ID = 
5015;
 
-    public static final int APPLICATION_METRIC_ALARM_ASSERT_WORKER_ID = 520;
-    public static final int APPLICATION_METRIC_ALARM_GRAPH_BRIDGE_WORKER_ID = 
521;
-    public static final int APPLICATION_METRIC_ALARM_REMOTE_WORKER_ID = 522;
-    public static final int APPLICATION_METRIC_ALARM_PERSISTENCE_WORKER_ID = 
523;
-    public static final int 
APPLICATION_METRIC_ALARM_LIST_PERSISTENCE_WORKER_ID = 524;
-    public static final int APPLICATION_METRIC_ALARM_TO_LIST_NODE_PROCESSOR_ID 
= 525;
+    public static final int APPLICATION_METRIC_ALARM_ASSERT_WORKER_ID = 5020;
+    public static final int APPLICATION_METRIC_ALARM_GRAPH_BRIDGE_WORKER_ID = 
5021;
+    public static final int APPLICATION_METRIC_ALARM_REMOTE_WORKER_ID = 5022;
+    public static final int APPLICATION_METRIC_ALARM_PERSISTENCE_WORKER_ID = 
5023;
+    public static final int APPLICATION_METRIC_ALARM_TO_LIST_NODE_PROCESSOR_ID 
= 5024;
 
-    public static final int SERVICE_REFERENCE_METRIC_ALARM_ASSERT_WORKER_ID = 
530;
-    public static final int 
SERVICE_REFERENCE_METRIC_ALARM_GRAPH_BRIDGE_WORKER_ID = 531;
-    public static final int SERVICE_REFERENCE_METRIC_ALARM_REMOTE_WORKER_ID = 
532;
-    public static final int 
SERVICE_REFERENCE_METRIC_ALARM_PERSISTENCE_WORKER_ID = 533;
-    public static final int 
SERVICE_REFERENCE_METRIC_ALARM_LIST_PERSISTENCE_WORKER_ID = 534;
-    public static final int 
SERVICE_REFERENCE_METRIC_ALARM_TO_LIST_NODE_PROCESSOR_ID = 535;
+    public static final int SERVICE_REFERENCE_METRIC_ALARM_ASSERT_WORKER_ID = 
5030;
+    public static final int 
SERVICE_REFERENCE_METRIC_ALARM_GRAPH_BRIDGE_WORKER_ID = 5031;
+    public static final int SERVICE_REFERENCE_METRIC_ALARM_REMOTE_WORKER_ID = 
5032;
+    public static final int 
SERVICE_REFERENCE_METRIC_ALARM_PERSISTENCE_WORKER_ID = 5033;
+    public static final int 
SERVICE_REFERENCE_METRIC_ALARM_LIST_PERSISTENCE_WORKER_ID = 5034;
+    public static final int 
SERVICE_REFERENCE_METRIC_ALARM_TO_LIST_NODE_PROCESSOR_ID = 5035;
 
-    public static final int INSTANCE_REFERENCE_METRIC_ALARM_ASSERT_WORKER_ID = 
540;
-    public static final int 
INSTANCE_REFERENCE_METRIC_ALARM_GRAPH_BRIDGE_WORKER_ID = 541;
-    public static final int INSTANCE_REFERENCE_METRIC_ALARM_REMOTE_WORKER_ID = 
542;
-    public static final int 
INSTANCE_REFERENCE_METRIC_ALARM_PERSISTENCE_WORKER_ID = 543;
-    public static final int 
INSTANCE_REFERENCE_METRIC_ALARM_LIST_PERSISTENCE_WORKER_ID = 544;
-    public static final int 
INSTANCE_REFERENCE_METRIC_ALARM_TO_LIST_NODE_PROCESSOR_ID = 545;
+    public static final int INSTANCE_REFERENCE_METRIC_ALARM_ASSERT_WORKER_ID = 
5040;
+    public static final int 
INSTANCE_REFERENCE_METRIC_ALARM_GRAPH_BRIDGE_WORKER_ID = 5041;
+    public static final int INSTANCE_REFERENCE_METRIC_ALARM_REMOTE_WORKER_ID = 
5042;
+    public static final int 
INSTANCE_REFERENCE_METRIC_ALARM_PERSISTENCE_WORKER_ID = 5043;
+    public static final int 
INSTANCE_REFERENCE_METRIC_ALARM_LIST_PERSISTENCE_WORKER_ID = 5044;
+    public static final int 
INSTANCE_REFERENCE_METRIC_ALARM_TO_LIST_NODE_PROCESSOR_ID = 5045;
 
-    public static final int 
APPLICATION_REFERENCE_METRIC_ALARM_ASSERT_WORKER_ID = 550;
-    public static final int 
APPLICATION_REFERENCE_METRIC_ALARM_GRAPH_BRIDGE_WORKER_ID = 551;
-    public static final int 
APPLICATION_REFERENCE_METRIC_ALARM_REMOTE_WORKER_ID = 552;
-    public static final int 
APPLICATION_REFERENCE_METRIC_ALARM_PERSISTENCE_WORKER_ID = 553;
-    public static final int 
APPLICATION_REFERENCE_METRIC_ALARM_LIST_PERSISTENCE_WORKER_ID = 554;
-    public static final int 
APPLICATION_REFERENCE_METRIC_ALARM_TO_LIST_NODE_PROCESSOR_ID = 555;
+    public static final int 
APPLICATION_REFERENCE_METRIC_ALARM_ASSERT_WORKER_ID = 5050;
+    public static final int 
APPLICATION_REFERENCE_METRIC_ALARM_GRAPH_BRIDGE_WORKER_ID = 5051;
+    public static final int 
APPLICATION_REFERENCE_METRIC_ALARM_REMOTE_WORKER_ID = 5052;
+    public static final int 
APPLICATION_REFERENCE_METRIC_ALARM_PERSISTENCE_WORKER_ID = 5053;
+    public static final int 
APPLICATION_REFERENCE_METRIC_ALARM_LIST_PERSISTENCE_WORKER_ID = 5054;
+    public static final int 
APPLICATION_REFERENCE_METRIC_ALARM_TO_LIST_NODE_PROCESSOR_ID = 5055;
+
+    public static final int 
APPLICATION_METRIC_ALARM_LIST_MINUTE_PERSISTENCE_WORKER_ID = 5051;
+    public static final int 
APPLICATION_METRIC_ALARM_LIST_HOUR_PERSISTENCE_WORKER_ID = 5052;
+    public static final int 
APPLICATION_METRIC_ALARM_LIST_DAY_PERSISTENCE_WORKER_ID = 5053;
+    public static final int 
APPLICATION_METRIC_ALARM_LIST_MONTH_PERSISTENCE_WORKER_ID = 5054;
+    public static final int 
APPLICATION_METRIC_ALARM_LIST_HOUR_TRANSFORM_NODE_ID = 5055;
+    public static final int 
APPLICATION_METRIC_ALARM_LIST_DAY_TRANSFORM_NODE_ID = 5056;
+    public static final int 
APPLICATION_METRIC_ALARM_LIST_MONTH_TRANSFORM_NODE_ID = 5057;
 }
diff --git 
a/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmGraph.java
 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmGraph.java
index 0733dbab0..4963ad049 100644
--- 
a/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmGraph.java
+++ 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmGraph.java
@@ -31,6 +31,7 @@
 import org.apache.skywalking.apm.collector.remote.RemoteModule;
 import org.apache.skywalking.apm.collector.remote.service.RemoteSenderService;
 import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarm;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
 import 
org.apache.skywalking.apm.collector.storage.table.application.ApplicationMetric;
 
 /**
@@ -57,7 +58,19 @@ public void create() {
 
         
graph.toFinder().findNode(AlarmWorkerIdDefine.APPLICATION_METRIC_ALARM_REMOTE_WORKER_ID,
 ApplicationAlarm.class)
             .addNext(new ApplicationMetricAlarmToListNodeProcessor())
-            .addNext(new 
ApplicationMetricAlarmListPersistenceWorker.Factory(moduleManager).create(workerCreateListener));
+            .addNext(new 
ApplicationMetricAlarmListMinutePersistenceWorker.Factory(moduleManager).create(workerCreateListener));
+
+        
graph.toFinder().findNode(AlarmWorkerIdDefine.APPLICATION_METRIC_ALARM_LIST_MINUTE_PERSISTENCE_WORKER_ID,
 ApplicationAlarmList.class)
+            .addNext(new ApplicationMetricAlarmListHourTransformNode())
+            .addNext(new 
ApplicationMetricAlarmListHourPersistenceWorker.Factory(moduleManager).create(workerCreateListener));
+
+        
graph.toFinder().findNode(AlarmWorkerIdDefine.APPLICATION_METRIC_ALARM_LIST_MINUTE_PERSISTENCE_WORKER_ID,
 ApplicationAlarmList.class)
+            .addNext(new ApplicationMetricAlarmListDayTransformNode())
+            .addNext(new 
ApplicationMetricAlarmListDayPersistenceWorker.Factory(moduleManager).create(workerCreateListener));
+
+        
graph.toFinder().findNode(AlarmWorkerIdDefine.APPLICATION_METRIC_ALARM_LIST_MINUTE_PERSISTENCE_WORKER_ID,
 ApplicationAlarmList.class)
+            .addNext(new ApplicationMetricAlarmListMonthTransformNode())
+            .addNext(new 
ApplicationMetricAlarmListMonthPersistenceWorker.Factory(moduleManager).create(workerCreateListener));
 
         link(graph);
     }
diff --git 
a/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListCopy.java
 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListCopy.java
new file mode 100644
index 000000000..70ca915fb
--- /dev/null
+++ 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListCopy.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package 
org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.application;
+
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationMetricAlarmListCopy {
+
+    public static ApplicationAlarmList copy(ApplicationAlarmList 
applicationAlarmList) {
+        ApplicationAlarmList newApplicationAlarmList = new 
ApplicationAlarmList();
+        newApplicationAlarmList.setId(applicationAlarmList.getId());
+        
newApplicationAlarmList.setMetricId(applicationAlarmList.getMetricId());
+
+        
newApplicationAlarmList.setAlarmContent(applicationAlarmList.getAlarmContent());
+        
newApplicationAlarmList.setAlarmType(applicationAlarmList.getAlarmType());
+        
newApplicationAlarmList.setSourceValue(applicationAlarmList.getSourceValue());
+        
newApplicationAlarmList.setApplicationId(applicationAlarmList.getApplicationId());
+        
newApplicationAlarmList.setTimeBucket(newApplicationAlarmList.getTimeBucket());
+        return newApplicationAlarmList;
+    }
+}
diff --git 
a/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListPersistenceWorker.java
 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListDayPersistenceWorker.java
similarity index 79%
rename from 
apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListPersistenceWorker.java
rename to 
apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListDayPersistenceWorker.java
index 88963870f..1d08b2037 100644
--- 
a/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListPersistenceWorker.java
+++ 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListDayPersistenceWorker.java
@@ -24,20 +24,20 @@
 import org.apache.skywalking.apm.collector.core.module.ModuleManager;
 import org.apache.skywalking.apm.collector.storage.StorageModule;
 import org.apache.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
-import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListDayPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
 
 /**
  * @author peng-yongsheng
  */
-public class ApplicationMetricAlarmListPersistenceWorker extends 
PersistenceWorker<ApplicationAlarmList> {
+public class ApplicationMetricAlarmListDayPersistenceWorker extends 
PersistenceWorker<ApplicationAlarmList> {
 
-    public ApplicationMetricAlarmListPersistenceWorker(ModuleManager 
moduleManager) {
+    public ApplicationMetricAlarmListDayPersistenceWorker(ModuleManager 
moduleManager) {
         super(moduleManager);
     }
 
     @Override public int id() {
-        return 
AlarmWorkerIdDefine.APPLICATION_METRIC_ALARM_LIST_PERSISTENCE_WORKER_ID;
+        return 
AlarmWorkerIdDefine.APPLICATION_METRIC_ALARM_LIST_DAY_PERSISTENCE_WORKER_ID;
     }
 
     @Override protected boolean needMergeDBData() {
@@ -46,16 +46,16 @@ public 
ApplicationMetricAlarmListPersistenceWorker(ModuleManager moduleManager)
 
     @SuppressWarnings("unchecked")
     @Override protected IPersistenceDAO<?, ?, ApplicationAlarmList> 
persistenceDAO() {
-        return 
getModuleManager().find(StorageModule.NAME).getService(IApplicationAlarmListPersistenceDAO.class);
+        return 
getModuleManager().find(StorageModule.NAME).getService(IApplicationAlarmListDayPersistenceDAO.class);
     }
 
-    public static class Factory extends 
PersistenceWorkerProvider<ApplicationAlarmList, 
ApplicationMetricAlarmListPersistenceWorker> {
+    public static class Factory extends 
PersistenceWorkerProvider<ApplicationAlarmList, 
ApplicationMetricAlarmListDayPersistenceWorker> {
         public Factory(ModuleManager moduleManager) {
             super(moduleManager);
         }
 
-        @Override public ApplicationMetricAlarmListPersistenceWorker 
workerInstance(ModuleManager moduleManager) {
-            return new 
ApplicationMetricAlarmListPersistenceWorker(moduleManager);
+        @Override public ApplicationMetricAlarmListDayPersistenceWorker 
workerInstance(ModuleManager moduleManager) {
+            return new 
ApplicationMetricAlarmListDayPersistenceWorker(moduleManager);
         }
 
         @Override
diff --git 
a/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListDayTransformNode.java
 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListDayTransformNode.java
new file mode 100644
index 000000000..d79065b98
--- /dev/null
+++ 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListDayTransformNode.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package 
org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.application;
+
+import 
org.apache.skywalking.apm.collector.analysis.alarm.define.graph.AlarmWorkerIdDefine;
+import org.apache.skywalking.apm.collector.core.graph.Next;
+import org.apache.skywalking.apm.collector.core.graph.NodeProcessor;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import org.apache.skywalking.apm.collector.core.util.TimeBucketUtils;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationMetricAlarmListDayTransformNode implements 
NodeProcessor<ApplicationAlarmList, ApplicationAlarmList> {
+
+    @Override public int id() {
+        return 
AlarmWorkerIdDefine.APPLICATION_METRIC_ALARM_LIST_DAY_TRANSFORM_NODE_ID;
+    }
+
+    @Override
+    public void process(ApplicationAlarmList applicationAlarmList, 
Next<ApplicationAlarmList> next) {
+        long timeBucket = 
TimeBucketUtils.INSTANCE.minuteToDay(applicationAlarmList.getTimeBucket());
+
+        ApplicationAlarmList newApplicationAlarmList = 
ApplicationMetricAlarmListCopy.copy(applicationAlarmList);
+        newApplicationAlarmList.setId(String.valueOf(timeBucket) + 
Const.ID_SPLIT + applicationAlarmList.getMetricId());
+        newApplicationAlarmList.setTimeBucket(timeBucket);
+        next.execute(newApplicationAlarmList);
+    }
+}
diff --git 
a/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListHourPersistenceWorker.java
 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListHourPersistenceWorker.java
new file mode 100644
index 000000000..340844437
--- /dev/null
+++ 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListHourPersistenceWorker.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package 
org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.application;
+
+import 
org.apache.skywalking.apm.collector.analysis.alarm.define.graph.AlarmWorkerIdDefine;
+import 
org.apache.skywalking.apm.collector.analysis.worker.model.impl.PersistenceWorker;
+import 
org.apache.skywalking.apm.collector.analysis.worker.model.impl.PersistenceWorkerProvider;
+import org.apache.skywalking.apm.collector.core.module.ModuleManager;
+import org.apache.skywalking.apm.collector.storage.StorageModule;
+import org.apache.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListHourPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationMetricAlarmListHourPersistenceWorker extends 
PersistenceWorker<ApplicationAlarmList> {
+
+    public ApplicationMetricAlarmListHourPersistenceWorker(ModuleManager 
moduleManager) {
+        super(moduleManager);
+    }
+
+    @Override public int id() {
+        return 
AlarmWorkerIdDefine.APPLICATION_METRIC_ALARM_LIST_HOUR_PERSISTENCE_WORKER_ID;
+    }
+
+    @Override protected boolean needMergeDBData() {
+        return true;
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override protected IPersistenceDAO<?, ?, ApplicationAlarmList> 
persistenceDAO() {
+        return 
getModuleManager().find(StorageModule.NAME).getService(IApplicationAlarmListHourPersistenceDAO.class);
+    }
+
+    public static class Factory extends 
PersistenceWorkerProvider<ApplicationAlarmList, 
ApplicationMetricAlarmListHourPersistenceWorker> {
+        public Factory(ModuleManager moduleManager) {
+            super(moduleManager);
+        }
+
+        @Override public ApplicationMetricAlarmListHourPersistenceWorker 
workerInstance(ModuleManager moduleManager) {
+            return new 
ApplicationMetricAlarmListHourPersistenceWorker(moduleManager);
+        }
+
+        @Override
+        public int queueSize() {
+            return 1024;
+        }
+    }
+}
diff --git 
a/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListHourTransformNode.java
 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListHourTransformNode.java
new file mode 100644
index 000000000..9d8609048
--- /dev/null
+++ 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListHourTransformNode.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package 
org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.application;
+
+import 
org.apache.skywalking.apm.collector.analysis.alarm.define.graph.AlarmWorkerIdDefine;
+import org.apache.skywalking.apm.collector.core.graph.Next;
+import org.apache.skywalking.apm.collector.core.graph.NodeProcessor;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import org.apache.skywalking.apm.collector.core.util.TimeBucketUtils;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationMetricAlarmListHourTransformNode implements 
NodeProcessor<ApplicationAlarmList, ApplicationAlarmList> {
+
+    @Override public int id() {
+        return 
AlarmWorkerIdDefine.APPLICATION_METRIC_ALARM_LIST_HOUR_TRANSFORM_NODE_ID;
+    }
+
+    @Override
+    public void process(ApplicationAlarmList applicationAlarmList, 
Next<ApplicationAlarmList> next) {
+        long timeBucket = 
TimeBucketUtils.INSTANCE.minuteToHour(applicationAlarmList.getTimeBucket());
+
+        ApplicationAlarmList newApplicationAlarmList = 
ApplicationMetricAlarmListCopy.copy(applicationAlarmList);
+        newApplicationAlarmList.setId(String.valueOf(timeBucket) + 
Const.ID_SPLIT + applicationAlarmList.getMetricId());
+        newApplicationAlarmList.setTimeBucket(timeBucket);
+        next.execute(newApplicationAlarmList);
+    }
+}
diff --git 
a/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListMinutePersistenceWorker.java
 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListMinutePersistenceWorker.java
new file mode 100644
index 000000000..114757202
--- /dev/null
+++ 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListMinutePersistenceWorker.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package 
org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.application;
+
+import 
org.apache.skywalking.apm.collector.analysis.alarm.define.graph.AlarmWorkerIdDefine;
+import 
org.apache.skywalking.apm.collector.analysis.worker.model.impl.PersistenceWorker;
+import 
org.apache.skywalking.apm.collector.analysis.worker.model.impl.PersistenceWorkerProvider;
+import org.apache.skywalking.apm.collector.core.module.ModuleManager;
+import org.apache.skywalking.apm.collector.storage.StorageModule;
+import org.apache.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListMinutePersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationMetricAlarmListMinutePersistenceWorker extends 
PersistenceWorker<ApplicationAlarmList> {
+
+    public ApplicationMetricAlarmListMinutePersistenceWorker(ModuleManager 
moduleManager) {
+        super(moduleManager);
+    }
+
+    @Override public int id() {
+        return 
AlarmWorkerIdDefine.APPLICATION_METRIC_ALARM_LIST_MINUTE_PERSISTENCE_WORKER_ID;
+    }
+
+    @Override protected boolean needMergeDBData() {
+        return true;
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override protected IPersistenceDAO<?, ?, ApplicationAlarmList> 
persistenceDAO() {
+        return 
getModuleManager().find(StorageModule.NAME).getService(IApplicationAlarmListMinutePersistenceDAO.class);
+    }
+
+    public static class Factory extends 
PersistenceWorkerProvider<ApplicationAlarmList, 
ApplicationMetricAlarmListMinutePersistenceWorker> {
+        public Factory(ModuleManager moduleManager) {
+            super(moduleManager);
+        }
+
+        @Override public ApplicationMetricAlarmListMinutePersistenceWorker 
workerInstance(ModuleManager moduleManager) {
+            return new 
ApplicationMetricAlarmListMinutePersistenceWorker(moduleManager);
+        }
+
+        @Override
+        public int queueSize() {
+            return 1024;
+        }
+    }
+}
diff --git 
a/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListMonthPersistenceWorker.java
 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListMonthPersistenceWorker.java
new file mode 100644
index 000000000..fb8534e77
--- /dev/null
+++ 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListMonthPersistenceWorker.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package 
org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.application;
+
+import 
org.apache.skywalking.apm.collector.analysis.alarm.define.graph.AlarmWorkerIdDefine;
+import 
org.apache.skywalking.apm.collector.analysis.worker.model.impl.PersistenceWorker;
+import 
org.apache.skywalking.apm.collector.analysis.worker.model.impl.PersistenceWorkerProvider;
+import org.apache.skywalking.apm.collector.core.module.ModuleManager;
+import org.apache.skywalking.apm.collector.storage.StorageModule;
+import org.apache.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListMonthPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationMetricAlarmListMonthPersistenceWorker extends 
PersistenceWorker<ApplicationAlarmList> {
+
+    public ApplicationMetricAlarmListMonthPersistenceWorker(ModuleManager 
moduleManager) {
+        super(moduleManager);
+    }
+
+    @Override public int id() {
+        return 
AlarmWorkerIdDefine.APPLICATION_METRIC_ALARM_LIST_MONTH_PERSISTENCE_WORKER_ID;
+    }
+
+    @Override protected boolean needMergeDBData() {
+        return true;
+    }
+
+    @SuppressWarnings("unchecked")
+    @Override protected IPersistenceDAO<?, ?, ApplicationAlarmList> 
persistenceDAO() {
+        return 
getModuleManager().find(StorageModule.NAME).getService(IApplicationAlarmListMonthPersistenceDAO.class);
+    }
+
+    public static class Factory extends 
PersistenceWorkerProvider<ApplicationAlarmList, 
ApplicationMetricAlarmListMonthPersistenceWorker> {
+        public Factory(ModuleManager moduleManager) {
+            super(moduleManager);
+        }
+
+        @Override public ApplicationMetricAlarmListMonthPersistenceWorker 
workerInstance(ModuleManager moduleManager) {
+            return new 
ApplicationMetricAlarmListMonthPersistenceWorker(moduleManager);
+        }
+
+        @Override
+        public int queueSize() {
+            return 1024;
+        }
+    }
+}
diff --git 
a/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListMonthTransformNode.java
 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListMonthTransformNode.java
new file mode 100644
index 000000000..9bfb20413
--- /dev/null
+++ 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmListMonthTransformNode.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package 
org.apache.skywalking.apm.collector.analysis.alarm.provider.worker.application;
+
+import 
org.apache.skywalking.apm.collector.analysis.alarm.define.graph.AlarmWorkerIdDefine;
+import org.apache.skywalking.apm.collector.core.graph.Next;
+import org.apache.skywalking.apm.collector.core.graph.NodeProcessor;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import org.apache.skywalking.apm.collector.core.util.TimeBucketUtils;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationMetricAlarmListMonthTransformNode implements 
NodeProcessor<ApplicationAlarmList, ApplicationAlarmList> {
+
+    @Override public int id() {
+        return 
AlarmWorkerIdDefine.APPLICATION_METRIC_ALARM_LIST_MONTH_TRANSFORM_NODE_ID;
+    }
+
+    @Override
+    public void process(ApplicationAlarmList applicationAlarmList, 
Next<ApplicationAlarmList> next) {
+        long timeBucket = 
TimeBucketUtils.INSTANCE.minuteToMonth(applicationAlarmList.getTimeBucket());
+
+        ApplicationAlarmList newApplicationAlarmList = 
ApplicationMetricAlarmListCopy.copy(applicationAlarmList);
+        newApplicationAlarmList.setId(String.valueOf(timeBucket) + 
Const.ID_SPLIT + applicationAlarmList.getMetricId());
+        newApplicationAlarmList.setTimeBucket(timeBucket);
+        next.execute(newApplicationAlarmList);
+    }
+}
diff --git 
a/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmToListNodeProcessor.java
 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmToListNodeProcessor.java
index fbebedf06..de9e4a67f 100644
--- 
a/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmToListNodeProcessor.java
+++ 
b/apm-collector/apm-collector-analysis/analysis-alarm/alarm-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/alarm/provider/worker/application/ApplicationMetricAlarmToListNodeProcessor.java
@@ -35,12 +35,15 @@
     }
 
     @Override public void process(ApplicationAlarm applicationAlarm, 
Next<ApplicationAlarmList> next) {
-        String id = applicationAlarm.getLastTimeBucket() + Const.ID_SPLIT + 
applicationAlarm.getSourceValue()
+        String metricId = applicationAlarm.getSourceValue()
             + Const.ID_SPLIT + applicationAlarm.getAlarmType()
             + Const.ID_SPLIT + applicationAlarm.getApplicationId();
 
+        String id = applicationAlarm.getLastTimeBucket() + Const.ID_SPLIT + 
metricId;
+
         ApplicationAlarmList applicationAlarmList = new ApplicationAlarmList();
         applicationAlarmList.setId(id);
+        applicationAlarmList.setMetricId(metricId);
         
applicationAlarmList.setApplicationId(applicationAlarm.getApplicationId());
         applicationAlarmList.setSourceValue(applicationAlarm.getSourceValue());
         applicationAlarmList.setAlarmType(applicationAlarm.getAlarmType());
diff --git 
a/apm-collector/apm-collector-analysis/analysis-metric/metric-define/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/define/graph/MetricWorkerIdDefine.java
 
b/apm-collector/apm-collector-analysis/analysis-metric/metric-define/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/define/graph/MetricWorkerIdDefine.java
index 80e6d31c5..1b78839b0 100644
--- 
a/apm-collector/apm-collector-analysis/analysis-metric/metric-define/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/define/graph/MetricWorkerIdDefine.java
+++ 
b/apm-collector/apm-collector-analysis/analysis-metric/metric-define/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/define/graph/MetricWorkerIdDefine.java
@@ -52,16 +52,6 @@
     public static final int 
APPLICATION_REFERENCE_MONTH_METRIC_PERSISTENCE_WORKER_ID = 4037;
     public static final int 
APPLICATION_REFERENCE_MONTH_METRIC_TRANSFORM_NODE_ID = 4038;
 
-    public static final int SERVICE_MAPPING_MINUTE_AGGREGATION_WORKER_ID = 
4040;
-    public static final int SERVICE_MAPPING_MINUTE_REMOTE_WORKER_ID = 4041;
-    public static final int SERVICE_MAPPING_MINUTE_PERSISTENCE_WORKER_ID = 
4042;
-    public static final int SERVICE_MAPPING_HOUR_PERSISTENCE_WORKER_ID = 4043;
-    public static final int SERVICE_MAPPING_HOUR_TRANSFORM_NODE_ID = 4044;
-    public static final int SERVICE_MAPPING_DAY_PERSISTENCE_WORKER_ID = 4045;
-    public static final int SERVICE_MAPPING_DAY_TRANSFORM_NODE_ID = 4046;
-    public static final int SERVICE_MAPPING_MONTH_PERSISTENCE_WORKER_ID = 4047;
-    public static final int SERVICE_MAPPING_MONTH_TRANSFORM_NODE_ID = 4048;
-
     public static final int SERVICE_MINUTE_METRIC_AGGREGATION_WORKER_ID = 4400;
     public static final int SERVICE_MINUTE_METRIC_REMOTE_WORKER_ID = 4401;
     public static final int SERVICE_MINUTE_METRIC_PERSISTENCE_WORKER_ID = 4402;
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/StorageModule.java
 
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/StorageModule.java
index 9434ee859..daf060ca5 100644
--- 
a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/StorageModule.java
+++ 
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/StorageModule.java
@@ -30,7 +30,10 @@
 import 
org.apache.skywalking.apm.collector.storage.dao.acp.IApplicationComponentHourPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.dao.acp.IApplicationComponentMinutePersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.dao.acp.IApplicationComponentMonthPersistenceDAO;
-import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListDayPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListHourPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListMinutePersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListMonthPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationReferenceAlarmListPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationReferenceAlarmPersistenceDAO;
@@ -269,6 +272,10 @@ private void addAlarmDAO(List<Class> classes) {
         classes.add(IInstanceAlarmPersistenceDAO.class);
         classes.add(IInstanceAlarmListPersistenceDAO.class);
         classes.add(IApplicationAlarmPersistenceDAO.class);
-        classes.add(IApplicationAlarmListPersistenceDAO.class);
+
+        classes.add(IApplicationAlarmListMinutePersistenceDAO.class);
+        classes.add(IApplicationAlarmListHourPersistenceDAO.class);
+        classes.add(IApplicationAlarmListDayPersistenceDAO.class);
+        classes.add(IApplicationAlarmListMonthPersistenceDAO.class);
     }
 }
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/alarm/IApplicationAlarmListPersistenceDAO.java
 
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/alarm/IApplicationAlarmListDayPersistenceDAO.java
similarity index 86%
rename from 
apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/alarm/IApplicationAlarmListPersistenceDAO.java
rename to 
apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/alarm/IApplicationAlarmListDayPersistenceDAO.java
index a2e83fc36..6e0acea8b 100644
--- 
a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/alarm/IApplicationAlarmListPersistenceDAO.java
+++ 
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/alarm/IApplicationAlarmListDayPersistenceDAO.java
@@ -24,5 +24,5 @@
 /**
  * @author peng-yongsheng
  */
-public interface IApplicationAlarmListPersistenceDAO<Insert, Update, DataImpl 
extends ApplicationAlarmList> extends IPersistenceDAO<Insert, Update, DataImpl> 
{
+public interface IApplicationAlarmListDayPersistenceDAO<Insert, Update, 
DataImpl extends ApplicationAlarmList> extends IPersistenceDAO<Insert, Update, 
DataImpl> {
 }
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/alarm/IApplicationAlarmListHourPersistenceDAO.java
 
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/alarm/IApplicationAlarmListHourPersistenceDAO.java
new file mode 100644
index 000000000..bdf4e1025
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/alarm/IApplicationAlarmListHourPersistenceDAO.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.dao.alarm;
+
+import org.apache.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+
+/**
+ * @author peng-yongsheng
+ */
+public interface IApplicationAlarmListHourPersistenceDAO<Insert, Update, 
DataImpl extends ApplicationAlarmList> extends IPersistenceDAO<Insert, Update, 
DataImpl> {
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/alarm/IApplicationAlarmListMinutePersistenceDAO.java
 
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/alarm/IApplicationAlarmListMinutePersistenceDAO.java
new file mode 100644
index 000000000..077c4a9b3
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/alarm/IApplicationAlarmListMinutePersistenceDAO.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.dao.alarm;
+
+import org.apache.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+
+/**
+ * @author peng-yongsheng
+ */
+public interface IApplicationAlarmListMinutePersistenceDAO<Insert, Update, 
DataImpl extends ApplicationAlarmList> extends IPersistenceDAO<Insert, Update, 
DataImpl> {
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/alarm/IApplicationAlarmListMonthPersistenceDAO.java
 
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/alarm/IApplicationAlarmListMonthPersistenceDAO.java
new file mode 100644
index 000000000..08c0c8170
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/dao/alarm/IApplicationAlarmListMonthPersistenceDAO.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.dao.alarm;
+
+import org.apache.skywalking.apm.collector.storage.base.dao.IPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+
+/**
+ * @author peng-yongsheng
+ */
+public interface IApplicationAlarmListMonthPersistenceDAO<Insert, Update, 
DataImpl extends ApplicationAlarmList> extends IPersistenceDAO<Insert, Update, 
DataImpl> {
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/alarm/ApplicationAlarmList.java
 
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/alarm/ApplicationAlarmList.java
index db8b935c7..2b68ab7d2 100644
--- 
a/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/alarm/ApplicationAlarmList.java
+++ 
b/apm-collector/apm-collector-storage/collector-storage-define/src/main/java/org/apache/skywalking/apm/collector/storage/table/alarm/ApplicationAlarmList.java
@@ -30,6 +30,7 @@
 
     private static final Column[] STRING_COLUMNS = {
         new Column(ApplicationAlarmListTable.COLUMN_ID, new NonOperation()),
+        new Column(ApplicationAlarmListTable.COLUMN_METRIC_ID, new 
NonOperation()),
         new Column(ApplicationAlarmListTable.COLUMN_ALARM_CONTENT, new 
CoverOperation()),
     };
 
@@ -60,11 +61,19 @@ public ApplicationAlarmList() {
     }
 
     @Override public String getMetricId() {
-        return getId();
+        return getDataString(1);
     }
 
     @Override public void setMetricId(String metricId) {
-        setId(metricId);
+        setDataString(1, metricId);
+    }
+
+    public String getAlarmContent() {
+        return getDataString(2);
+    }
+
+    public void setAlarmContent(String alarmContent) {
+        setDataString(2, alarmContent);
     }
 
     public Integer getAlarmType() {
@@ -98,12 +107,4 @@ public Long getTimeBucket() {
     public void setTimeBucket(Long timeBucket) {
         setDataLong(0, timeBucket);
     }
-
-    public String getAlarmContent() {
-        return getDataString(1);
-    }
-
-    public void setAlarmContent(String alarmContent) {
-        setDataString(1, alarmContent);
-    }
 }
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsProvider.java
 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsProvider.java
index 789c9d652..c3dcd91f0 100644
--- 
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsProvider.java
+++ 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/StorageModuleEsProvider.java
@@ -39,7 +39,10 @@
 import 
org.apache.skywalking.apm.collector.storage.dao.acp.IApplicationComponentHourPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.dao.acp.IApplicationComponentMinutePersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.dao.acp.IApplicationComponentMonthPersistenceDAO;
-import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListDayPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListHourPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListMinutePersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListMonthPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationReferenceAlarmListPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationReferenceAlarmPersistenceDAO;
@@ -139,7 +142,10 @@
 import 
org.apache.skywalking.apm.collector.storage.es.dao.acp.ApplicationComponentMinuteEsPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.es.dao.acp.ApplicationComponentMonthEsPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.es.dao.alarm.ApplicationAlarmEsPersistenceDAO;
-import 
org.apache.skywalking.apm.collector.storage.es.dao.alarm.ApplicationAlarmListEsPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.es.dao.alarm.ApplicationAlarmListEsDayPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.es.dao.alarm.ApplicationAlarmListEsHourPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.es.dao.alarm.ApplicationAlarmListEsMinutePersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.es.dao.alarm.ApplicationAlarmListEsMonthPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.es.dao.alarm.ApplicationReferenceAlarmEsPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.es.dao.alarm.ApplicationReferenceAlarmListEsPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.es.dao.alarm.InstanceAlarmEsPersistenceDAO;
@@ -429,6 +435,10 @@ private void registerAlarmDAO() throws 
ServiceNotProvidedException {
         this.registerServiceImplementation(IInstanceAlarmPersistenceDAO.class, 
new InstanceAlarmEsPersistenceDAO(elasticSearchClient));
         
this.registerServiceImplementation(IInstanceAlarmListPersistenceDAO.class, new 
InstanceAlarmListEsPersistenceDAO(elasticSearchClient));
         
this.registerServiceImplementation(IApplicationAlarmPersistenceDAO.class, new 
ApplicationAlarmEsPersistenceDAO(elasticSearchClient));
-        
this.registerServiceImplementation(IApplicationAlarmListPersistenceDAO.class, 
new ApplicationAlarmListEsPersistenceDAO(elasticSearchClient));
+
+        
this.registerServiceImplementation(IApplicationAlarmListMinutePersistenceDAO.class,
 new ApplicationAlarmListEsMinutePersistenceDAO(elasticSearchClient));
+        
this.registerServiceImplementation(IApplicationAlarmListHourPersistenceDAO.class,
 new ApplicationAlarmListEsHourPersistenceDAO(elasticSearchClient));
+        
this.registerServiceImplementation(IApplicationAlarmListDayPersistenceDAO.class,
 new ApplicationAlarmListEsDayPersistenceDAO(elasticSearchClient));
+        
this.registerServiceImplementation(IApplicationAlarmListMonthPersistenceDAO.class,
 new ApplicationAlarmListEsMonthPersistenceDAO(elasticSearchClient));
     }
 }
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/AbstractApplicationAlarmListEsPersistenceDAO.java
 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/AbstractApplicationAlarmListEsPersistenceDAO.java
new file mode 100644
index 000000000..f711d900d
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/AbstractApplicationAlarmListEsPersistenceDAO.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.es.dao.alarm;
+
+import java.util.HashMap;
+import java.util.Map;
+import 
org.apache.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient;
+import 
org.apache.skywalking.apm.collector.storage.es.base.dao.AbstractPersistenceEsDAO;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
+
+/**
+ * @author peng-yongsheng
+ */
+public abstract class AbstractApplicationAlarmListEsPersistenceDAO extends 
AbstractPersistenceEsDAO<ApplicationAlarmList> {
+
+    AbstractApplicationAlarmListEsPersistenceDAO(ElasticSearchClient client) {
+        super(client);
+    }
+
+    @Override protected final String timeBucketColumnNameForDelete() {
+        return ApplicationAlarmListTable.COLUMN_TIME_BUCKET;
+    }
+
+    @Override protected final ApplicationAlarmList 
esDataToStreamData(Map<String, Object> source) {
+        ApplicationAlarmList applicationAlarmList = new ApplicationAlarmList();
+        
applicationAlarmList.setId((String)source.get(ApplicationAlarmListTable.COLUMN_ID));
+        
applicationAlarmList.setMetricId((String)source.get(ApplicationAlarmListTable.COLUMN_METRIC_ID));
+        
applicationAlarmList.setApplicationId(((Number)source.get(ApplicationAlarmListTable.COLUMN_APPLICATION_ID)).intValue());
+        
applicationAlarmList.setSourceValue(((Number)source.get(ApplicationAlarmListTable.COLUMN_SOURCE_VALUE)).intValue());
+
+        
applicationAlarmList.setAlarmType(((Number)source.get(ApplicationAlarmListTable.COLUMN_ALARM_TYPE)).intValue());
+        
applicationAlarmList.setAlarmContent((String)source.get(ApplicationAlarmListTable.COLUMN_ALARM_CONTENT));
+
+        
applicationAlarmList.setTimeBucket(((Number)source.get(ApplicationAlarmListTable.COLUMN_TIME_BUCKET)).longValue());
+        return applicationAlarmList;
+    }
+
+    @Override protected final Map<String, Object> 
esStreamDataToEsData(ApplicationAlarmList streamData) {
+        Map<String, Object> source = new HashMap<>();
+        source.put(ApplicationAlarmListTable.COLUMN_METRIC_ID, 
streamData.getMetricId());
+        source.put(ApplicationAlarmListTable.COLUMN_APPLICATION_ID, 
streamData.getApplicationId());
+        source.put(ApplicationAlarmListTable.COLUMN_SOURCE_VALUE, 
streamData.getSourceValue());
+
+        source.put(ApplicationAlarmListTable.COLUMN_ALARM_TYPE, 
streamData.getAlarmType());
+        source.put(ApplicationAlarmListTable.COLUMN_ALARM_CONTENT, 
streamData.getAlarmContent());
+
+        source.put(ApplicationAlarmListTable.COLUMN_TIME_BUCKET, 
streamData.getTimeBucket());
+        return source;
+    }
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/ApplicationAlarmListEsDayPersistenceDAO.java
 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/ApplicationAlarmListEsDayPersistenceDAO.java
new file mode 100644
index 000000000..5c129768d
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/ApplicationAlarmListEsDayPersistenceDAO.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.es.dao.alarm;
+
+import 
org.apache.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient;
+import org.apache.skywalking.apm.collector.core.storage.TimePyramid;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListDayPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
+import org.elasticsearch.action.index.IndexRequestBuilder;
+import org.elasticsearch.action.update.UpdateRequestBuilder;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationAlarmListEsDayPersistenceDAO extends 
AbstractApplicationAlarmListEsPersistenceDAO implements 
IApplicationAlarmListDayPersistenceDAO<IndexRequestBuilder, 
UpdateRequestBuilder, ApplicationAlarmList> {
+
+    public ApplicationAlarmListEsDayPersistenceDAO(ElasticSearchClient client) 
{
+        super(client);
+    }
+
+    @Override protected String tableName() {
+        return ApplicationAlarmListTable.TABLE + Const.ID_SPLIT + 
TimePyramid.Day.getName();
+    }
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/ApplicationAlarmListEsHourPersistenceDAO.java
 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/ApplicationAlarmListEsHourPersistenceDAO.java
new file mode 100644
index 000000000..3ffd72f32
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/ApplicationAlarmListEsHourPersistenceDAO.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.es.dao.alarm;
+
+import 
org.apache.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient;
+import org.apache.skywalking.apm.collector.core.storage.TimePyramid;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListHourPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
+import org.elasticsearch.action.index.IndexRequestBuilder;
+import org.elasticsearch.action.update.UpdateRequestBuilder;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationAlarmListEsHourPersistenceDAO extends 
AbstractApplicationAlarmListEsPersistenceDAO implements 
IApplicationAlarmListHourPersistenceDAO<IndexRequestBuilder, 
UpdateRequestBuilder, ApplicationAlarmList> {
+
+    public ApplicationAlarmListEsHourPersistenceDAO(ElasticSearchClient 
client) {
+        super(client);
+    }
+
+    @Override protected String tableName() {
+        return ApplicationAlarmListTable.TABLE + Const.ID_SPLIT + 
TimePyramid.Hour.getName();
+    }
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/ApplicationAlarmListEsMinutePersistenceDAO.java
 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/ApplicationAlarmListEsMinutePersistenceDAO.java
new file mode 100644
index 000000000..a2ada3eb6
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/ApplicationAlarmListEsMinutePersistenceDAO.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.es.dao.alarm;
+
+import 
org.apache.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient;
+import org.apache.skywalking.apm.collector.core.storage.TimePyramid;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListMinutePersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
+import org.elasticsearch.action.index.IndexRequestBuilder;
+import org.elasticsearch.action.update.UpdateRequestBuilder;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationAlarmListEsMinutePersistenceDAO extends 
AbstractApplicationAlarmListEsPersistenceDAO implements 
IApplicationAlarmListMinutePersistenceDAO<IndexRequestBuilder, 
UpdateRequestBuilder, ApplicationAlarmList> {
+
+    public ApplicationAlarmListEsMinutePersistenceDAO(ElasticSearchClient 
client) {
+        super(client);
+    }
+
+    @Override protected String tableName() {
+        return ApplicationAlarmListTable.TABLE + Const.ID_SPLIT + 
TimePyramid.Minute.getName();
+    }
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/ApplicationAlarmListEsMonthPersistenceDAO.java
 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/ApplicationAlarmListEsMonthPersistenceDAO.java
new file mode 100644
index 000000000..1599a8f08
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/ApplicationAlarmListEsMonthPersistenceDAO.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.es.dao.alarm;
+
+import 
org.apache.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient;
+import org.apache.skywalking.apm.collector.core.storage.TimePyramid;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListMonthPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
+import org.elasticsearch.action.index.IndexRequestBuilder;
+import org.elasticsearch.action.update.UpdateRequestBuilder;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationAlarmListEsMonthPersistenceDAO extends 
AbstractApplicationAlarmListEsPersistenceDAO implements 
IApplicationAlarmListMonthPersistenceDAO<IndexRequestBuilder, 
UpdateRequestBuilder, ApplicationAlarmList> {
+
+    public ApplicationAlarmListEsMonthPersistenceDAO(ElasticSearchClient 
client) {
+        super(client);
+    }
+
+    @Override protected String tableName() {
+        return ApplicationAlarmListTable.TABLE + Const.ID_SPLIT + 
TimePyramid.Month.getName();
+    }
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/ApplicationAlarmListEsPersistenceDAO.java
 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/ApplicationAlarmListEsPersistenceDAO.java
deleted file mode 100644
index 92b635727..000000000
--- 
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/dao/alarm/ApplicationAlarmListEsPersistenceDAO.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.skywalking.apm.collector.storage.es.dao.alarm;
-
-import java.util.HashMap;
-import java.util.Map;
-import 
org.apache.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient;
-import org.apache.skywalking.apm.collector.core.util.TimeBucketUtils;
-import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListPersistenceDAO;
-import org.apache.skywalking.apm.collector.storage.es.base.dao.EsDAO;
-import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
-import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
-import org.elasticsearch.action.get.GetResponse;
-import org.elasticsearch.action.index.IndexRequestBuilder;
-import org.elasticsearch.action.update.UpdateRequestBuilder;
-import org.elasticsearch.index.query.QueryBuilders;
-import org.elasticsearch.index.reindex.BulkByScrollResponse;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author peng-yongsheng
- */
-public class ApplicationAlarmListEsPersistenceDAO extends EsDAO implements 
IApplicationAlarmListPersistenceDAO<IndexRequestBuilder, UpdateRequestBuilder, 
ApplicationAlarmList> {
-
-    private final Logger logger = 
LoggerFactory.getLogger(ApplicationAlarmListEsPersistenceDAO.class);
-
-    public ApplicationAlarmListEsPersistenceDAO(ElasticSearchClient client) {
-        super(client);
-    }
-
-    @Override public ApplicationAlarmList get(String id) {
-        GetResponse getResponse = 
getClient().prepareGet(ApplicationAlarmListTable.TABLE, id).get();
-        if (getResponse.isExists()) {
-            ApplicationAlarmList applicationAlarmList = new 
ApplicationAlarmList();
-            applicationAlarmList.setId(id);
-            Map<String, Object> source = getResponse.getSource();
-            
applicationAlarmList.setApplicationId(((Number)source.get(ApplicationAlarmListTable.COLUMN_APPLICATION_ID)).intValue());
-            
applicationAlarmList.setSourceValue(((Number)source.get(ApplicationAlarmListTable.COLUMN_SOURCE_VALUE)).intValue());
-
-            
applicationAlarmList.setAlarmType(((Number)source.get(ApplicationAlarmListTable.COLUMN_ALARM_TYPE)).intValue());
-            
applicationAlarmList.setAlarmContent((String)source.get(ApplicationAlarmListTable.COLUMN_ALARM_CONTENT));
-
-            
applicationAlarmList.setTimeBucket(((Number)source.get(ApplicationAlarmListTable.COLUMN_TIME_BUCKET)).longValue());
-            return applicationAlarmList;
-        } else {
-            return null;
-        }
-    }
-
-    @Override public IndexRequestBuilder 
prepareBatchInsert(ApplicationAlarmList data) {
-        Map<String, Object> source = new HashMap<>();
-        source.put(ApplicationAlarmListTable.COLUMN_APPLICATION_ID, 
data.getApplicationId());
-        source.put(ApplicationAlarmListTable.COLUMN_SOURCE_VALUE, 
data.getSourceValue());
-
-        source.put(ApplicationAlarmListTable.COLUMN_ALARM_TYPE, 
data.getAlarmType());
-        source.put(ApplicationAlarmListTable.COLUMN_ALARM_CONTENT, 
data.getAlarmContent());
-
-        source.put(ApplicationAlarmListTable.COLUMN_TIME_BUCKET, 
data.getTimeBucket());
-
-        return getClient().prepareIndex(ApplicationAlarmListTable.TABLE, 
data.getId()).setSource(source);
-    }
-
-    @Override public UpdateRequestBuilder 
prepareBatchUpdate(ApplicationAlarmList data) {
-        Map<String, Object> source = new HashMap<>();
-        source.put(ApplicationAlarmListTable.COLUMN_APPLICATION_ID, 
data.getApplicationId());
-        source.put(ApplicationAlarmListTable.COLUMN_SOURCE_VALUE, 
data.getSourceValue());
-
-        source.put(ApplicationAlarmListTable.COLUMN_ALARM_TYPE, 
data.getAlarmType());
-        source.put(ApplicationAlarmListTable.COLUMN_ALARM_CONTENT, 
data.getAlarmContent());
-
-        source.put(ApplicationAlarmListTable.COLUMN_TIME_BUCKET, 
data.getTimeBucket());
-
-        return getClient().prepareUpdate(ApplicationAlarmListTable.TABLE, 
data.getId()).setDoc(source);
-    }
-
-    @Override public void deleteHistory(Long startTimestamp, Long 
endTimestamp) {
-        long startTimeBucket = 
TimeBucketUtils.INSTANCE.getMinuteTimeBucket(startTimestamp);
-        long endTimeBucket = 
TimeBucketUtils.INSTANCE.getMinuteTimeBucket(endTimestamp);
-        BulkByScrollResponse response = getClient().prepareDelete()
-            
.filter(QueryBuilders.rangeQuery(ApplicationAlarmListTable.COLUMN_TIME_BUCKET).gte(startTimeBucket).lte(endTimeBucket))
-            .source(ApplicationAlarmListTable.TABLE)
-            .get();
-
-        long deleted = response.getDeleted();
-        logger.info("Delete {} rows history from {} index.", deleted, 
ApplicationAlarmListTable.TABLE);
-    }
-}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/ApplicationAlarmListEsTableDefine.java
 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/AbstractApplicationAlarmListEsTableDefine.java
similarity index 85%
rename from 
apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/ApplicationAlarmListEsTableDefine.java
rename to 
apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/AbstractApplicationAlarmListEsTableDefine.java
index d89582079..408328f46 100644
--- 
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/ApplicationAlarmListEsTableDefine.java
+++ 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/AbstractApplicationAlarmListEsTableDefine.java
@@ -25,24 +25,18 @@
 /**
  * @author peng-yongsheng
  */
-public class ApplicationAlarmListEsTableDefine extends 
ElasticSearchTableDefine {
+public abstract class AbstractApplicationAlarmListEsTableDefine extends 
ElasticSearchTableDefine {
 
-    public ApplicationAlarmListEsTableDefine() {
-        super(ApplicationAlarmListTable.TABLE);
-    }
-
-    @Override public int refreshInterval() {
-        return 2;
+    AbstractApplicationAlarmListEsTableDefine(String name) {
+        super(name);
     }
 
     @Override public void initialize() {
+        addColumn(new 
ElasticSearchColumnDefine(ApplicationAlarmListTable.COLUMN_METRIC_ID, 
ElasticSearchColumnDefine.Type.Keyword.name()));
+        addColumn(new 
ElasticSearchColumnDefine(ApplicationAlarmListTable.COLUMN_ALARM_CONTENT, 
ElasticSearchColumnDefine.Type.Text.name()));
         addColumn(new 
ElasticSearchColumnDefine(ApplicationAlarmListTable.COLUMN_APPLICATION_ID, 
ElasticSearchColumnDefine.Type.Integer.name()));
-
         addColumn(new 
ElasticSearchColumnDefine(ApplicationAlarmListTable.COLUMN_SOURCE_VALUE, 
ElasticSearchColumnDefine.Type.Integer.name()));
         addColumn(new 
ElasticSearchColumnDefine(ApplicationAlarmListTable.COLUMN_ALARM_TYPE, 
ElasticSearchColumnDefine.Type.Integer.name()));
-
-        addColumn(new 
ElasticSearchColumnDefine(ApplicationAlarmListTable.COLUMN_ALARM_CONTENT, 
ElasticSearchColumnDefine.Type.Text.name()));
-
         addColumn(new 
ElasticSearchColumnDefine(ApplicationAlarmListTable.COLUMN_TIME_BUCKET, 
ElasticSearchColumnDefine.Type.Long.name()));
     }
 }
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/ApplicationAlarmListDayEsTableDefine.java
 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/ApplicationAlarmListDayEsTableDefine.java
new file mode 100644
index 000000000..b27c60f88
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/ApplicationAlarmListDayEsTableDefine.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.es.define.alarm;
+
+import org.apache.skywalking.apm.collector.core.storage.TimePyramid;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationAlarmListDayEsTableDefine extends 
AbstractApplicationAlarmListEsTableDefine {
+
+    public ApplicationAlarmListDayEsTableDefine() {
+        super(ApplicationAlarmListTable.TABLE + Const.ID_SPLIT + 
TimePyramid.Day.getName());
+    }
+
+    @Override public int refreshInterval() {
+        return 2;
+    }
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/ApplicationAlarmListHourEsTableDefine.java
 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/ApplicationAlarmListHourEsTableDefine.java
new file mode 100644
index 000000000..d5b20981a
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/ApplicationAlarmListHourEsTableDefine.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.es.define.alarm;
+
+import org.apache.skywalking.apm.collector.core.storage.TimePyramid;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationAlarmListHourEsTableDefine extends 
AbstractApplicationAlarmListEsTableDefine {
+
+    public ApplicationAlarmListHourEsTableDefine() {
+        super(ApplicationAlarmListTable.TABLE + Const.ID_SPLIT + 
TimePyramid.Hour.getName());
+    }
+
+    @Override public int refreshInterval() {
+        return 2;
+    }
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/ApplicationAlarmListMinuteEsTableDefine.java
 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/ApplicationAlarmListMinuteEsTableDefine.java
new file mode 100644
index 000000000..6eb65ebab
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/ApplicationAlarmListMinuteEsTableDefine.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.es.define.alarm;
+
+import org.apache.skywalking.apm.collector.core.storage.TimePyramid;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationAlarmListMinuteEsTableDefine extends 
AbstractApplicationAlarmListEsTableDefine {
+
+    public ApplicationAlarmListMinuteEsTableDefine() {
+        super(ApplicationAlarmListTable.TABLE + Const.ID_SPLIT + 
TimePyramid.Minute.getName());
+    }
+
+    @Override public int refreshInterval() {
+        return 2;
+    }
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/ApplicationAlarmListMonthEsTableDefine.java
 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/ApplicationAlarmListMonthEsTableDefine.java
new file mode 100644
index 000000000..8d84017fb
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/java/org/apache/skywalking/apm/collector/storage/es/define/alarm/ApplicationAlarmListMonthEsTableDefine.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.es.define.alarm;
+
+import org.apache.skywalking.apm.collector.core.storage.TimePyramid;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationAlarmListMonthEsTableDefine extends 
AbstractApplicationAlarmListEsTableDefine {
+
+    public ApplicationAlarmListMonthEsTableDefine() {
+        super(ApplicationAlarmListTable.TABLE + Const.ID_SPLIT + 
TimePyramid.Month.getName());
+    }
+
+    @Override public int refreshInterval() {
+        return 2;
+    }
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/resources/META-INF/defines/storage.define
 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/resources/META-INF/defines/storage.define
index 725a4ceef..9b2442521 100644
--- 
a/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/resources/META-INF/defines/storage.define
+++ 
b/apm-collector/apm-collector-storage/collector-storage-es-provider/src/main/resources/META-INF/defines/storage.define
@@ -53,7 +53,12 @@ 
org.apache.skywalking.apm.collector.storage.es.define.SegmentEsTableDefine
 
org.apache.skywalking.apm.collector.storage.es.define.SegmentDurationEsTableDefine
 
 
org.apache.skywalking.apm.collector.storage.es.define.alarm.ApplicationAlarmEsTableDefine
-org.apache.skywalking.apm.collector.storage.es.define.alarm.ApplicationAlarmListEsTableDefine
+
+org.apache.skywalking.apm.collector.storage.es.define.alarm.ApplicationAlarmListMinuteEsTableDefine
+org.apache.skywalking.apm.collector.storage.es.define.alarm.ApplicationAlarmListHourEsTableDefine
+org.apache.skywalking.apm.collector.storage.es.define.alarm.ApplicationAlarmListDayEsTableDefine
+org.apache.skywalking.apm.collector.storage.es.define.alarm.ApplicationAlarmListMonthEsTableDefine
+
 
org.apache.skywalking.apm.collector.storage.es.define.alarm.ApplicationReferenceAlarmEsTableDefine
 
org.apache.skywalking.apm.collector.storage.es.define.alarm.ApplicationReferenceAlarmListEsTableDefine
 
org.apache.skywalking.apm.collector.storage.es.define.alarm.InstanceAlarmEsTableDefine
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/StorageModuleH2Provider.java
 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/StorageModuleH2Provider.java
index 55c3db8a0..da443c106 100644
--- 
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/StorageModuleH2Provider.java
+++ 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/StorageModuleH2Provider.java
@@ -35,7 +35,10 @@
 import 
org.apache.skywalking.apm.collector.storage.dao.acp.IApplicationComponentHourPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.dao.acp.IApplicationComponentMinutePersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.dao.acp.IApplicationComponentMonthPersistenceDAO;
-import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListDayPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListHourPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListMinutePersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListMonthPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationReferenceAlarmListPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationReferenceAlarmPersistenceDAO;
@@ -135,7 +138,10 @@
 import 
org.apache.skywalking.apm.collector.storage.h2.dao.acp.ApplicationComponentMinuteH2PersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.h2.dao.acp.ApplicationComponentMonthH2PersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.h2.dao.alarm.ApplicationAlarmH2PersistenceDAO;
-import 
org.apache.skywalking.apm.collector.storage.h2.dao.alarm.ApplicationAlarmListH2PersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.h2.dao.alarm.ApplicationAlarmListH2DayPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.h2.dao.alarm.ApplicationAlarmListH2HourPersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.h2.dao.alarm.ApplicationAlarmListH2MinutePersistenceDAO;
+import 
org.apache.skywalking.apm.collector.storage.h2.dao.alarm.ApplicationAlarmListH2MonthPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.h2.dao.alarm.ApplicationReferenceAlarmH2PersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.h2.dao.alarm.ApplicationReferenceAlarmListH2PersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.h2.dao.alarm.InstanceAlarmH2PersistenceDAO;
@@ -405,6 +411,10 @@ private void registerAlarmDAO() throws 
ServiceNotProvidedException {
         this.registerServiceImplementation(IInstanceAlarmPersistenceDAO.class, 
new InstanceAlarmH2PersistenceDAO(h2Client));
         
this.registerServiceImplementation(IInstanceAlarmListPersistenceDAO.class, new 
InstanceAlarmListH2PersistenceDAO(h2Client));
         
this.registerServiceImplementation(IApplicationAlarmPersistenceDAO.class, new 
ApplicationAlarmH2PersistenceDAO(h2Client));
-        
this.registerServiceImplementation(IApplicationAlarmListPersistenceDAO.class, 
new ApplicationAlarmListH2PersistenceDAO(h2Client));
+
+        
this.registerServiceImplementation(IApplicationAlarmListMinutePersistenceDAO.class,
 new ApplicationAlarmListH2MinutePersistenceDAO(h2Client));
+        
this.registerServiceImplementation(IApplicationAlarmListHourPersistenceDAO.class,
 new ApplicationAlarmListH2HourPersistenceDAO(h2Client));
+        
this.registerServiceImplementation(IApplicationAlarmListDayPersistenceDAO.class,
 new ApplicationAlarmListH2DayPersistenceDAO(h2Client));
+        
this.registerServiceImplementation(IApplicationAlarmListMonthPersistenceDAO.class,
 new ApplicationAlarmListH2MonthPersistenceDAO(h2Client));
     }
 }
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/ApplicationAlarmListH2PersistenceDAO.java
 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/AbstractApplicationAlarmListH2PersistenceDAO.java
similarity index 78%
rename from 
apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/ApplicationAlarmListH2PersistenceDAO.java
rename to 
apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/AbstractApplicationAlarmListH2PersistenceDAO.java
index 700698e42..e99f70c1d 100644
--- 
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/ApplicationAlarmListH2PersistenceDAO.java
+++ 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/AbstractApplicationAlarmListH2PersistenceDAO.java
@@ -23,28 +23,23 @@
 import java.util.HashMap;
 import java.util.Map;
 import org.apache.skywalking.apm.collector.client.h2.H2Client;
-import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListPersistenceDAO;
 import 
org.apache.skywalking.apm.collector.storage.h2.base.dao.AbstractPersistenceH2DAO;
-import org.apache.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity;
 import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
 import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
 
 /**
  * @author peng-yongsheng
  */
-public class ApplicationAlarmListH2PersistenceDAO extends 
AbstractPersistenceH2DAO<ApplicationAlarmList> implements 
IApplicationAlarmListPersistenceDAO<H2SqlEntity, H2SqlEntity, 
ApplicationAlarmList> {
+public abstract class AbstractApplicationAlarmListH2PersistenceDAO extends 
AbstractPersistenceH2DAO<ApplicationAlarmList> {
 
-    public ApplicationAlarmListH2PersistenceDAO(H2Client client) {
+    public AbstractApplicationAlarmListH2PersistenceDAO(H2Client client) {
         super(client);
     }
 
-    @Override protected String tableName() {
-        return ApplicationAlarmListTable.TABLE;
-    }
-
-    @Override protected ApplicationAlarmList h2DataToStreamData(ResultSet 
resultSet) throws SQLException {
+    @Override protected final ApplicationAlarmList 
h2DataToStreamData(ResultSet resultSet) throws SQLException {
         ApplicationAlarmList applicationAlarmList = new ApplicationAlarmList();
         
applicationAlarmList.setId(resultSet.getString(ApplicationAlarmListTable.COLUMN_ID));
+        
applicationAlarmList.setMetricId(resultSet.getString(ApplicationAlarmListTable.COLUMN_METRIC_ID));
         
applicationAlarmList.setSourceValue(resultSet.getInt(ApplicationAlarmListTable.COLUMN_SOURCE_VALUE));
 
         
applicationAlarmList.setAlarmType(resultSet.getInt(ApplicationAlarmListTable.COLUMN_ALARM_TYPE));
@@ -57,8 +52,9 @@ public ApplicationAlarmListH2PersistenceDAO(H2Client client) {
         return applicationAlarmList;
     }
 
-    @Override protected Map<String, Object> 
streamDataToH2Data(ApplicationAlarmList streamData) {
+    @Override protected final Map<String, Object> 
streamDataToH2Data(ApplicationAlarmList streamData) {
         Map<String, Object> source = new HashMap<>();
+        source.put(ApplicationAlarmListTable.COLUMN_METRIC_ID, 
streamData.getMetricId());
         source.put(ApplicationAlarmListTable.COLUMN_SOURCE_VALUE, 
streamData.getSourceValue());
 
         source.put(ApplicationAlarmListTable.COLUMN_ALARM_TYPE, 
streamData.getAlarmType());
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/ApplicationAlarmListH2DayPersistenceDAO.java
 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/ApplicationAlarmListH2DayPersistenceDAO.java
new file mode 100644
index 000000000..c4aafee37
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/ApplicationAlarmListH2DayPersistenceDAO.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.h2.dao.alarm;
+
+import org.apache.skywalking.apm.collector.client.h2.H2Client;
+import org.apache.skywalking.apm.collector.core.storage.TimePyramid;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListDayPersistenceDAO;
+import org.apache.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationAlarmListH2DayPersistenceDAO extends 
AbstractApplicationAlarmListH2PersistenceDAO implements 
IApplicationAlarmListDayPersistenceDAO<H2SqlEntity, H2SqlEntity, 
ApplicationAlarmList> {
+
+    public ApplicationAlarmListH2DayPersistenceDAO(H2Client client) {
+        super(client);
+    }
+
+    @Override protected String tableName() {
+        return ApplicationAlarmListTable.TABLE + Const.ID_SPLIT + 
TimePyramid.Day.getName();
+    }
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/ApplicationAlarmListH2HourPersistenceDAO.java
 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/ApplicationAlarmListH2HourPersistenceDAO.java
new file mode 100644
index 000000000..7653b1ef5
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/ApplicationAlarmListH2HourPersistenceDAO.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.h2.dao.alarm;
+
+import org.apache.skywalking.apm.collector.client.h2.H2Client;
+import org.apache.skywalking.apm.collector.core.storage.TimePyramid;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListHourPersistenceDAO;
+import org.apache.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationAlarmListH2HourPersistenceDAO extends 
AbstractApplicationAlarmListH2PersistenceDAO implements 
IApplicationAlarmListHourPersistenceDAO<H2SqlEntity, H2SqlEntity, 
ApplicationAlarmList> {
+
+    public ApplicationAlarmListH2HourPersistenceDAO(H2Client client) {
+        super(client);
+    }
+
+    @Override protected String tableName() {
+        return ApplicationAlarmListTable.TABLE + Const.ID_SPLIT + 
TimePyramid.Hour.getName();
+    }
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/ApplicationAlarmListH2MinutePersistenceDAO.java
 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/ApplicationAlarmListH2MinutePersistenceDAO.java
new file mode 100644
index 000000000..6ae540d9a
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/ApplicationAlarmListH2MinutePersistenceDAO.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.h2.dao.alarm;
+
+import org.apache.skywalking.apm.collector.client.h2.H2Client;
+import org.apache.skywalking.apm.collector.core.storage.TimePyramid;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListMinutePersistenceDAO;
+import org.apache.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationAlarmListH2MinutePersistenceDAO extends 
AbstractApplicationAlarmListH2PersistenceDAO implements 
IApplicationAlarmListMinutePersistenceDAO<H2SqlEntity, H2SqlEntity, 
ApplicationAlarmList> {
+
+    public ApplicationAlarmListH2MinutePersistenceDAO(H2Client client) {
+        super(client);
+    }
+
+    @Override protected String tableName() {
+        return ApplicationAlarmListTable.TABLE + Const.ID_SPLIT + 
TimePyramid.Minute.getName();
+    }
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/ApplicationAlarmListH2MonthPersistenceDAO.java
 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/ApplicationAlarmListH2MonthPersistenceDAO.java
new file mode 100644
index 000000000..bc09f0b6c
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/dao/alarm/ApplicationAlarmListH2MonthPersistenceDAO.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.h2.dao.alarm;
+
+import org.apache.skywalking.apm.collector.client.h2.H2Client;
+import org.apache.skywalking.apm.collector.core.storage.TimePyramid;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import 
org.apache.skywalking.apm.collector.storage.dao.alarm.IApplicationAlarmListMonthPersistenceDAO;
+import org.apache.skywalking.apm.collector.storage.h2.base.define.H2SqlEntity;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmList;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationAlarmListH2MonthPersistenceDAO extends 
AbstractApplicationAlarmListH2PersistenceDAO implements 
IApplicationAlarmListMonthPersistenceDAO<H2SqlEntity, H2SqlEntity, 
ApplicationAlarmList> {
+
+    public ApplicationAlarmListH2MonthPersistenceDAO(H2Client client) {
+        super(client);
+    }
+
+    @Override protected String tableName() {
+        return ApplicationAlarmListTable.TABLE + Const.ID_SPLIT + 
TimePyramid.Month.getName();
+    }
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/ApplicationAlarmListH2TableDefine.java
 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/AbstractApplicationAlarmListH2TableDefine.java
similarity index 91%
rename from 
apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/ApplicationAlarmListH2TableDefine.java
rename to 
apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/AbstractApplicationAlarmListH2TableDefine.java
index e54b7af13..65bc8902d 100644
--- 
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/ApplicationAlarmListH2TableDefine.java
+++ 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/AbstractApplicationAlarmListH2TableDefine.java
@@ -25,10 +25,10 @@
 /**
  * @author peng-yongsheng
  */
-public class ApplicationAlarmListH2TableDefine extends H2TableDefine {
+public abstract class AbstractApplicationAlarmListH2TableDefine extends 
H2TableDefine {
 
-    public ApplicationAlarmListH2TableDefine() {
-        super(ApplicationAlarmListTable.TABLE);
+    AbstractApplicationAlarmListH2TableDefine(String name) {
+        super(name);
     }
 
     @Override public void initialize() {
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/ApplicationAlarmListDayH2TableDefine.java
 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/ApplicationAlarmListDayH2TableDefine.java
new file mode 100644
index 000000000..2d79d633b
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/ApplicationAlarmListDayH2TableDefine.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.h2.define.alarm;
+
+import org.apache.skywalking.apm.collector.core.storage.TimePyramid;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationAlarmListDayH2TableDefine extends 
AbstractApplicationAlarmListH2TableDefine {
+
+    public ApplicationAlarmListDayH2TableDefine() {
+        super(ApplicationAlarmListTable.TABLE + Const.ID_SPLIT + 
TimePyramid.Day.getName());
+    }
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/ApplicationAlarmListHourH2TableDefine.java
 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/ApplicationAlarmListHourH2TableDefine.java
new file mode 100644
index 000000000..f1e0242bf
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/ApplicationAlarmListHourH2TableDefine.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.h2.define.alarm;
+
+import org.apache.skywalking.apm.collector.core.storage.TimePyramid;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationAlarmListHourH2TableDefine extends 
AbstractApplicationAlarmListH2TableDefine {
+
+    public ApplicationAlarmListHourH2TableDefine() {
+        super(ApplicationAlarmListTable.TABLE + Const.ID_SPLIT + 
TimePyramid.Hour.getName());
+    }
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/ApplicationAlarmListMinuteH2TableDefine.java
 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/ApplicationAlarmListMinuteH2TableDefine.java
new file mode 100644
index 000000000..d69724ad5
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/ApplicationAlarmListMinuteH2TableDefine.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.h2.define.alarm;
+
+import org.apache.skywalking.apm.collector.core.storage.TimePyramid;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationAlarmListMinuteH2TableDefine extends 
AbstractApplicationAlarmListH2TableDefine {
+
+    public ApplicationAlarmListMinuteH2TableDefine() {
+        super(ApplicationAlarmListTable.TABLE + Const.ID_SPLIT + 
TimePyramid.Minute.getName());
+    }
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/ApplicationAlarmListMonthH2TableDefine.java
 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/ApplicationAlarmListMonthH2TableDefine.java
new file mode 100644
index 000000000..5c4e294db
--- /dev/null
+++ 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/java/org/apache/skywalking/apm/collector/storage/h2/define/alarm/ApplicationAlarmListMonthH2TableDefine.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.storage.h2.define.alarm;
+
+import org.apache.skywalking.apm.collector.core.storage.TimePyramid;
+import org.apache.skywalking.apm.collector.core.util.Const;
+import 
org.apache.skywalking.apm.collector.storage.table.alarm.ApplicationAlarmListTable;
+
+/**
+ * @author peng-yongsheng
+ */
+public class ApplicationAlarmListMonthH2TableDefine extends 
AbstractApplicationAlarmListH2TableDefine {
+
+    public ApplicationAlarmListMonthH2TableDefine() {
+        super(ApplicationAlarmListTable.TABLE + Const.ID_SPLIT + 
TimePyramid.Month.getName());
+    }
+}
diff --git 
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/resources/META-INF/defines/storage.define
 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/resources/META-INF/defines/storage.define
index fdb2fd844..b99dbd23e 100644
--- 
a/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/resources/META-INF/defines/storage.define
+++ 
b/apm-collector/apm-collector-storage/collector-storage-h2-provider/src/main/resources/META-INF/defines/storage.define
@@ -77,7 +77,12 @@ 
org.apache.skywalking.apm.collector.storage.h2.define.srmp.ServiceReferenceDayMe
 
org.apache.skywalking.apm.collector.storage.h2.define.srmp.ServiceReferenceMonthMetricH2TableDefine
 
 
org.apache.skywalking.apm.collector.storage.h2.define.alarm.ApplicationAlarmH2TableDefine
-org.apache.skywalking.apm.collector.storage.h2.define.alarm.ApplicationAlarmListH2TableDefine
+
+org.apache.skywalking.apm.collector.storage.h2.define.alarm.ApplicationAlarmListMinuteH2TableDefine
+org.apache.skywalking.apm.collector.storage.h2.define.alarm.ApplicationAlarmListHourH2TableDefine
+org.apache.skywalking.apm.collector.storage.h2.define.alarm.ApplicationAlarmListDayH2TableDefine
+org.apache.skywalking.apm.collector.storage.h2.define.alarm.ApplicationAlarmListMonthH2TableDefine
+
 
org.apache.skywalking.apm.collector.storage.h2.define.alarm.ApplicationReferenceAlarmH2TableDefine
 
org.apache.skywalking.apm.collector.storage.h2.define.alarm.ApplicationReferenceAlarmListH2TableDefine
 


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to