Usually the Prometheus Alertmanager will send a given notification to only one destination. What if you want it to go to both Slack and Pagerduty though?
The first and least error prone way is to create a receiver that goes to both destinations:
route: receiver: slack_pagerduty receivers: - name: slack_pagerduty slack_configs: - api_url: THE_WEBHOOK_URL channel: '#general' pagerduty_configs: - service_key: AN_INTEGRATION_KEY
Similarly as slack_configs
and friends take lists, you can send to multiple Slack channels:
route: receiver: multi_slack receivers: - name: multi_slack slack_configs: - api_url: THE_WEBHOOK_URL channel: '#general' - api_url: THE_WEBHOOK_URL channel: '#alerts'
The second approach is to use continue
. This requires some care, as you need to remember to apply any changes to one route to the other routes:
route: receiver: slack # Fallback. routes: - match: severity: page continue: true receiver: slack - match: severity: page receiver: pagerduty receivers: - name: slack slack_configs: - api_url: THE_WEBHOOK_URL channel: '#general' - name: pagerduty pagerduty_configs: - service_key: AN_INTEGRATION_KEY
Usually when a route matches an alert, that's it and there's no consideration of subsequent siblings of that route. continue
changes this behaviour, making the route match and also continuing to the next sibling with the usual route matching logic.
continue
is primarily useful if you want to send all alerts somewhere, such as a webhook to log all alerts.
Want to know more about Alertmanager routing? Contact us.
No comments.