AWS CloudWatch Alarm 計算方式

前言

計算方式不難,但官方文件卻把簡單的事情寫的很複雜,每次要用到重看都得看很久。

趁最近又理解了一次,趕快寫下來。

基本概念

  1. 會以 M out of N 方式來設定何時要觸發警告,比如說 2 out of 3 代表查看最近的 3 個 datapoint,如果有 2 個點 breaching 那就觸發警告。因此可以寫成 Datapoints to Alarm ****out of Evaluation Periods
  2. 使用者可以設定 Period 來代表多久評估一次 datapoint
  3. 總共判斷時間 Evaluation interval = # of data points * Period
    • 事實上這只是預估,因為 CloudWatch 會取比 Evaluation Periods 更多的 datapoint 去做判斷
    • 舉例來說:4 out of 5 且 period 為 1 分鐘,那 evaluation interval 為 5 分鐘
  4. Alarm 有三種狀態
    • Not breaching (within the threshold)
    • Breaching (violating the threshold)
    • Missing
  5. 可以設定當判斷資料不足時,要將 missing 視為
    • notBreaching – Missing data points are treated as “good” and within the threshold,
    • breaching – Missing data points are treated as “bad” and breaching the threshold
    • ignore – The current alarm state is maintained
    • missing – If all data points in the alarm evaluation range are missing, the alarm transitions to INSUFFICIENT_DATA.
  6. 判斷方式:
    1. CloudWatch 會抓超過 Evaluation Periods 數量的 datapoints 來計算,因為如果單純看 Evaluation Periods 可能會有缺漏資料(missing data),這時候就看使用者怎麼定義這情況的做法了(參考第 5 點)
    2. 先去看所有抓到的 datapoint,以新到舊排序,如果存在 N 個可用的 datapoint (不是 missing)那麼就可以做判斷
    3. 如果將所有抓到的 datapoint 都判斷完仍沒有達到 N 個,那麼就會將缺少(missing)的 datapoint 個數都套用第 5 點

範例:

(備註:Data points 右邊為最新,左邊為最舊)

3 out of 3 狀況

Data points# of data points that must be filledMISSINGIGNOREBREACHINGNOT BREACHING
0 - X - X0OKOKOKOK
0 - - - -2OKOKOKOK
- - - - -3INSUFFICIENT_DATARetain current stateALARMOK
0 X X - X0ALARMALARMALARMALARM
- - X - -2ALARMRetain current stateALARMOK

2 out of 3 狀況

Data points# of missing data pointsMISSINGIGNOREBREACHINGNOT BREACHING
0 - X - X0ALARMALARMALARMALARM
0 0 X 0 X0ALARMALARMALARMALARM
0 - X - -1OKOKALARMOK
- - - - 02OKOKALARMOK
- - - X -2ALARMRetain current stateALARMOK

最後一筆 - - - X - 是個特例,縱使將 missing datapoint 視為 missing 依舊會觸發 Alarm。其在設計上為在 Evaluation Periods 期間(該例子為 3),當最舊的可用 breaching datapoint 的 “順序” 等於 Datapoint to Alarm “數量” 時,就會觸發 Alarm。

我猜這是個保護機制,擔心這會是機器掛掉前的最後一個 breaching 訊號而之後就真的掛了完全沒回應。以該例子來說,2 out of 3 就 X 在順序為 2 時會觸發 Alarm。

參考文件


comments powered by Disqus