Promethues配置文件中的時間相關參數
1. scrape_interval:Promethues抓取數據的間隔,默認為1分鍾
2. evaluation_interval:評估間隔,Promethues跑一遍所有的定義好的alerting rules,並更新alerting的狀態
3. alert status:
inactive: 未達到告警的條件
pending: 達到了告警的條件,但是持續時間小於設定的閾值時間(取決於有沒有for語句,如果沒有將直接從inactive跳到firing狀態)
firing: 達到了告警的條件,且持續時間大於設定的時間閾值
4. alert sending:
group_wait: 等待該時間,目的是將該時間段內所有的屬於同一個組的alert打包一起發送告警通知
group_interval:下一次評估過程中,同一個組的alert生效,則會等待該時長發送告警通知,此時不會等待group_wait設置的時間
Alertmanager內部架構圖
- 從左上開始,Prometheus 發送的警報到 Alertmanager;
- 警報會被存儲到 AlertProvider 中,Alertmanager 的內置實現就是包了一個 map,也就是存放在本機內存中,這里可以很容易地擴展其它 Provider;
- Dispatcher 是一個單獨的 goroutine,它會不斷到 AlertProvider 拉新的警報,並且根據 YAML 配置的 Routing Tree 將警報路由到一個分組中;
- 分組會定時進行 flush (間隔為配置參數中的 group_interval), flush 后這組警報會走一個 Notification Pipeline 鏈式處理;
- Notification Pipeline 為這組警報確定發送目標,並執行抑制邏輯,靜默邏輯,去重邏輯,發送與重試邏輯,實現警報的最終投遞;
參考資料