簡體   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