1.はじめに
皆さんはEC2のCloudWatch Alarmアクションを利用していますか。
現在参画しているプロジェクトでは、StatusCheckFailed_Systemメトリクスで復旧アクションを設定しております。
そんなある日、突然AWS Health Dashboardからメールが飛んできました。
上記復旧アクション起因のメールだったのですが、そもそもメールが来ること自体認識できておらず、とても焦りました。
今回はどういった条件でメールが発報されたのか共有します。焦らないように事前に目を通しておきましょう。
2.EC2のCloudWatch Alarmアクションに関連するステータスチェックについて
EC2には、インスタンスの正常性を確認するために2種類のステータスチェックが存在します。
| 種類 | 内容 | 対象 |
|---|---|---|
| StatusCheckFailed_System | AWS側インフラの異常 | 物理ホスト・ネットワークなど |
| StatusCheckFailed_Instance | インスタンス内部の異常 | OS・アプリなど |
今回取り上げのは復旧アクションを設定することができるStatusCheckFailed_Systemになります。
CloudWatchのメトリクスで確認する際の値は以下の通りとなります。
- 0:正常
- 1:異常
このメトリクスで1になる原因は以下の通りとなります。
- ネットワーク接続の喪失
- システム電源の喪失
- 物理ホストのソフトウェアの問題
- ネットワーク到達可能性に影響する、物理ホスト上のハードウェアの問題
多くの場合、1が1度検知されたタイミングでアラーム状態へ遷移し、復旧アクションが実行されるようCloudWatch Alarmを設定しているかと思います。
動作フローについてまとめると以下となります。
- CloudWatchがメトリクスを監視
- 異常(0→1)を検知
- アラーム状態へ遷移
- EC2に対して復旧アクション実行
- 別ホストに移動して復旧する
つまり、AWS側で管理している領域で何かトラブルが発生した際に、自動でEC2インスタンスを復旧するというものです。
3.復旧アクション起因のメール発報について(本題)
今回、 「Auto Recovery action was triggered for your EC2 but no action was taken.」 というメールが飛んできました。
結論、このメールは焦る必要も何か対応する必要もありません。無視して大丈夫です。
ではどういう状況下でメールが発報されるのか、以下にて紹介いたします。
前提
まず設定値について確認すると、これまでに説明したものに加えて、欠落データがある場合は異常と判断するよう設定を行っていました。
この設定だと、EC2を停止した時に欠落データが検知され、異常となり、復旧アクションが実行される状態になっています。
(欠落データは停止時だけのものではありませんので、この設定自体が悪いというわけではありませんので、その点ご注意ください。)
ただし、復旧アクションが実行された際に、EC2インスタンスが停止状態の時、復旧アクションは「失敗」します。
この「失敗」時はメール発報されませんので、今回の事象とは関係ありません。
動作フローについてまとめると以下となります。
- EC2インスタンスを停止する
- CloudWatchメトリクスにて欠落データが発生、異常と判断
- 復旧アクションが実行
- EC2インスタンスが停止状態のため「失敗」
- 何も起こらない
上記前提をもとに、今回メールが飛んだのは、EC2インスタンスを停止後すぐに起動したからだと推測しております。
推測と言っているのは、AWSサポートに問い合わせたところ、明確にYESという回答が得られなかったためです。
動作フローについてまとめると以下となります。
- EC2インスタンスを停止する
- CloudWatchメトリクスにて欠落データが発生、異常と判断
- 復旧アクションが実行
- EC2インスタンスを起動する
- EC2インスタンスが起動状態のため 「成功」
- EC2インスタンスを復旧しようと試みるが、EC2インスタンスは正常であるため、復旧する必要なしと判断され、何も起こらない
- その旨のメールが発報される
つまり、復旧アクションが「成功」しても復旧に関する処理が実行されなかった場合に、メールが発報されます。
今回のように、停止後すぐ起動することで、復旧アクションが「成功」となってしまうことが大きな原因かと思います。
4.まとめ
メール発報されることがあるということを認識できていなかったのもあり、とても焦りました。
また、30台程度のEC2インスタンスを利用していたため、30通のメールが一斉に飛んできて、本当に焦りました・・・。
CloudWatch Alarmアクションを設定した際には、AWS Health Dashboardからメールが飛んでくる可能性があることを認識するとともに、今回紹介したメールについては、無視して問題ない点を認識いただけたらと思います。
これを見て、焦らなくて済む人が増えますように。