EC2インスタンスを監視するCloudWatchアラームがアラーム状態にならない
こんにちは、ようへいです。
EC2インスタンスのCPU使用率を監視するCloudWatchアラームがアラーム状態にならない、という事象に遭遇し、解消までに随分と時間を要したので、備忘として記事に残します。
この記事の前提
EC2インスタンスは構築済み
CloudWatch Agentのインストールと必要なIAMロールはアタッチ済み
CloudWatchアラームはCDKで構築する
実現したいこと
特定のEC2インスタンスのCPU使用率を監視し、しきい値を超えたらアラームを発報したい。
CloudWatchアラームの設定内容
名前空間:AWS/EC2
メトリクス名:CPUUtilization
InstanceId:i-XXXXXXXXX
統計:平均値
期間:1分
しきい値の種類:静的
アラーム条件:80%以上
データポイント:1/1
欠落データの処理:適正として処理
この時、CloudWatchの設定画面を見ると、「インスタンス名」の項目が表示されていなかったことに違和感がありました。
問題事象
EC2インスタンスにセッションマネージャでログインし、stressコマンドでCPU使用率を高騰させました。
CDKで設定したCloudWatchアラームがアラーム状態になることを期待していましたが、いつまで待ってもアラーム状態になりませんでした。
CloudWatchアラームの設定画面にあるグラフを見ても、CPU使用率のグラフはずっと0%のまま。
CPU使用率を正しく監視できていない状態でした。
原因
CDKでのディメンションの設定ミスでした。
InstanceIdに設定する値は「i-XXXXXXXXX」が正しいところ、半角スペースが含まれてしまって「△i-XXXXXXXXX」と設定されていました。
アラームの設定画面は穴が開くほど確認し、問題は検知できませんでした。
藁をもつかむ思いでCloudFormationテンプレートを確認したところ「InstanceId:△i-XXXXXXXXX」と設定されていたことに気付き、半角スペースの混入が原因であることがわかりました。
(だから、アラームの設定画面に「インスタンス名」の項目が表示されていなかったんですね・・・)
結果、CloudWatchアラームは特定のEC2インスタンスのメトリクスを認識できず、いつまでもアラーム状態になりませんでした。
対処
インスタンスIDの空白を除去して再デプロイ。
これで、設定画面の見え方期待通りとなり、アラームも正しく検知できました。
何て初歩的な誤りなんだ・・・・。
でも、こういう初歩的な誤りほど見つけ辛いんですよね。
この記事が気に入ったらサポートをしてみませんか?