インスタンスのステータスチェック - Amazon Elastic Compute Cloud

インスタンスのステータスチェック

インスタンスのステータスのモニタリングでは、インスタンスによるアプリケーションの実行を妨げる可能性のある問題をAmazon EC2 が検出したかどうかをすばやく判断できます。Amazon EC2 は、稼働中のすべての EC2 インスタンスに対して自動チェックを実行して、ハードウェアおよびソフトウェアの問題を特定します。これらのステータスチェックの結果を表示して、具体的で検出可能な問題を識別できます。このイベントステータスデータは、各インスタンス (pendingrunningstopping) の状態に関して Amazon EC2 が既に提供している情報と、Amazon CloudWatch が監視している使用状況メトリクス (CPU 使用率、ネットワークトラフィック、ディスクアクティビティ) を補足するものです。

ステータスチェックは 1 分ごとに実行され、それぞれ成功または失敗のステータスが返ります。すべてのチェックが成功すると、インスタンス全体のステータスが OK になります。1つ以上のチェックが失敗すると、全体のステータスが impaired になります。ステータスチェックは Amazon EC2 に組み込まれています。そのため、無効にしたり、削除したりすることはできません。

ステータスチェックに失敗すると、ステータスチェックの対応する CloudWatch メトリクスは増加します。詳細については、ステータスチェックメトリクスを参照してください。このようなメトリクスを使用して、ステータスチェックの結果に基づいてトリガーされる CloudWatch アラームを作成することができます。例えば、特定のインスタンスでステータスチェックが失敗したときに警告するアラームを作成できます。詳細については、ステータスチェックアラームの作成と編集を参照してください。

また、Amazon EC2 インスタンスをモニタリングし、基になる問題によりインスタンスが正常に機能しなくなった場合に、自動的にインスタンスを復旧する Amazon CloudWatch アラームを作成できます。詳細については、インスタンスの復旧を参照してください。

ステータスチェックのタイプ

ステータスチェックには 3 種類あります。

システムステータスのチェック

システムステータスチェックは、インスタンスが実行されている AWS システムをモニタリングします。これらのチェックでは、修復には AWS の関与が必要なインスタンスの基盤の問題が検出されます。システムステータスチェックが失敗した場合、AWS が問題を解決するのを待つか、自分で解決できるかを選択できます。Amazon EBS でバックアップされたインスタンスの場合は、インスタンスを自分で停止および起動することができます。通常、インスタンスは新しいホストに移行されます。Linux インスタンスストアによってサポートされているインスタンスの場合、インスタンスを終了して置き換えることができます。Windows インスタンスの場合、ルートボリュームは Amazon EBS ボリュームであることが必要です。インスタンスストアはルートボリュームではサポートされません。インスタンスストアボリュームは短期のものであり、インスタンスが停止するとすべてのデータが失われることに注意してください。

システムステータスチェックの失敗の原因となる問題の例を次に示します。

  • ネットワーク接続の喪失

  • システム電源の喪失

  • 物理ホストのソフトウェアの問題

  • ネットワーク到達可能性に影響する、物理ホスト上のハードウェアの問題

システムステータスチェックが失敗した場合、StatusCheckFailed_system メトリックをインクリメントします。

ベアメタルインスタンス

ベアメタルインスタンス上のオペレーティングシステムから再起動を実行すると、システムステータスチェックが一時的に失敗ステータスを返すことがあります。インスタンスが使用可能になると、システムステータスチェックからは成功ステータスが返されます。

インスタンスステータスのチェック

[インスタンスステータスのチェック] 個々のインスタンスのソフトウェアとネットワークの設定をモニタリングします。Amazon EC2 は、ネットワークインターフェイス (NIC) にアドレス解決プロトコル (ARP) リクエストを送信することでインスタンスのヘルスをチェックします。これらのチェックでは、ユーザーが関与して修復する必要のある問題が検出されます。インスタンスステータスチェックが失敗した場合は通常、自分自身で (例えば、インスタンスを再起動する、インスタンス設定を変更するなどによって) 問題に対処する必要があります。

インスタンスステータスチェックの失敗の原因となる問題の例を次に示します。

  • 失敗したシステムステータスチェック

  • 正しくないネットワークまたは起動設定

  • メモリの枯渇

  • 破損したファイルシステム

  • 互換性のないカーネル

インスタンスのステータスチェックが失敗した場合、StatusCheckFailed_instance メトリクスをインクリメントします。

ベアメタルインスタンス

ベアメタルインスタンス上のオペレーティングシステムから再起動を実行すると、インスタンスのステータスチェックが一時的に失敗ステータスを返すことがあります。インスタンスが使用可能になると、インスタンスステータスチェックからは成功ステータスが返されます。

アタッチ済みの EBS ステータスチェック

アタッチ済みの EBS ステータスチェックは、インスタンスにアタッチされている Amazon EBS ボリュームが到達可能かどうか、および I/O 操作を完了できるかどうかをモニタリングします。StatusCheckFailed_AttachedEBS メトリクスは、インスタンスにアタッチされている 1 つ以上の EBS ボリュームが I/O 操作を完了できない場合に障害が発生することを示すバイナリ値です。これらのステータスチェックは、コンピューティングまたは Amazon EBS インフラストラクチャの根本的な問題を検出します。アタッチ済みの EBS ステータスチェックメトリクスが失敗した場合は、AWS を待って問題を解決するか、影響を受けたボリュームの置き換えやインスタンスの停止および再起動などのアクションを取ることができます。

アタッチ済みの EBS ステータスチェックが失敗する原因となる問題の例を次に示します。

  • EBS ボリュームの基盤となるストレージサブシステムのハードウェアまたはソフトウェアの問題

  • EBS ボリュームの到達可能性に影響する、物理ホスト上のハードウェアの問題

  • インスタンスと EBS ボリューム間の接続に関する問題

StatusCheckFailed_AttachedEBS メトリクスを使うことで、ワークロードの耐障害性を向上できます。このメトリクスを使用して、ステータスチェックの結果に基づいてトリガーされる Amazon CloudWatch アラームを作成することができます。例えば、長期にわたる影響を検出した場合は、セカンダリインスタンスまたはアベイラビリティーゾーンにフェイルオーバーできます。または、EBS CloudWatch メトリクスを使用してアタッチされた各ボリュームの I/O パフォーマンスをモニタリングし、障害のあるボリュームを検出して置き換えることもできます。ワークロードがインスタンスにアタッチされたどの EBS ボリュームに対しても I/O を提供していない上に、アタッチ済みの EBS ステータスチェックで障害が判明した場合は、インスタンスを停止して起動することで、EBS ボリュームの到達可能性に影響を与えている物理ホストの問題に対処できます。

注記
  • アタッチ済みの EBS ステータスチェックメトリクスは、Nitro インスタンスでのみ使用できます。

  • StatusCheckFailed_AttachedEBS メトリックスに基づいて CloudWatch アラームを作成することにより、アタッチ済みの EBS ステータスチェックメトリクスをモニタリングできます。describe-instance-status (AWS CLI) コマンドを使用しても、このステータスチェックは表示できません。

ステータスチェックの操作

ステータスチェックは、AWS CLI などのコンソールおよびコマンドラインツールを使用して実行できます。

ステータスチェックの表示

ステータスチェックを表示するには、以下のいずれかの方法を使用します。

Console
ステータスチェックを表示するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. [インスタンス] ページで、[Status check (ステータスチェック)] 列には、各インスタンスの動作状況が表示されます。

  4. 特定のインスタンスのステータスを表示するには、インスタンスを選択して、[ステータスとアラーム] タブを選択します。

    
                                            [ステータスとアラーム] タブでインスタンスのステータスチェックを表示します。

    インスタンスに失敗したステータスチェックがある場合、通常は、自分自身で (例えば、インスタンスを再起動する、インスタンス設定を変更するなどによって) 問題に対処する必要があります。ご自分でシステムまたはインスタンスのステータスチェック失敗のトラブルシューティングを行う場合は、ステータスチェックに失敗したインスタンスのトラブルシューティングを参照してください。

  5. ステータスチェックで CloudWatch メトリクスを確認するには、[ステータスとアラーム] タブで [メトリクス] を展開し、以下のメトリクスのグラフを表示します。

    • [システムのステータスチェックの失敗]

    • [インスタンスのステータスチェックの失敗]

    詳細については、「ステータスチェックメトリクス」を参照してください。

Command line

describe-instance-status (AWS CLI) コマンドを使用すると、実行中のインスタンスのステータスチェックを表示できます。

すべてのインスタンスのステータスを表示するには、次のコマンドを使用します。

aws ec2 describe-instance-status

インスタンスステータスが impaired であるすべてのインスタンスのステータスを取得するには、次のコマンドを使用します。

aws ec2 describe-instance-status \ --filters Name=instance-status.status,Values=impaired

単一のインスタンスのステータスを取得するには、以下のコマンドを使用します。

aws ec2 describe-instance-status \ --instance-ids i-1234567890abcdef0

または、以下の コマンドを使用します。

ステータスチェックが失敗したインスタンスがある場合は、ステータスチェックに失敗したインスタンスのトラブルシューティングを参照してください。

ステータスチェックアラームの作成と編集

ステータスチェックメトリクスを使用して、インスタンスのステータスチェックに失敗したときに通知されるように CloudWatch アラームを作成することができます。

ステータスチェックアラームを作成するには、以下のいずれかの方法を使用します。

Console

次の手順に従って、E メールで通知を送信するか、ステータスチェックに失敗したときにインスタンスを停止、終了、または回復するアラームを設定します。

ステータスチェックアラームを作成するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. インスタンスを選択して、[Status Checks (ステータスチェック)] タブを選択し、[アクション]、[Create status check alarm (ステータスチェックアラームの作成)] を選択します。

  4. [Manage CloudWatch alarms (CloudWatch アラームの管理)] ページの [Add or edit alarm (アラームの追加または編集)] で、[Create an alarm (新しいアラームの作成)] を選択します。

  5. [Alarm notification (アラーム通知)] で、トグルをオンにして Amazon Simple Notification Service (Amazon SNS) 通知を設定します。既存の Amazon SNS トピックを選択するか、名前を入力して新しいトピックを作成します。

    受信者のリストに E メールアドレスを追加したか、トピックを新規作成した場合、Amazon SNS から追加した各 E メールアドレスにサブスクリプションの確認メールメッセージが送信されます。各受信者は、そのメッセージに記載されているリンクを選択してサブスクリプションを確認する必要があります。アラート通知は確認されたアドレスにのみ送信されます。

  6. [Alarm action (アラームアクション)] で、トグルをオンにして、アラームがトリガーされたときに実行するアクションを指定します。アクションを選択します。

  7. [Alarm thresholds (アラームのしきい値)] で、アラームのメトリクスと条件を指定します。

    [Group samples] (サンプルグループ化) ([Average] (平均)) と [Type of data to sample] (サンプリングするデータのタイプ) (ステータスチェックも失敗) をデフォルト設定のままにするか、または必要に応じて変更することもできます。

    [Consecutive period] (連続期間) の場合、評価する期間数を設定し、[Period] (期間) で、アラームをトリガーして E メールを送信するまでの評価の間隔を入力します。

  8. (オプション) [Sample metric data] (サンプルメトリクスデータ) の場合、[Add to dashboard] (ダッシュボードに追加) を選択します。

  9. [Create] (作成) を選択します。

インスタンスステータスのアラームを変更する必要がある場合は、そのアラームを編集できます。

ステータスチェックアラームを編集するには
  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインで、[インスタンス] を選択します。

  3. インスタンスを選択し、[Actions (アクション)]、[Monitoring (モニタリング)]、[Manage CloudWatch alarms (CloudWatch アラームの管理)] の順に選択します。

  4. [Manage CloudWatch alarms (CloudWatch アラームの管理)] ページの [Add or edit alarm (アラームの追加または編集)] で、[Edit an alarm (新しいアラームの編集)] を選択します。

  5. [Search for alarm (アラームの検索)] で、アラームを選択します。

  6. 変更が完了したら、[Update (更新)] を選択します。

Command line

次の例では、インスタンスが少なくとも 2 つの連続する期間内にインスタンスチェックまたはシステムステータスチェックに失敗した場合、アラームが SNS トピックに通知 arn:aws:sns:us-west-2:111122223333:my-sns-topic を発行します。使用する CloudWatch メトリクスは StatusCheckFailed です。

AWS CLI を使用してステータスチェックアラームを作成するには
  1. 既存の SNS トピックを選択するか、新しいキーペアを作成することができます。詳細については、AWS Command Line Interface ユーザーガイドAmazon SNS での AWS CLI の使用を参照してください。

  2. Amazon EC2 の使用可能な Amazon CloudWatch メトリクスを表示するには、list-metrics コマンドを使用します。

    aws cloudwatch list-metrics --namespace AWS/EC2
  3. アラームを作成するには、次の put-metric-alarm コマンドを使用します。

    aws cloudwatch put-metric-alarm \ --alarm-name StatusCheckFailed-Alarm-for-i-1234567890abcdef0 \ --metric-name StatusCheckFailed \ --namespace AWS/EC2 \ --statistic Maximum \ --dimensions Name=InstanceId,Value=i-1234567890abcdef0 \ --unit Count \ --period 300 \ --evaluation-periods 2 \ --threshold 1 \ --comparison-operator GreaterThanOrEqualToThreshold \ --alarm-actions arn:aws:sns:us-west-2:111122223333:my-sns-topic

    期間は Amazon CloudWatch メトリクスが収集される期間 (秒) です。この例では、60 秒に 5 分を乗算した 300 を使用します。評価期間は、メトリクスの値がしきい値と比較されなければならない連続した期間の数です。この例では 2 を使用します。アラームアクションは、このアラームがトリガーされたときに実行するアクションです。この例では、Amazon SNS を使用してメールを送信するようにアラームを設定します。