前言
計算方式不難,但官方文件卻把簡單的事情寫的很複雜,每次要用到重看都得看很久。
趁最近又理解了一次,趕快寫下來。
基本概念
- 會以 M out of N 方式來設定何時要觸發警告,比如說 2 out of 3 代表查看最近的 3 個 datapoint,如果有 2 個點 breaching 那就觸發警告。因此可以寫成
Datapoints to Alarm****out ofEvaluation Periods。 - 使用者可以設定
Period來代表多久評估一次 datapoint - 總共判斷時間
Evaluation interval=# of data points*Period- 事實上這只是預估,因為 CloudWatch 會取比 Evaluation Periods 更多的 datapoint 去做判斷
- 舉例來說:4 out of 5 且 period 為 1 分鐘,那 evaluation interval 為 5 分鐘
- Alarm 有三種狀態
- Not breaching (within the threshold)
- Breaching (violating the threshold)
- Missing
- 可以設定當判斷資料不足時,要將 missing 視為
notBreaching– Missing data points are treated as “good” and within the threshold,breaching– Missing data points are treated as “bad” and breaching the thresholdignore– The current alarm state is maintainedmissing– If all data points in the alarm evaluation range are missing, the alarm transitions to INSUFFICIENT_DATA.
- 判斷方式:
- CloudWatch 會抓超過 Evaluation Periods 數量的 datapoints 來計算,因為如果單純看 Evaluation Periods 可能會有缺漏資料(missing data),這時候就看使用者怎麼定義這情況的做法了(參考第 5 點)
- 先去看所有抓到的 datapoint,以新到舊排序,如果存在 N 個可用的 datapoint (不是 missing)那麼就可以做判斷
- 如果將所有抓到的 datapoint 都判斷完仍沒有達到 N 個,那麼就會將缺少(missing)的 datapoint 個數都套用第 5 點
範例:
(備註:Data points 右邊為最新,左邊為最舊)
3 out of 3 狀況
| Data points | # of data points that must be filled | MISSING | IGNORE | BREACHING | NOT BREACHING |
|---|---|---|---|---|---|
| 0 - X - X | 0 | OK | OK | OK | OK |
| 0 - - - - | 2 | OK | OK | OK | OK |
| - - - - - | 3 | INSUFFICIENT_DATA | Retain current state | ALARM | OK |
| 0 X X - X | 0 | ALARM | ALARM | ALARM | ALARM |
| - - X - - | 2 | ALARM | Retain current state | ALARM | OK |
2 out of 3 狀況
| Data points | # of missing data points | MISSING | IGNORE | BREACHING | NOT BREACHING |
|---|---|---|---|---|---|
| 0 - X - X | 0 | ALARM | ALARM | ALARM | ALARM |
| 0 0 X 0 X | 0 | ALARM | ALARM | ALARM | ALARM |
| 0 - X - - | 1 | OK | OK | ALARM | OK |
| - - - - 0 | 2 | OK | OK | ALARM | OK |
| - - - X - | 2 | ALARM | Retain current state | ALARM | OK |
最後一筆 - - - X - 是個特例,縱使將 missing datapoint 視為 missing 依舊會觸發 Alarm。其在設計上為在 Evaluation Periods 期間(該例子為 3),當最舊的可用 breaching datapoint 的 “順序” 等於 Datapoint to Alarm “數量” 時,就會觸發 Alarm。
我猜這是個保護機制,擔心這會是機器掛掉前的最後一個 breaching 訊號而之後就真的掛了完全沒回應。以該例子來說,2 out of 3 就 X 在順序為 2 時會觸發 Alarm。
參考文件
- Using Amazon CloudWatch alarms https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html
comments powered by Disqus