本文為您介紹監控數據滿足報警條件并觸發報警,但觸發時間晚于預期時間的原因。
首先您需要明確以下兩個概念:
監控指標的Period
表示監控指標數據點的間隔時間及聚合時間,例如:大多數監控指標的Period為60秒,表示每60秒產生一個監控指標數據點,這個監控數據是過去60秒所有監控值的聚合值,或最后一個監控值。
報警的檢測周期
報警的檢測周期由監控指標的Period決定。對于多指標表達式且Period不同的情況,以最短的Period為準,例如:檢測周期為60秒,報警服務每60秒會查詢最近一次的監控數據。
每個監控指標的聚合方式不同,具體請參見附錄1 云產品監控指標中的目標云產品指標列表頁面中的Statistics列。
每個監控指標的周期(period)不同,具體請參見附錄1 云產品監控指標中的目標云產品指標列表頁面中的Min Periods列。
當報警規則中監控指標的Period較長(例如:300秒或900秒)時,由于監控數據可能延遲落盤或監控數據點略早于報警檢測時間點,觸發報警可能會延遲近一個檢測周期。監控指標的Period較短時,一般不會有明顯延遲。
應用分組的可用性監控報警和組進程監控報警、云產品監控指標報警、站點監控報警、企業云監控的promQL報警,不論單指標、多指標、復雜的表達式和同比環比等都是有固定閾值的表達式。以下兩種情況均以單指標的簡單表達式進行介紹。
問題1:周期的監控數據正常上報,數據連續N次滿足報警條件,但延遲接近一個周期才觸發報警
原因
報警檢測的時間點略早于監控數據點,導致報警延遲近一個周期。
示例
假設某監控指標的Period為300秒,那么報警的一個檢測周期也是300秒,報警條件是監控指標平均值連續3個周期大于閾值,即報警,監控數據點如下:
時間 | 數值 |
10:01:30 | 5 |
10:06:30 | 15 |
10:11:30 | 14 |
10:16:30 | 13 |
10:21:30 | 20 |
10:26:30 | 18 |
10:31:30 | 16 |
假設10:06:00發生第一次報警檢測,該時間略早于監控數據時間點10:06:30,此時查詢的監控數據為上個周期的數值5,因此沒有達到閾值的監控數據。
第二次檢測時間點為10:11:00,查詢到監控數據為15,達到閾值,此時數據第一次滿足閾值。
第三次檢測時間點為10:16:00,查詢到監控數據為14,達到閾值,此時數據第二次滿足閾值。
第四次檢測時間點為10:21:00,查詢到監控數據為13,達到閾值,此時數據第三次滿足閾值,發送報警通知。
從上述數據來看,用戶認為第三次滿足閾值的數據應該出現在10:16:30,報警延遲了4分半,接近一個周期。
問題2:監控數據非周期的稀疏上報,報警延遲一個周期
原因
非周期或稀疏上報的監控數據,數據的落盤時間會有延遲。
示例
示例1:假設某個監控指標的周期為300秒或900秒,如果數據較稀疏或非周期上報,則監控數據點最高可能有5分鐘的延遲,例如:10:01:00查詢10:00:00的數據,結果為空;10:05:00再查詢10:00:00的數據,查詢有結果。因此報警檢測時間點可能拿不到當前數據,導致報警延遲一個周期。
示例2:報警條件是有一次閾值大于10,就會報警,具體報警檢測過程如下:
時間 | 報警檢測過程 | 數據說明 |
10:45:00 | 查詢數據正常返回結果,數值為5,未觸發報警。 | - |
11:00:00 | 由于數據稀疏,延遲落盤,導致在該時間未查詢到數據,因此認為數據仍然是上個周期的5,未觸發報警。 | 假設11:05:00再查詢,數據就是10,此時再查看監控數據,認為應該觸發報警。 |
11:15:00 | 查詢數據正常返回結果,數據為12,觸發報警。 | 由于報警檢測周期為15分鐘,從監控數據看,報警延遲發送15分鐘。 |