【教學】Prometheus AlertManager 的 group_wait、group_interval、repeat_interval 運作原理



假設我們今天有3台主機,並設定 group_by 是 alertname ,且這三台主機都有一個相同名稱的警告,叫 CPU Alert 。

A主機在 4:00時觸發了CPU過高的警告,但因為他是第一個觸發的,AlertManager檢查後發現群組不存在,就為他建立了一個群組,接下來這個群組會進入 group_wait 的等待時間,看看這個時間內有沒有相同的警告名稱觸發。




如果在 group_wait 等待時間內,比如4:00的30秒,B也觸發了CPU警告,那B就會加入這群組,並一起在 4:01 ,也就是 group_wait 結束的時間,發送警告。




接下來,這個群組會依 group_interval 設定的時間,不斷地比對群組狀態是否跟上次不同,如果每5分鐘的檢查,都沒發現變化,那AlertManager就不會發送警告




當群組的狀態,從4:01 到 5:01 都沒有變化,也就是 1小時,超出repeat_interval所設定的時間。那這時,AlertManager就會再次發出警告,再次提醒





那假如,在 repeat_interval 前,C主機在4:07 觸發警報會發生什麼事呢?


C 主機在4:07觸發警報,因為發現有相同名稱的群組,就加入到這個群組內,然後在這次 group_interval 的結束時間,也就是 4:11 ,AlertManager 比對這次群組狀態與上次不同,就會在 4:11 再次發送警報,更新這個群的變化。




那假如不是有警報再觸發,而是 B 主機的警報解除了呢?


同理,因為 B主機狀態解除會離開群組,對 AlertManager也算狀態更新,自然也就會在4:11發送警報,更新群組狀態,告知管理者,B主機已解除警報囉,但A主機還在警告中。






留言