繁体   English   中英

Prometheus 和 Alertmanager - 基于 env label 的路由

[英]Prometheus and Alertmanager - route based on env label

我正在尝试配置警报管理器,以便它根据特定 label 的值将警报发送到正确的通道。 我有 3 个松弛通道 - dev/staging/prod,我希望来自将“env”label 设置为 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-notifications 接收器都是相同的,它们只有一件事不同,那就是适当的频道名称。

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

预期行为:来自“dev”env 的警报被发送到 dev 频道,“staging”到 staging 频道,“prod”到 prod 频道。

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

结果我的配置很好,我使用了一个只与一个松弛通道相关联的 webhook URL,我不知道这一点。

您必须在第一场比赛中添加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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM