Prometheus 一條告警的觸發流程、等待時間vim
報警處理流程以下:
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路由規則進行配置。lua
一、等待時間1spa
查看配置文件:vim prometheus.ymlcode
global: # 數據採集間隔 scrape_interval: 15s # 評估告警週期 evaluation_interval: 15s # 數據採集超時時間默認10s # scrape_timeout
二、等待時間2blog
配置文件: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'