Prometheus 告警分配到指定接收組mysql
route屬性用來設置報警的分發策略,它是一個樹狀結構,按照深度優先從左向右的順序進行匹配。sql
主要處理流程:
1. 接收到Alert,根據labels判斷屬於哪些Route(可存在多個Route,一個Route有多個Group,一個Group有多個Alert)。
2. 將Alert分配到Group中,沒有則新建Group。
3. 新的Group等待group_wait指定的時間(等待時可能收到同一Group的Alert),根據resolve_timeout判斷Alert是否解決,而後發送通知。
4. 已有的Group等待group_interval指定的時間,判斷Alert是否解決,當上次發送通知到如今的間隔大於repeat_interval或者Group有更新時會發送通知。數據庫
route: receiver: 'default-receiver' # 爲一個組發送通知的初始等待時間,默認30s、等待是時間內爲了合併更多同類郵件 group_wait: 30s # 在發送新告警前的等待時間。一般5m或以上、第二組發送郵件間隔時間 group_interval: 5m # 發送重複告警的週期。若是已經發送了通知,再次發送以前須要等待多長時間。一般3小時或以上 repeat_interval: 4h # 報警分組依據,根據標籤進行分組 group_by: [cluster, alertname] # 全部不匹配如下子路由的告警都將保留在根節點,併發送到「default-receiver」 routes: # 全部service=mysql或者service=cassandra的告警分配到數據庫接收端 - receiver: 'database-pager' group_wait: 10s match_re: # 使用正則匹配告警包含兩個服務,發送到database-page service: mysql|cassandra # 全部帶有team=frontend標籤的告警都與此子路由匹配 # 它們是按產品和環境分組的,而不是集羣 - receiver: 'frontend-pager' group_by: [product, environment] match: # 全部告警標籤帶有frontend發送到frontend-pager team: frontend # receiver標記:告警接受者 receivers: # name:報警來源自定義名稱 - name: 'database-pager' # email_configs:經過郵箱發送報警 email_configs: # to:指定接收端email - to: 'xiangsikai@126.com' - name: 'frontend-pager' # email_configs:經過郵箱發送報警 email_configs: # to:指定接收端email - to: 'xiangsikai@126.com'