Alertmanager 處理由用戶端應用程式 (例如 Prometheus 伺服器) 傳送的警報。它負責將警報去重複資料、分組,並將它們路由到正確的接收器整合,例如電子郵件、PagerDuty 或 OpsGenie。它還負責警報的靜音和抑制。
以下說明 Alertmanager 實作的核心概念。請參閱設定文件以了解如何在更詳細地使用它們。
群組將性質相似的警報分類到單一通知中。這在較大規模的中斷期間特別有用,因為當許多系統同時發生故障時,可能會同時觸發數百甚至數千個警報。
範例: 當網路分割發生時,您的叢集中執行了數十或數百個服務實例。您一半的服務實例無法再連線到資料庫。Prometheus 中的警報規則設定為在每個服務實例無法與資料庫通訊時傳送警報。結果,數百個警報被傳送到 Alertmanager。
作為使用者,只想收到單一頁面,同時仍然能夠確切地看到哪些服務實例受到影響。因此,可以設定 Alertmanager 以依其叢集和警報名稱將警報分組,以便它傳送單一精簡的通知。
警報的分組、分組通知的時序以及這些通知的接收器,都是由組態檔中的路由樹狀結構所設定。
抑制是一種概念,即如果某些其他警報已經觸發,則抑制某些警報的通知。
範例: 觸發了一個警報,通知整個叢集無法連線。如果該特定警報正在觸發,則可以將 Alertmanager 設定為使所有其他關於此叢集的警報靜音。這樣可以防止數百或數千個與實際問題無關的觸發警報的通知。
抑制是透過 Alertmanager 的組態檔設定的。
靜音是一種直接的方式,可以在給定的時間內簡單地將警報靜音。靜音是基於匹配器設定的,就像路由樹狀結構一樣。檢查傳入的警報是否符合活動靜音的所有等式或正則表達式匹配器。如果符合,則不會為該警報發送任何通知。
靜音是在 Alertmanager 的 Web 介面中設定的。
Alertmanager 對其用戶端的行為有特殊要求。這些僅與未使用 Prometheus 發送警報的進階用例相關。
Alertmanager 支援設定建立叢集以實現高可用性。可以使用 --cluster-* 旗標來設定此功能。
重要的是不要在 Prometheus 和其 Alertmanager 之間負載平衡流量,而是將 Prometheus 指向所有 Alertmanager 的清單。
本文件為開放原始碼。請透過提交 issue 或 pull request 來協助改進它。