Monitoring 普罗米修斯和Alertmanager-基于环境标签的路线

Monitoring 普罗米修斯和Alertmanager-基于环境标签的路线,monitoring,prometheus,prometheus-alertmanager,Monitoring,Prometheus,Prometheus Alertmanager,我正在尝试配置alertmanager,以便它根据特定标签的值将警报发送到正确的通道。我有3个空闲通道-dev/staging/prod,我希望将来自“env”标签设置为dev的实例的警报发送到dev空闲通道。Staging和prod显然会以相同的方式工作。以下是我的配置的一部分: global: resolve_timeout: 1m slack_api_url: 'https://slack-url' route: group_by: [...] receiver: 'de

我正在尝试配置alertmanager,以便它根据特定标签的值将警报发送到正确的通道。我有3个空闲通道-dev/staging/prod,我希望将来自“env”标签设置为dev的实例的警报发送到dev空闲通道。Staging和prod显然会以相同的方式工作。以下是我的配置的一部分:

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通知接收器都是相同的,它们只有一个不同之处,那就是相应的通道名称

当前行为:所有警报都发送到prod slack通道

预期行为:“dev”env发出的警报发送到dev通道,“staging”发送到staging通道,“prod”发送到prod通道


Alertmanager可以很好地看到这些标签(从Alertmanager webUI的信息判断)。

您必须在第一个匹配项上添加
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将对当前节点的配置进行评估

“继续”属性是一个值,用于定义如果同一级别上的路由已匹配,是否要计算路由同级(属于同一级别)


原来我的配置很好,我使用的webhook URL只绑定到一个空闲频道,我没有意识到这一点。

一个问题:默认值实际上做什么?