Route By Alert NameΒΆ
By default, Robusta notifications are sent to all sinks.
In this guide, you'll learn to route alerts by their name:
KubePodCrashLooping alerts will be sent to a #crash-alerts channel
All other alerts will be sent to #general-alerts
PrerequisitesΒΆ
All least one existing sink must be configured. Below, we'll assume it's a Slack sink.
Setting Up RoutingΒΆ
Assume you have an existing Slack sink as follows:
sinksConfig:
- slack_sink:
name: sink1
slack_channel: general-alerts
api_key: secret-key
The first step is to duplicate your sink. You need two unique sinks - one for each channel:
sinksConfig:
- slack_sink:
name: sink2
slack_channel: crash-alerts
api_key: secret-key
- slack_sink:
name: sink1
slack_channel: general-alerts
api_key: secret-key
The sinks are nearly identical - only the name
and slack_channel
parameters vary:
The
name
field identifies this sink in Robusta and can be chosen arbitrarily - so long as it is unique between sinksThe
slack_channel
field should match a channel in your Slack account
The next step is to update the configuration so that #crash-alerts
receives a subset of alerts:
sinksConfig:
- slack_sink:
name: sink2
slack_channel: crash-alerts
api_key: secret-key
- scope:
include:
# only send notifications for the KubePodCrashLooping alert
- identifier: [KubePodCrashLooping]
- slack_sink:
name: sink1
slack_channel: general-alerts
api_key: secret-key
We added an inclusion scope for the #crash-alerts
channel. To filter alerts by their name, use the identifier
field which corresponds to the Prometheus alert name.
One final step: we must update the default sink to exclude KubePodCrashLooping. You can do this two ways:
Option 1: add an exclusion scope:
sinksConfig:
- slack_sink:
name: sink2
slack_channel: crash-alerts
api_key: secret-key
- scope:
include:
# only send notifications for the KubePodCrashLooping alert
- identifier: [KubePodCrashLooping]
- slack_sink:
name: sink1
slack_channel: general-alerts
api_key: secret-key
- scope:
exclude:
# don't send notifications for the KubePodCrashLooping alert
- identifier: [KubePodCrashLooping]
Option 2: use stop: true
to prevent alerts from propogating after a match:
sinksConfig:
- slack_sink:
name: sink2
slack_channel: crash-alerts
api_key: secret-key
# add the following line!
stop: true
- scope:
include:
- identifier: [KubePodCrashLooping]
- slack_sink:
name: sink1
slack_channel: general-alerts
api_key: secret-key
Whichever way you chose, now KubePodCrashLooping alerts are sent to #crash-alerts
. Other alerts go to #general-alerts
.