1. はじめに

明けましておめでとうございます! から約1ヶ月経過しましたね・・・
今年もよろしくお願いいたします、Mitsuoです。

早速本題に入るのですが、CloudWatchで監視設定をして、アラームの発報テストをしたいけどメトリクスが出ないからテストが出来ない、そんな事経験した事はありませんか?
それを解消するためのTIPSをご紹介します。

2. 対象読者

CloudWatch Alarmを触ったことがある人

3. 先に結論

CloudWatch Alarmの「欠落データの処理(Treat missing data)」を「欠落データを不正 (しきい値を超えている)として処理(Breaching)」に設定する事で模擬的にアラームを発報可能です。

4. CloudWatchメトリクス出力パターンについて

ご存知の方が多いと思いますが、各AWSサービスは、定期的にCloudWatchへとメトリクスを出力します。
EC2は5分、ECSは1分と、サービスによって仕様が異なりますが、決まった間隔で出力します。
ただ、全てのメトリクスが全て決まった間隔でCloudWatchに出力されているかと言うとそうではなく以下の2パターンがあります。

  • EC2 Instanceの CPU使用率の様にリソースがあれば「継続的にメトリクスを出力する」タイプ
  • LambdaのErrorの様に「発生時のみメトリクスを出力する」タイプ

継続的にメトリクスを出力するタイプでも、EC2インスタンスやエージェントが停止していればメトリクスは取得されません。
また、発生時のみメトリクスを出力するタイプは、そのままですがErrorなどが発生しない限りメトリクスは取得されません。
このようなメトリクスが取得されずデータがない状態は「欠落データ」として扱われます。

5. アラートテスト時の悩み

まず、継続的に取得できるメトリクスである「EC2のCPU使用率」で考えてみます。
アラームのしきい値を一時的に0以上に設定して、模擬的にアラームを引き起こす事が出来ると思います。

次に「LambdaのError」で考えてみます。
そもそもエラーが発生しないとメトリクスが出力されないので、しきい値を「0」にしたとしてもアラームを発報できません。

6. 解決方法

CloudWatch Alarmは、前述した欠落データに対する振る舞いの設定が可能です。
具体的な設定方法についてですが、CloudWatch Alarmの条件設定より「その他の設定」の中にある「欠落データの処理」を「欠落データを不正 (しきい値を超えている)として処理」に変更します。

設定値については以下の4種類があります。

欠落データを不正 (しきい値を超えている)として処理 – 欠落データポイントは「不良」とされ、しきい値超過として扱われます。
欠落データを適正 (しきい値を超えていない)として処理 – 欠落データポイントは「良好」かつしきい値内として扱われます。
欠落データを無視 (アラーム状態を維持する)として処理 – 現在のアラーム状態が維持されます。
欠落データを見つかりませんとして処理 – アラーム評価範囲内のすべてのデータポイントがない場合、アラームは INSUFFICIENT_DATA に移行します。

公式ドキュメント: Amazon CloudWatch でのアラームの使用

不良とみなされたメトリクスデータがアラームを実行するデータポイントの値以上になった時にアラームが発報されます。

7. 最後に

CloudWatchをよく触る人からすると、常識的な話かもしれませんが、比較的オプショナルな機能なので記事にしてみました。
単に設定方法だけでなくメトリクスにおける収集の仕様であったり、欠落データについても解説してみたので、どなたかの役に立てば嬉しいです。

以上です、Mitsuoでしたー。