【小ネタ】CloudWatchの「StatusCheckFailed_Instance」と「StatusCheckFailed_System」について

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

こんにちは。半瀬です。

今日はサポート対応の備忘ネタで一筆してみようかと思います。

EC2インスタンスが突然落ちた

よくあるサポートケースとして、お客様環境のEC2インスタンスが何らかの理由でネットワーク疎通不能となり、お客様より当該インスタンスからのステータスチェックのアラームを受信したので、その原因調査と対策を提示してもらいたい、といったご要望があります。

そういったケースにおいて、まず障害原因の切り分けとして知りたいのは、 「AWS側のEC2ホスティングのシステム的な問題がある」 のか、 「EC2インスタンス内部に問題がある(リソース不足など様々)」 のか、という点です。その結果如何で、ログイン調査をする必要があるのか、AWSサポートに問い合わせる必要があるのか、初期調査の方針が変わってくるからです。

というわけで、今日はインスタンス障害が起きた際の初動確認の観点から、確認すべきCloudWatch項目についてのメモを残しておこうかと思います。

「StatusCheckFailed_Instance」と「StatusCheckFailed_System」

早速結論ですが、確認すべき項目はこの2点です。

CloudWatchの標準メトリクスには「StatusCheckFailed_Instance」と「StatusCheckFailed_System」というものが用意されています。

公式ではコチラです。抜粋すると、

      ・StatusCheckFailed_Instance : 個々のインスタンスのソフトウェアとネットワークの設定を監視します。
      ・StatusCheckFailed_System : インスタンスを使用するために必要な AWS システムを監視して、AWS システムが正常に実行されていることを確認します。

とあります。CloudWatchの見方としては、

      ・「EC2インスタンス内部に問題がある」ときは、「StatusCheckFailed_Instance」の値が1となっている。
      ・「AWS側のEC2ホスティングのシステム的な問題がある」ときは、「StatusCheckFailed_System」の値が1となっている。

となります。

※ 予めインスタンス起動時にCloudWatchによる詳細なモニタリングを「On」にしておく必要があります。

確認の仕方あれこれ

1. AWSマネジメントコンソール:EC2インスタンス

EC2インスタンスのコンソールからは、まず障害のあったインスタンスのIDを検索し、
<モニタリング>タブを指定→ 一番下にスクロールします。
スクリーンショット 2015-07-15 22.09.52

項目「ステータスチェックに失敗(システム)」、「ステータスチェックに失敗(インスタンス)」がそれにあたります。
スクリーンショット 2015-07-15 22.10.26

それぞれクリックして、拡大が可能です。詳細な時間まで追ってみます。

1.「ステータスチェックに失敗(インスタンス)」=「StatusCheckFailed_Instance」

スクリーンショット 2015-07-15 22.11.12
2.「ステータスチェックに失敗(システム)」=「StatusCheckFailed_System」
スクリーンショット 2015-07-15 22.12.08
上記は同じ時間帯を表示していますが、(モザイクをかけていてよくわかりませんが;)このケースでは、「StatusCheckFailed_Instance」の値が1で、「StatusCheckFailed_System」が0(変化なし)、つまり、「EC2インスタンス内部に問題がある」と判断ができます。
こちらを受けて、管理者は当該インスタンスにログインが可能な状況になったあと、OS起動ログなどから原因を調査を開始する必要がある、と判断できます。

2. AWSマネジメントコンソール:CloudWatch

CloudWatchのコンソール上でもIDから確認ができます。こちらの方が早そうです。
スクリーンショット 2015-07-15 22.12.54

ID検索後に、「StatusCheckFailed_Instance」と「StatusCheckFailed_System」の両項にチェックを入れます。するとグラフが重なった状態で表示されますので、障害発生時間帯まで遡ります。
スクリーンショット 2015-07-15 22.16.07

、という流れです。

3. cliで取得する方法

aws_cliなどでも確認ができます。以下記事の様に事後調査用スクリプトで準備しておくのも良さそうです。
指定したある一定の期間の間にステータスチェックが失敗しているインスタンスの一覧取得

※ 予めインスタンス起動時にCloudWatchによる詳細なモニタリングを「On」にしておく必要があります。

参考記事のご紹介

その他の標準メトリクスなどについては、以下の記事などをご参照ください。
【AWS】CloudWatch入門/EC2のステータスチェックを行ってみよう
[CloudWatch]グラフの確認方法と確認できるグラフ一覧(EC2/ELB/RDS)

さいごに

CloudWatchの小ネタでした。その他のCloudWatchメトリクスの見方についても、障害切り分けにからめつつご紹介をしていければと思っています。

それでは。