告警能力在prometheus的架構中被劃分成兩個獨立的部分。如下所示,通過在prometheus中定義alertrule(告警規則),prometheus會週期性的對告警規則進行計算,如果滿足告警觸發條件就會向alertmanager傳送告警資訊。
在prometheus中一條告警規則主要由以下幾部分組成:
在prometheus中,還可以通過group(告警組)對一組相關的告警進行統一定義。當然這些定義都是通過yaml檔案來統一管理的。
alertmanager作為乙個獨立的元件,負責接收並處理來自prometheus server(也可以是其它的客戶端程式)的告警資訊。alertmanager可以對這些告警資訊進行進一步的處理,比如當接收到大量重複告警時能夠消除重複的告警資訊,同時對告警資訊進行分組並且路由到正確的通知方,prometheus內建了對郵件,slack等多種通知方式的支援,同時還支援與webhook的整合,以支援更多定製化的場景。例如,目前alertmanager還不支援釘釘,那使用者完全可以通過webhook與釘釘機械人進行整合,從而通過釘釘接收告警資訊。同alertmanager還提供了靜默和告警抑制機制來對告警通知行為進行優化。
alertmanager除了提供基本的告警通知能力以外,還主要提供了如:分組、抑制以及靜默等告警特性:
分組機制可以將詳細的告警資訊合併成乙個通知。在某些情況下,比如由於系統宕機導致大量的告警被同時觸發,在這種情況下分組機制可以將這些被觸發的告警合併為乙個告警通知,避免一次性接受大量的告警通知,而無法對問題進行快速定位。
例如,當集群中有數百個正在執行的服務例項,並且為每乙個例項設定了告警規則。假如此時發生了網路故障,可能導致大量的服務例項無法連線到資料庫,結果就會有數百個告警被傳送到alertmanager。
而作為使用者,可能只希望能夠在乙個通知中中就能檢視哪些服務例項收到影響。這時可以按照服務所在集群或者告警名稱對告警進行分組,而將這些告警內聚在一起成為乙個通知。
告警分組,告警時間,以及告警的接受方式可以通過alertmanager的配置檔案進行配置。
抑制是指當某一告警發出後,可以停止重**送由此告警引發的其它告警的機制。
例如,當集群不可訪問時觸發了一次告警,通過配置alertmanager可以忽略與該集群有關的其它所有告警。這樣可以避免接收到大量與實際問題無關的告警通知。
抑制機制同樣通過alertmanager的配置檔案進行設定
靜默提供了乙個簡單的機制可以快速根據標籤對告警進行靜默處理。如果接收到的告警符合靜默的配置,alertmanager則不會傳送告警通知
靜默設定需要在alertmanager的werb頁面上進行設定。
Prometheus告警收斂
告警面臨的最大問題 就是告警訊息太多,很可能會導致運維人員遺漏重要的告警資訊,或者一些無關緊要的小警報太多,收件人很容易麻木,可能不再理會。如果遺漏關鍵警報沒有及時處理可能會對系統業務造成重大故障。在這個問題上,alertmanager的告警收斂配置就變得尤為重要了。合理的分組將類似的警報進行分類。...
Prometheus 告警收斂
prometheus 告警收斂 告警面臨最大問題,是警報太多,相當於狼來了的形式。收件人很容易麻木,不再繼續理會。關鍵的告警常常被淹沒。在一問題中,alertmanger在一定程度上得到很好解決。prometheus成功的把一條告警發給了altermanager,而altermanager並不是簡簡...
Prometheus告警規則配置
建立告警規則配置檔案first rules.yml,建議放在與prometheus.yml同級目錄 修改配置檔案prometheus.yml,將告警規則配置檔案新增到prometheus.yml。注意路徑。global scrape interval 15s 這個是每次資料手機的頻率 evaluat...