雲監控系統,可以做到實時的檢測雲産品的關鍵名額,并可自定義告警門檻值和發送告警的規則。配置監控的步驟比較簡單,跟着頁面提示勾勾選選即可完成。但是深究起來,發現裡面埋着很多數學計算的複雜邏輯。
本篇重點解決其中一種常見疑惑,告警通知與監控系統經常對不上,懷疑告警不準确。
問題背景:
1. mongo資料庫的告警通知:
告警内容:雲資料庫MongoDB | 雲資料庫(MongoDB)機關時間延遲次數(100ms以上)>2000次
告警對象:cmgo-xxxx
目前資料:4123次
觸發時間:2020-02-04 18:30:00(UTC+08:00)
持續時間:5分鐘
2. 檢視系統監控,對應時間最高700-800的樣子,并沒有通知的4123次。
下面通過一個測試,詳細闡述告警政策配置和監控值之間的隐秘關系。
2 條政策配置分别如下,均是根據5分鐘的監控資料做告警,但是差別較大:

政策名稱:mongo-1minute; 統計周期1分鐘,持續5個周期
政策名稱:mongo-5minute; 統計周期5分鐘,持續1個周期
差別一:統計周期不同。統計周期代表名額數值采集的粒度,以及對應會采用的不同的聚合方法。
差別二:持續周期不同。持續周期代表周期内,超過門檻值的采集點持續一定時間,才會觸發告警。
那麼兩個政策分别表示:
mongo-1minute: 使用采集粒度為1分鐘的監控,持續有連續6個采集點(5個間隔)的值大于100次,才會告警;
mongo-5minute: 使用采集粒度為5分鐘的監控,持續有連續2個采集點(1個間隔)的值大于100次,才會告警。
下面看控制台監控曲線:
預設頁面,顯示時間粒度為1分鐘,監控值在25次左右波動。
1分鐘粒度監控曲線
更換時間粒度為5分鐘,因為名額機關為次數,會經過sum聚合,名額值為125次左右波動。
5分鐘粒度監控曲線
可見監控資料采集粒度和聚合的方式不同,會得到不同的監控曲線。
那麼兩個告警政策,是否會觸發告警,哪個政策會觸發告警呢?
答案是:
mongo-5minute 觸發了告警,對應使用粒度5分鐘的曲線,連續2個點超過100,即觸發了告警。
mongo-1minute 沒有觸發告警,對應使用監控粒度1分鐘的曲線,沒有超過100次的點,是以沒有告警。
再舉一例,加深了解。
修改mongo-1minute 的門檻值為20次,其餘不變,那麼根據如下監控,18:45分取值20不符合大于20的條件,18:51時為第6個取值超過20的點(分别是18:46,18:47,18:48,18:49,18:50,18:51),觸發告警。
政策名稱:mongo-1minute; 統計周期1分鐘,持續5個周期
當然,除了這裡舉例的名額采用的sum聚合方式外,還有Max、Min、Avg等不同的聚合方式,結合名額的真實含義來定義。
最後回到最初的那個疑問,便比較容易解答。
重新檢視雲監控的告警配置,發現采用的統計周期為5分鐘,更換監控粒度為5分鐘且sum的聚合方式後,檢視到對應時間峰值為4123,監控與告警完全一緻,符合預期。