From b643190005ee03d49ef2e8543902c0daaf7ed8b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=99=9F=20Wu=20Sheng?= Date: Wed, 10 Oct 2018 14:15:24 +0800 Subject: [PATCH] Add alarm timestamp. (#1741) --- oap-server/server-alarm-plugin/pom.xml | 8 +++- .../core/alarm/provider/RunningRule.java | 2 + .../server-library/library-util/pom.xml | 8 ++++ .../server/library/util/TimeBucketUtils.java | 12 ++++- .../src/main/resources/alarm-settings.yml | 48 ++++++++++--------- 5 files changed, 51 insertions(+), 27 deletions(-) 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/