CloudWatch アラームの欠落データの処理の設定

CloudWatch アラームの欠落データの処理の設定
に記載されている表がぱっと見で理解できなかったので解説します。
割とニッチな内容ですしAWSに対するある程度の知見がある方向けの記事です。

#目次
・言葉の説明
・評価期間に欠落したデータがあったらどうなるか
・missingについて解説 & ignoreについて表で捕捉


#今回出てくる言葉の説明（ざっくり）


<strong>欠落したデータ</strong>
→ cloudwatchで取得できなかったデータ
<strong> [Evaluation Periods (評価期間)]</strong>
→ アラームの状態を決めるまでにかかる期間（またはデータポイントの数）
<strong>[Datapoints to Alarm (アラームを実行するデータポイント)] </strong>
→ アラームの状態が「ALARM」に移るためのボーダーライン
<strong>notBreaching </strong>
→ 欠落データポイント：「良好」
<strong>breaching </strong>
→ 欠落データポイント：「不良」
<strong>ignore </strong>
→ 欠落データポイント：「無効」
→ 前の状態を意識すればおのずと理解できる
<strong>missing </strong>
→ アラーム評価範囲内のすべてのデータポイントがない場合、アラームは INSUFFICIENT_DATA に移行
→ 振る舞いが特殊

#評価期間に欠落したデータがあったらどうなるか
[結論]：評価期間が伸び、再評価される。

##-例１-
下で解説しますが条件は以下です
[評価期間] ： 3 
[アラームを実行するデータポイント]：3
[伸びた結果の評価期間]：5
[0]：「良好」
[X]：「不良」
[-]：「欠落」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969819/2a604b64-0ba3-ae37-e5ca-737b11dd1bac.png)

###-解説-

@@@@ざっくりいうと@@@@
直近3つのデータで判断 → 欠落してるんで直近5つのデータで判断 → それでも欠落してるんで欠落しているデータを自分が設定したルールにしたがって判断
@@@@@@@@@@@@@@@@

細かく説明すると以下の通り

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969819/918464e7-7a05-04ed-82fe-fd6e3db6173f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969819/863ada58-ce81-707f-5d52-e881eb8ba497.png)

そして今回の場合、ルール以下のように判断できる
①
[5つのデータの評価できる個数] → 評価できるデータが3つあり評価できる
②
[5つのデータの評価できる個数] → 評価できるデータが1つしかないため2つ評価する必要がある 
③
[5つのデータの評価できる個数] → 評価できるデータが1つもないため3つ評価する必要がある
④
[5つのデータの評価できる個数] → 評価できるデータが4つあり直近の3つのデータを評価する
⑤
[5つのデータの評価できる個数] → 評価できるデータが1つしかないため2つの評価する必要がある

実質

| データポイント| 欠落データポイント数	| MISSING | IGNORE | BREACHING | NOT BREACHING |
|:-:|:-:|:-:|:-:|:-:|:-:|
| 0 - X - X  |  0 | ALARM  |  ALARM |  ALARM | ALARM  |
| - - - - 0  | 2  |  OK | OK  | - - X X 0  | - - 0 0 0  |
| - - - - -  |  3 |   - - - - -|  現在の状態を維持 | - - X X X  |  - -  0 0 0 |
|  0 X X - X|  0  | ALARM  |  ALARM |  ALARM | ALARM  |
|  - - X - - |  2 | - - X - -  |    | - - X X X   | - - X 0 0  |




では同様に例２も示してみます。

##-例２-
[評価期間] ： 3 
[アラームを実行するデータポイント]：2
[伸びた結果の評価期間]：5
[0]：「良好」
[X]：「不良」
[-]：「欠落」

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969819/40867925-cfbc-aa16-3f8e-55278d8f5c67.png)

###-解説-
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969819/48c391cf-5743-e5c1-3647-0dfb5fe7fa28.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969819/18bee7b1-08d6-213d-0d3d-a142628622f5.png)


①
[5つのデータの評価できる個数] → 3つあり評価できる
②
3つあり評価できる（評価期間を延ばす必要がない）
③
[5つのデータの評価できる個数] → 評価できるデータ：2つ・再評価するデータ：1つ
④
[5つのデータの評価できる個数] → 評価できるデータ：1つ・再評価するデータ：2つ
⑤
[5つのデータの評価できる個数] → 評価できるデータ：1つ・再評価するデータ：2つ

#missingについて解説 & ignoreについて表で捕捉
##missingについて
すべてのデータが欠落 ：INSUFFICIENT_DATA

次の最新データが 0 の場合アラームにならない可能性がある ：OK

伸びる前の評価期間の中で一番古いデータが X ・ その他データは欠損 ：ALARM

前の状態を意識すればおのずと理解できる

##ignoreについて
現在の状態を維持するので前の状態を意識すればおのずと理解できます

###-例１-

実質以下のようになります

| データポイント| 欠落データポイント数	| MISSING | IGNORE | BREACHING | NOT BREACHING |
|:-:|:-:|:-:|:-:|:-:|:-:|
| 0 - X - X  |  0 | OK  |  OK |  OK | OK  |
| - - - - 0  |  2 |  次のデータが0の時ALARMにならない → <strong>OK</strong> | 今はALARMになるほど X がない → <strong>OK</strong> | - - X X 0  | - - 0 0 0  |
| - - - - -  |  3 |  すべて欠落している → <strong>INSUFFICIENT_DATA</strong>|  3つ前の状態を考えるとX X X - - となる可能性があるのでOKとはかけない → <strong>現在の状態を維持</strong>| - - X X X  |  - -  0 0 0 |
|  0 X X - X |  0  | ALARM  |  ALARM |  ALARM | ALARM  |
|  - - X - - |  2 | 評価期間が3で3番目のデータがX・その他データが欠損 → <strong>ALARM</strong>  |  2つ前の状態を考えるとX X - - X の可能性があるのでOKとは書けない → <strong>現在の状態を維持</strong>  | - - X X X   | - - X 0 0  |


###-例２-

| データポイント| 欠落データポイント数	| 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  |   次のデータが0の時ALARMにならないかも→<strong>OK</strong>|  OK| - 0 - X - X  |  - -  0 0 0 |
|  0 - - - - 0 | 2  |  OK |   OK |  ALARM |  OK |
|  - - - - X -| 2  | 評価期間が2で2番目のでデータがX・その他データが欠損→<strong>ALARM</strong> |現在の状態を維持 | - - X X X   | - - X 0 0  |

参考元：
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html