Skip to content

2020 Notify Slack when Alerts Arrive

10 Minutes intermediate

Integrate Digital Rebar Provision events and alerts into Slack notifications

In this lab, the User will explore how to orchestrate the delivery of Slack notifications on events and alerts. Business ROI: Improved visibility into operational status improves system uptime and maintenance

Open Video

Prerequisites

Additional Labs:

Additional Checklist Items:

  • Must have authority to create a webhook application in Slack see
  • A Slack Messaging Application URL Per the Slack Documentation, the URL will need appropriate tokens to access slack.

Concepts

  • alerts
  • triggers
  • blueprints

Notify Slack when Alerts Arrive

Build orchestration

Choose a path to setup the orchestration. Both paths can be done without resetting anything.

Text Only
1. Navigate to the [global](ux://profiles/global) profile
1. Add Parameter by clicking `Add Params`
Search and select `slack/service-url`

Click `Decrypt Secure Param`

Enter the URL for Slack Messaging Application URL

Click outside of the text box to save the value
Text Only
1. Navigate to the [Blueprints](ux://blueprints) view
1. Click the `Add` button
Set `Name` to `lab2020`

Click `Save`
1. Add a Task by selecting `slack-app-webhook`
Text Only
1. Go to the [Triggers](ux://triggers) view
1. Click the `Add` button
Set `Name` to `lab2020`

Set `Provider` to `event-trigger`

Set `Blueprint` to `lab2020`

Set `Filter` to `Local Self Runner`

Add a Param `event-trigger/event-match` with a value of
`alerts.create.*`

Click `Save`
Text Only
1. Go to the [Alerts](ux://alerts) view
1. Click the `Add` button
Set `Name` to `lab2020`

Set `Level` to `INFO`

Click `Save`
1. Check Slack for a message from that alert.
Text Only
1. Go to [Work Orders](ux://work_orders) view
1. Notice the `lab2020` Blueprint WorkOrder
Text Only
1. Go to the [lab2020](ux://triggers/lab2020) trigger
1. Click the `Merge Data` toggle to `true`
1. Add a WorkOrder Parameter `slack/message`
The value should be set to:

```json
{"text":"{{.Param "Level"}} {{.Param "Name"}} Alert from Digital Rebar at {{.ApiURL }}"}
```
Text Only
1. Go to the [Alerts](ux://alerts) view
1. Click the `Add` button
Set `Name` to `lab2020`

Set `Level` to `INFO`

Click `Save`
1. Check Slack for a message from that alert.
Text Only
1. Bring up the shell
Text Only
1. Set the Slack URL in the global profile
```sh
drpcli profiles set global param slack/service-url to <URL from Prereqs>
```

Returns the URL on success.  It will automatically be encrypted on the server as a secure parameter.
Text Only
1. Create a blueprint to do slack notifications
```sh
drpcli blueprints create - <<EOF
Name: lab2020-cli
Tasks:
  - slack-app-webhook
EOF
```

Returns the JSON object of the new blueprint on success.
Text Only
1. Create a trigger to run the blueprint
```sh
drpcli triggers create - <<EOF
Name: lab2020-cli
Blueprint: lab2020-cli
Description: 'Notify Slack on new Alerts'
Enabled: true
Filter: Params.machine-self-runner=true Endpoint=
FilterCount: 1
MergeDataIntoParams: true
Params:
  event-trigger/event-match: alerts.create.*
TriggerProvider: event-trigger
WorkOrderParams:
  slack/message: >-
    {"text":"{{.Param "Level"}} {{.Param "Name"}} Alert from Digital Rebar at {{.ApiURL }}"}
EOF
```

Returns the JSON object of the new trigger on success.
Text Only
1. Post the alert
```sh
drpcli alerts post --unique INFO lab2020-cli
```

Returns the JSON object of the alert.
Text Only
1. Go to [Work Orders](ux://work_orders) view
1. Notice the `lab2020-cli` Blueprint WorkOrder