やりたかったこと
- EC2のCPU・メモリ使用率を監視
- CloudWatch Alarm→SNS→Lambdaで通知/処理
- 「CPU使用率80%以上が3分継続」などの条件で発火させたい
起きたこと
- メモリ使用率は期待通りアラーム発火
- EC2 CPUは期待通りアラーム発火しない
- アラーム設定は間違ってなさそうなのに動かない
原因
EC2の基本モニタリングは5分間隔
CloudWatch Alarmでは
「CPU使用率80%以上が3分継続」
を判定したかったが、
EC2標準メトリクスのCPU使用率は5分粒度のため
1分単位の判定に必要なデータが存在しなかった
解決策
- EC2の詳細モニタリングを有効化して1分メトリクスにする
- インスタンスごとに追加料金発生
- CloudWatchエージェントでEC2のCPU使用率も60秒間隔で送る
- カスタムメトリクス料金が発生
- アラーム条件をメトリクス粒度に合わせて設計する
まとめ
- 監視設計では閾値だけでなくメトリクス粒度を確認する
- CloudWatch Alarmの評価期間はメトリクス粒度に依存する