Prometheus 一條告警的觸發流程、等待時間
報警處理流程如下:
1. Prometheus Server監控目標主機上暴露的http接口(這里假設接口A),通過上述Promethes配置的'scrape_interval'定義的時間間隔,定期采集目標主機上監控數據。
2. 當接口A不可用的時候,Server端會持續的嘗試從接口中取數據,直到"scrape_timeout"時間后停止嘗試。這時候把接口的狀態變為“DOWN”。
3. Prometheus同時根據配置的"evaluation_interval"的時間間隔,定期(默認1min)的對Alert Rule進行評估;當到達評估周期的時候,發現接口A為DOWN,即UP=0為真,激活Alert,進入“PENDING”狀態,並記錄當前active的時間;
4. 當下一個alert rule的評估周期到來的時候,發現UP=0繼續為真,然后判斷警報Active的時間是否已經超出rule里的‘for’ 持續時間,如果未超出,則進入下一個評估周期;如果時間超出,則alert的狀態變為“FIRING”;同時調用Alertmanager接口,發送相關報警數據。
5. AlertManager收到報警數據后,會將警報信息進行分組,然后根據alertmanager配置的“group_wait”時間先進行等待。等wait時間過后再發送報警信息。
6. 屬於同一個Alert Group的警報,在等待的過程中可能進入新的alert,如果之前的報警已經成功發出,那么間隔“group_interval”的時間間隔后再重新發送報警信息。比如配置的是郵件報警,那么同屬一個group的報警信息會匯總在一個郵件里進行發送。
7. 如果Alert Group里的警報一直沒發生變化並且已經成功發送,等待‘repeat_interval’時間間隔之后再重復發送相同的報警郵件;如果之前的警報沒有成功發送,則相當於觸發第6條條件,則需要等待group_interval時間間隔后重復發送。
同時最后至於警報信息具體發給誰,滿足什么樣的條件下指定警報接收人,設置不同報警發送頻率,這里有alertmanager的route路由規則進行配置。
1、等待時間1
查看配置文件:vim prometheus.yml
global: # 數據采集間隔 scrape_interval: 15s # 評估告警周期 evaluation_interval: 15s # 數據采集超時時間默認10s # scrape_timeout
2、等待時間2
配置文件:vim alertmanager.yml
# route標記:告警如何發送分配 route: # group_by:采用哪個標簽作為分組的依據 group_by: ['alertname'] # group_wait:分組等待的時間 group_wait: 10s # group_interval:上下兩組發送告警的間隔時間 group_interval: 10s # repeat_interval:重復發送告警時間。默認1h repeat_interval: 1m # receiver 定義誰來通知報警 receiver: 'mail'