diff --git a/oap-server/server-alarm-plugin/pom.xml b/oap-server/server-alarm-plugin/pom.xml
index 7848c6afe..14fea192e 100644
--- a/oap-server/server-alarm-plugin/pom.xml
+++ b/oap-server/server-alarm-plugin/pom.xml
@@ -32,8 +32,12 @@
org.apache.skywalking
server-core
- 6.0.0-alpha-SNAPSHOT
- compile
+ ${project.version}
+
+
+ org.apache.skywalking
+ library-util
+ ${project.version}
diff --git a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRule.java b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRule.java
index f2a96fa32..d3d1d628a 100644
--- a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRule.java
+++ b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/RunningRule.java
@@ -31,6 +31,7 @@ import org.apache.skywalking.oap.server.core.analysis.indicator.Indicator;
import org.apache.skywalking.oap.server.core.analysis.indicator.IntValueHolder;
import org.apache.skywalking.oap.server.core.analysis.indicator.LongValueHolder;
import org.apache.skywalking.oap.server.core.source.Scope;
+import org.apache.skywalking.oap.server.library.util.TimeBucketUtils;
import org.joda.time.LocalDateTime;
import org.joda.time.Minutes;
import org.joda.time.format.DateTimeFormat;
@@ -148,6 +149,7 @@ public class RunningRule {
alarmMessage.setId0(meta.getId0());
alarmMessage.setId1(meta.getId1());
alarmMessage.setAlarmMessage(formatter.format(meta));
+ alarmMessage.setTimeBucket(TimeBucketUtils.INSTANCE.getTime(LocalDateTime.now()));
alarmMessageList.add(alarmMessage);
}
});
diff --git a/oap-server/server-library/library-util/pom.xml b/oap-server/server-library/library-util/pom.xml
index 6f3ca2c25..23e80456d 100644
--- a/oap-server/server-library/library-util/pom.xml
+++ b/oap-server/server-library/library-util/pom.xml
@@ -29,4 +29,12 @@
library-util
jar
+
+
+
+ joda-time
+ joda-time
+ ${joda-time.version}
+
+
\ No newline at end of file
diff --git a/oap-server/server-library/library-util/src/main/java/org/apache/skywalking/oap/server/library/util/TimeBucketUtils.java b/oap-server/server-library/library-util/src/main/java/org/apache/skywalking/oap/server/library/util/TimeBucketUtils.java
index 078c6a32d..b80cc10ba 100644
--- a/oap-server/server-library/library-util/src/main/java/org/apache/skywalking/oap/server/library/util/TimeBucketUtils.java
+++ b/oap-server/server-library/library-util/src/main/java/org/apache/skywalking/oap/server/library/util/TimeBucketUtils.java
@@ -18,8 +18,11 @@
package org.apache.skywalking.oap.server.library.util;
-import java.text.*;
-import java.util.*;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import org.joda.time.LocalDateTime;
/**
* @author peng-yongsheng
@@ -54,6 +57,11 @@ public enum TimeBucketUtils {
return year * 10000000000L + month * 100000000 + day * 1000000 + hour * 10000 + minute * 100 + second;
}
+ public long getTime(LocalDateTime time) {
+ return time.getYear() * 10000000000L + time.getMonthOfYear() * 100000000 + time.getDayOfMonth() * 1000000
+ + time.getHourOfDay() * 10000 + time.getMinuteOfHour() * 100 + time.getSecondOfMinute();
+ }
+
public String formatMinuteTimeBucket(long minuteTimeBucket) throws ParseException {
SimpleDateFormat minuteDateFormat = new SimpleDateFormat("yyyyMMddHHmm");
Date date = minuteDateFormat.parse(String.valueOf(minuteTimeBucket));
diff --git a/oap-server/server-starter/src/main/resources/alarm-settings.yml b/oap-server/server-starter/src/main/resources/alarm-settings.yml
index 5ea4ff504..f26fa1e20 100644
--- a/oap-server/server-starter/src/main/resources/alarm-settings.yml
+++ b/oap-server/server-starter/src/main/resources/alarm-settings.yml
@@ -14,29 +14,31 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-rules:
- # Rule unique name, must be ended with `_rule`.
- endpoint_percent_rule:
- # Indicator value need to be long, double or int
- indicator-name: endpoint_percent
- threshold: 75
- op: <
- # The length of time to evaluate the metric
- period: 10
- # How many times after the metric match the condition, will trigger alarm
- count: 3
- # How many times of checks, the alarm keeps silence after alarm triggered, default as same as period.
- silence-period: 10
- service_percent_rule:
- indicator-name: service_percent
- # [Optional] Default, match all services in this indicator
- include-names:
- - service_a
- - service_b
- threshold: 85
- op: <
- period: 10
- count: 4
+# Sample alarm rules.
+#rules:
+# # Rule unique name, must be ended with `_rule`.
+# endpoint_percent_rule:
+# # Indicator value need to be long, double or int
+# indicator-name: endpoint_percent
+# threshold: 75
+# op: <
+# # The length of time to evaluate the metric
+# period: 10
+# # How many times after the metric match the condition, will trigger alarm
+# count: 3
+# # How many times of checks, the alarm keeps silence after alarm triggered, default as same as period.
+# silence-period: 10
+# message: Successful rate of endpoint {name} is lower than 75%
+# service_percent_rule:
+# indicator-name: service_percent
+# # [Optional] Default, match all services in this indicator
+# include-names:
+# - service_a
+# - service_b
+# threshold: 85
+# op: <
+# period: 10
+# count: 4
#webhooks:
# - http://127.0.0.1/notify/