我正在尝试配置警报管理器,以便它根据特定标签的值将警报发送到正确的渠道。我有 3 个 slack 通道 - dev/staging/prod,我希望来自将“env”标签设置为 dev 的实例的警报发送到 dev slack 通道。分期和生产显然会以相同的方式工作。这是我的配置的一部分:
global:
resolve_timeout: 1m
slack_api_url: 'https://slack-url'
route:
group_by: [...]
receiver: 'default'
routes:
- match:
env: 'prod'
receiver: 'slack-notifications-prod'
- match:
env: 'staging'
receiver: 'slack-notifications-staging'
- match:
env: 'dev'
receiver: 'slack-notifications-dev'
receivers:
- name: 'default'
- name: 'slack-notifications-prod'
...
- name: 'slack-notifications-staging'
...
- name: 'slack-notifications-dev'
...
slack-notifications 接收器都是一样的,它们只有一件事不同,那就是合适的频道名称。
当前行为:所有警报都发送到 prod slack 通道
预期行为:来自“dev”环境的警报发送到开发通道,“staging”发送到 staging 通道,“prod”发送到 prod 通道。
Alertmanager 可以很好地看到这些标签(从来自 alertmanager webUI 的信息来看)。
答案 0 :(得分:0)
您必须在第一场比赛中添加 continue: true
属性:
global:
resolve_timeout: 1m
slack_api_url: 'https://slack-url'
route:
group_by: [...]
receiver: 'default'
routes:
- match:
env: 'prod'
receiver: 'slack-notifications-prod'
continue: true
- match:
env: 'staging'
receiver: 'slack-notifications-staging'
- match:
env: 'dev'
receiver: 'slack-notifications-dev'
receivers:
- name: 'default'
- name: 'slack-notifications-prod'
...
- name: 'slack-notifications-staging'
...
- name: 'slack-notifications-dev'
...
AlertManager 将评估子路线,直到没有剩余路线或给定级别的路线与当前警报匹配。
在这种情况下,AlertManager 将评估当前节点的配置。
continue 属性是一个值,用于定义如果同一级别的路由已经匹配,是否要评估路由兄弟(属于同一级别)。
https://devconnected.com/alertmanager-and-prometheus-complete-setup-on-linux/
答案 1 :(得分:0)
结果证明我的配置很好,而且我使用的 webhook URL 只绑定到一个 slack 频道,我不知道这一点。