使用 Prometheus Alertmanager Silence 暫時停止通知一段時間

文章目錄

需求

PrometheusAlertmanager 會在系統異常時發通知, 這很好用. 但有時候 alert 發太多也會是個問題, 譬如一些已知的停線狀況 (如工廠年度維修等等), 通常都會引發大量 alert, 而系統發太多 alert 的問題是, 一方面可能被忽略(因為太多), 另一方面是可能把真正有用的資訊洗板洗掉了, 反而造成其他更嚴重的問題.

把這些 alert 先暫時關掉當然是個方法, 但之後萬一忘記開回來, 反而又會是另一個問題. 因此 Alertmanager 有提供一個 Silence 功能, 能夠把某些 alert 暫時關掉一段時間, 時間過了, 就會繼續發 alert.

設定方法

  1. 進入 Prometheus Alert Manager, 選擇 Alerts, 系統會把目前所有的 alert 列出

  2. 選擇你要 silence 的 alert

  3. 進去後, 其實他並沒有綁定上一層選的那個 alert, 而只是把她的 filter 設好, 所以在這裡還要再 double check 一次. 先設定要 silence 的時間, 負責人, comment, 還有在最下面用 Preview Alerts 確認範圍正確. 沒問題的話就按下 Create 建立一個新的 silense.

  4. 完成後選 Silences, 就可以看到被 silence 的所有 alerts 了, 這裡有三個動作可以選

    1. View: 檢視這個 silence 的內容
    2. Edit: 修改這個 silence 的內容
    3. Expire: 這個按下去, 就會直接取消 silence
  5. Silense 結束後, 可以在這裡看到之前關掉過的 alert, 可直接使用 Recreate 再建立一個一樣的.

心得

Prometheus 沒有設計 authentication/authorization 機制實在是個問題, 像這個 Alertmanager 也沒卡權限, Silence 的負責人也要點進去到最裡面才能看到, 感覺還是有點風險. Grafana 9 的 Alert 機制比較完整了, 或許應該參考一下.