This is an automated email from the ASF dual-hosted git repository. tanjian pushed a commit to branch slack_alarm in repository https://gitbox.apache.org/repos/asf/skywalking.git
commit 752da5612329ec5fe2bd21d4a590a02b47a7d8d4 Author: JaredTan95 <[email protected]> AuthorDate: Fri Aug 21 14:26:58 2020 +0800 finish --- docs/en/setup/backend/backend-alarm.md | 18 ++++++++++++++++++ .../core/alarm/provider/AlarmRulesWatcher.java | 2 +- .../core/alarm/provider/slack/SlackhookCallback.java | 20 +++++++------------- .../src/main/resources/alarm-settings.yml | 2 +- 4 files changed, 27 insertions(+), 15 deletions(-) diff --git a/docs/en/setup/backend/backend-alarm.md b/docs/en/setup/backend/backend-alarm.md index 37317be..90189be 100644 --- a/docs/en/setup/backend/backend-alarm.md +++ b/docs/en/setup/backend/backend-alarm.md @@ -162,6 +162,24 @@ message AlarmMessage { } ``` +## Slack Chat Hook +To do this you need to follow the [Getting Started with Incoming Webhooks guide](https://api.slack.com/messaging/webhooks) and create new Webhooks. + +The alarm message will send through HTTP post by `application/json` content type if you configured Slack Incoming Webhooks as following: +```yml +slackHooks: + textTemplate: |- + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": ":alarm_clock: *Apache Skywalking Alarm* \n **%s**." + } + } + webhooks: + - https://hooks.slack.com/services/x/y/z +``` + ## Update the settings dynamically Since 6.5.0, the alarm settings can be updated dynamically at runtime by [Dynamic Configuration](dynamic-config.md), which will override the settings in `alarm-settings.yml`. diff --git a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/AlarmRulesWatcher.java b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/AlarmRulesWatcher.java index c2cad6c..51a5353 100644 --- a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/AlarmRulesWatcher.java +++ b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/AlarmRulesWatcher.java @@ -111,7 +111,7 @@ public class AlarmRulesWatcher extends ConfigChangeWatcher { return this.rules.getGrpchookSetting(); } - public SlackSettings getSlackSettings(){ + public SlackSettings getSlackSettings() { return this.rules.getSlacks(); } } diff --git a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/slack/SlackhookCallback.java b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/slack/SlackhookCallback.java index f21ce5a..bd9beb4 100644 --- a/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/slack/SlackhookCallback.java +++ b/oap-server/server-alarm-plugin/src/main/java/org/apache/skywalking/oap/server/core/alarm/provider/slack/SlackhookCallback.java @@ -24,9 +24,6 @@ import com.google.gson.JsonObject; import io.netty.handler.codec.http.HttpHeaderValues; import java.io.IOException; import java.io.UnsupportedEncodingException; -import java.time.Instant; -import java.time.OffsetDateTime; -import java.time.ZoneId; import java.util.List; import org.apache.http.HttpHeaders; import org.apache.http.HttpStatus; @@ -68,7 +65,7 @@ public class SlackhookCallback implements AlarmCallback { } @Override - public void doAlarm(List<AlarmMessage> alarmMessage) { + public void doAlarm(List<AlarmMessage> alarmMessages) { if (webhooks.isEmpty()) { return; } @@ -87,16 +84,13 @@ public class SlackhookCallback implements AlarmCallback { JsonObject jsonObject = new JsonObject(); JsonArray jsonElements = new JsonArray(); - alarmMessage.forEach(item -> jsonElements.add( - GSON.fromJson( + alarmMessages.forEach(item -> { + jsonElements.add(GSON.fromJson( String.format( - alarmRulesWatcher.getSlackSettings().getTextTemplate(), - OffsetDateTime.ofInstant( - Instant.ofEpochMilli(item.getStartTime()), ZoneId.systemDefault() - ), item.getScope(), item.getName(), item.getAlarmMessage(), item.getId0() - ), - JsonObject.class - ))); + this.alarmRulesWatcher.getSlackSettings().getTextTemplate(), item.getAlarmMessage() + ), JsonObject.class)); + }); + jsonObject.add("blocks", jsonElements); entity = new StringEntity(GSON.toJson(jsonObject), ContentType.APPLICATION_JSON); diff --git a/oap-server/server-bootstrap/src/main/resources/alarm-settings.yml b/oap-server/server-bootstrap/src/main/resources/alarm-settings.yml index 237a761..b17c380 100755 --- a/oap-server/server-bootstrap/src/main/resources/alarm-settings.yml +++ b/oap-server/server-bootstrap/src/main/resources/alarm-settings.yml @@ -53,7 +53,7 @@ slackHooks: "type": "section", "text": { "type": "mrkdwn", - "text": ":alarm_clock: *Apache Skywalking Alarm* ,%s \n [%s], %s *%s* , %s." + "text": ":alarm_clock: *Apache Skywalking Alarm* \n **%s**." } } webhooks:
