前言
計算方式不難,但官方文件卻把簡單的事情寫的很複雜,每次要用到重看都得看很久。
趁最近又理解了一次,趕快寫下來。
基本概念
- 會以 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