CloudWatch アラームが思うようにアラーム状態にならないときに確認してほしい「期間」の設定

基本モニタリングが有効な EC2 インスタンスで CloudWatch アラームを作成するときに「期間」の設定に注意しようという記事です。
2022.08.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

EC2 インスタンスの CPUUtilization が 10分間 80% を超えた時にアラーム状態になるように CloudWatch アラームの設定を行いたいです。

「期間」を 1 分間として、アラームを実行するデータポイントを 10 分内に 10 個のデータポイントとして設定しましたが、 CPUUtilization が 10 分の間 80% を超えているにも関わらず、アラーム状態になりませんでした。

設定に間違えがありますでしょうか?対処方法を教えてください。

testCPU80

どうしてアラーム状態にならなかったの?

アラームの「期間」を 1 分として設定すると、CloudWatch アラームはメトリクスを 1 分ごとに 1 回評価します。 しかしながら、EC2 インスタンスではデフォルトで基本モニタリングが有効となっているため、データは 5 分間隔で取得されます。

データが 5 分間隔でしか取得されないため、CloudWatch アラームは 間の 4 分間を欠落データとして扱います。

CloudWatchアラーム欠落

そのため、欠落データの処理を「欠落データを適正 (しきい値を超えていない)として処理」として設定している場合は、間の 4 分間はしきい値を超えてないと判断されています。

欠落データの処理

どう対応すればいいの?

1. アラームの「期間」を 5 分に変更

アラームの「期間」を 5 分に設定することで、5 分毎に 1 回の評価となるため、欠落データが生じなくなります。 10 分間 80% を超えた時にアラーム状態となるようにするために、アラームを実行するデータポイントを併せて 10/10 から 2/2 に変更します。

5分間隔でのアラーム

2. 詳細モニタリングの有効化

CPUUtilization メトリクスを 1 分ごとに取得できるように詳細モニタリングの有効化(※有料)を実施して対処することも可能です。その場合はアラームを実行するデータポイントを 10/10 から変更する必要はございません。

データ取得 All OK2

参照