Route By NamespaceΒΆ
Route alerts based on Kubernetes namespace. Ideal for teams that "own" specific namespaces.
This guide can be applied to all events passing through Robusta, including forwarded Prometheus alerts.
PrerequisitesΒΆ
At least one existing sink, such as Slack, Microsoft Teams, Discord, etc.
Setting Up RoutingΒΆ
Assume you have an existing sink, in this case Slack:
sinksConfig:
- slack_sink:
name: slack_app_sink
slack_channel: app-notifications
api_key: secret-key
By default, the sink will receive notifications for all namespaces. Let's duplicate the sink and change only the Slack channel:
sinksConfig:
- slack_sink:
name: slack_app_sink
slack_channel: app-notifications
api_key: secret-key
- slack_sink:
name: slack_system_sink
slack_channel: system-notifications
api_key: secret-key
We now have two sinks, both receiving all notifications. Restrict the notifications for each sink by adding scopes:
sinksConfig:
- slack_sink:
name: slack_app_sink
slack_channel: app-notifications
api_key: secret-key
scope:
include:
- namespace: [app]
- slack_sink:
name: slack_system_sink
slack_channel: system-notifications
api_key: secret-key
scope:
include:
- namespace: [kube-system]
Alerts will be now routed according to Kubernetes namespace.
You can apply this method with as many sinks as you like. If the number of sinks is large, consider setting the channel dynamically. (See instructions for Slack or MS Teams.)
Troubleshooting IssuesΒΆ
For this guide to work, alerts must be tagged with namespace
metadata. Alerts without namespace
metadata will be
sent to default sinks (without namespace matchers) if they exist.
If you forward custom Prometheus alerts to Robusta (and don't use Robusta's builtin Prometheus alerts), make sure they
have a namespace
label. Otherwise this method will not work.