關於Prometheus告警機制--Alertmanager簡介

2019-10-08     波波說運維

概述

Prometheus+Grafana是監控告警解決方案里的後起之秀,比如大家熟悉的PMM,就是使用了這個方案。

今天主要介紹下prometheus的告警方面的內容,這裡只介紹一下基本概念,後面再分享下怎麼去自定義設置具體的告警規則,一起來了解下吧~


Prometheus告警能力

告警能力在Prometheus的架構中被劃分成兩個獨立的部分。如下所示,通過在Prometheus中定義AlertRule(告警規則),Prometheus會周期性的對告警規則進行計算,如果滿足告警觸發條件就會向Alertmanager發送告警信息。

Prometheus告警處理

在Prometheus中一條告警規則主要由以下幾部分組成:

  • 告警名稱:用戶需要為告警規則命名,當然對於命名而言,需要能夠直接表達出該告警的主要內容
  • 告警規則:告警規則實際上主要由PromQL進行定義,其實際意義是當表達式(PromQL)查詢結果持續多長時間(During)後出發告警

在Prometheus中,還可以通過Group(告警組)對一組相關的告警進行統一定義。當然這些定義都是通過YAML文件來統一管理的。

Alertmanager作為一個獨立的組件,負責接收並處理來自Prometheus Server(也可以是其它的客戶端程序)的告警信息。Alertmanager可以對這些告警信息進行進一步的處理,比如當接收到大量重複告警時能夠消除重複的告警信息,同時對告警信息進行分組並且路由到正確的通知方,Prometheus內置了對郵件,Slack等多種通知方式的支持,同時還支持與Webhook的集成,以支持更多定製化的場景。例如,目前Alertmanager還不支持釘釘,那用戶完全可以通過Webhook與釘釘機器人進行集成,從而通過釘釘接收告警信息。同時AlertManager還提供了靜默和告警抑制機制來對告警通知行為進行優化。


Alertmanager特性

Alertmanager除了提供基本的告警通知能力以外,還主要提供了如:分組、抑制以及靜默等告警特性:

Alertmanager特性


分組

分組機制可以將詳細的告警信息合併成一個通知。在某些情況下,比如由於系統宕機導致大量的告警被同時觸發,在這種情況下分組機制可以將這些被觸發的告警合併為一個告警通知,避免一次性接受大量的告警通知,而無法對問題進行快速定位。

例如,當集群中有數百個正在運行的服務實例,並且為每一個實例設置了告警規則。假如此時發生了網絡故障,可能導致大量的服務實例無法連接到資料庫,結果就會有數百個告警被發送到Alertmanager。

而作為用戶,可能只希望能夠在一個通知中中就能查看哪些服務實例收到影響。這時可以按照服務所在集群或者告警名稱對告警進行分組,而將這些告警內聚在一起成為一個通知。

告警分組,告警時間,以及告警的接受方式可以通過Alertmanager的配置文件進行配置。


抑制

抑制是指當某一告警發出後,可以停止重複發送由此告警引發的其它告警的機制。

例如,當集群不可訪問時觸發了一次告警,通過配置Alertmanager可以忽略與該集群有關的其它所有告警。這樣可以避免接收到大量與實際問題無關的告警通知。

抑制機制同樣通過Alertmanager的配置文件進行設置。


靜默

靜默提供了一個簡單的機制可以快速根據標籤對告警進行靜默處理。如果接收到的告警符合靜默的配置,Alertmanager則不會發送告警通知。

靜默設置需要在Alertmanager的Werb頁面上進行設置。


覺得有用的朋友多幫忙轉發哦!後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~

文章來源: https://twgreatdaily.com/zh-tw/-EuUqG0BMH2_cNUgqW6u.html