簡體   English   中英

如何使用配置文件使 Prometheus Alertmanager 靜音?

[英]How to silence Prometheus Alertmanager using config files?

我正在使用官方的stable/prometheus-operator chart 來部署帶有 helm 的 Prometheus。

到目前為止,它運行良好,除了為許多 pod(包括自己的 Prometheus 的config-reloaders 容器)觸發的煩人的CPUThrottlingHigh警報。 此警報目前正在討論中,我想暫時將其通知靜音。

Alertmanager 具有靜音功能,但它是基於網絡的:

靜音是在給定時間內簡單地將警報靜音的直接方法。 靜音是在 Alertmanager 的 Web 界面中配置的。

有沒有辦法使用配置文件將來自CPUThrottlingHigh通知靜音?

一種選擇是將您想要靜音的警報路由到“空”接收器。 alertmanager.yaml

route:
  # Other settings...
  group_wait: 0s
  group_interval: 1m
  repeat_interval: 1h

  # Default receiver.
  receiver: "null"

  routes:
  # continue defaults to false, so the first match will end routing.
  - match:
      # This was previously named DeadMansSwitch
      alertname: Watchdog
    receiver: "null"
  - match:
      alertname: CPUThrottlingHigh
    receiver: "null"
  - receiver: "regular_alert_receiver"

receivers:
  - name: "null"
  - name: regular_alert_receiver
    <snip>

好吧,我通過配置一個hackishprevent_rule讓它工作了:

inhibit_rules:
- target_match:
     alertname: 'CPUThrottlingHigh'
  source_match:
     alertname: 'DeadMansSwitch'
  equal: ['prometheus']

DeadMansSwitch設計是 prometheus-operator 附帶的“始終觸發”警報,而prometheus標簽是所有警報的通用標簽,因此CPUThrottlingHigh最終會被永遠禁止 它很臭,但有效。

優點:

  • 這可以通過配置文件來完成(使用alertmanager.config helm 參數)。
  • Prometheus 上仍存在CPUThrottlingHigh警報以供分析。
  • 如果選中了“Inhibited”框, CPUThrottlingHigh警報只會顯示在 Alertmanager UI 中。
  • 我的接收器上沒有煩人的通知。

缺點:

  • DeadMansSwitchprometheus標簽設計中的任何更改都將破壞這一點(這僅意味着警報再次觸發)。

更新:我的缺點變成了現實......

DeadMansSwitch名稱剛剛在 stable/prometheus-operator 4.0.0 中更改 如果使用這個版本(或更高版本),新的警報名稱是Watchdog

我懷疑是否存在通過配置使警報靜音的方法(除了將所述警報路由到/dev/null接收器,即沒有配置電子郵件或任何其他通知機制的接收器,但警報仍會顯示在 Alertmanager UI 中)。

您顯然可以使用amtool附帶的命令行工具amtool添加靜音(盡管我看不到設置靜音過期時間的方法)。

或者您可以直接使用 API(即使它沒有記錄並且理論上它可能會改變)。 根據這個 prometheus-users 線程,這應該可以工作:

curl https://alertmanager/api/v1/silences -d '{
      "matchers": [
        {
          "name": "alername1",
          "value": ".*",
          "isRegex": true
        }
      ],
      "startsAt": "2018-10-25T22:12:33.533330795Z",
      "endsAt": "2018-10-25T23:11:44.603Z",
      "createdBy": "api",
      "comment": "Silence",
      "status": {
        "state": "active"
      }

}'

您可以通過Robusta發送警報來使其靜音。 (免責聲明:我寫了羅布斯塔。)

下面是一個例子:

- triggers:
  - on_prometheus_alert: {}
  actions:
  - name_silencer:
      names: ["Watchdog", "CPUThrottlingHigh"]

但是,這可能不是您想要做的!

一些CPUThrottlingHigh警報是垃圾郵件,無法像GKE 上的指標服務器那樣修復 .

但是,通常警報是有意義的,可以指示真正的問題。 通常,最佳實踐是更改或刪除 pod 的 CPU 限制。 .

在我為 Robusta 編寫自動劇本時,我花了比我願意承認的更多時間來查看CPUThrottlingHigh ,該劇本分析每個CPUThrottlingHigh並推薦最佳實踐。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM