

# Amazon EC2 インスタンスのステータスチェック
<a name="monitoring-system-instance-status-check"></a>

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

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

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

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

**Topics**
+ [

## ステータスチェックのタイプ
](#types-of-instance-status-checks)
+ [

# Amazon EC2 インスタンスのステータスチェックの表示
](viewing_status.md)
+ [

# ステータスチェックに失敗した Amazon EC2 インスタンスの CloudWatch アラームの作成
](creating_status_check_alarms.md)

## ステータスチェックのタイプ
<a name="types-of-instance-status-checks"></a>

ステータスチェックには 3 種類あります。
+ [システムステータスのチェック](#system-status-checks)
+ [インスタンスステータスのチェック](#instance-status-checks)
+ [アタッチ済みの EBS ステータスチェック](#attached-ebs-status-checks)

### システムステータスのチェック
<a name="system-status-checks"></a>

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

システムステータスチェックの失敗の原因となる問題の例を次に示します。
+ ネットワーク接続の喪失
+ システム電源の喪失
+ 物理ホストのソフトウェアの問題
+ ネットワーク到達可能性に影響する、物理ホスト上のハードウェアの問題

システムステータスチェックが失敗した場合、[StatusCheckFailed\$1System](viewing_metrics_with_cloudwatch.md#status-check-metrics) メトリクスをインクリメントします。

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

### インスタンスステータスのチェック
<a name="instance-status-checks"></a>

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

**注記**  
ネットワーク設定に `systemd-networkd` を使用する最近の Linux ディストリビューションではヘルスチェックに関するレポートが以前のディストリビューションとは異なる場合があります。起動プロセス中、このタイプのネットワークはインスタンスのヘルスにも影響する可能性のある他のスタートアップタスクよりも早く起動し、また早く終了する可能性もあります。ネットワークの可用性に依存するステータスチェックでは他のタスクが完了する前に正常なステータスをレポートできます。

インスタンスステータスチェックの失敗の原因となる問題の例を次に示します。
+ 失敗したシステムステータスチェック
+ 正しくないネットワークまたは起動設定
+ メモリの枯渇
+ 破損したファイルシステム
+ 互換性のないカーネル
+ 再起動中、インスタンスのステータスチェックはインスタンスが再び使用可能になるまで失敗を報告します。

インスタンスのステータスチェックが失敗した場合、[StatusCheckFailed\$1Instance](viewing_metrics_with_cloudwatch.md#status-check-metrics) メトリクスをインクリメントします。

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

### アタッチ済みの EBS ステータスチェック
<a name="attached-ebs-status-checks"></a>

アタッチ済みの 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 ボリュームの到達可能性に影響を与えている、基盤となるホストの問題を解決できます。詳細については「[Amazon EBS の Amazon CloudWatch メトリクス](https://docs.aws.amazon.com/ebs/latest/userguide/using_cloudwatch_ebs.html)」を参照してください。

アタッチ済みの EBS ステータスチェックの失敗を検出し、影響を受けたインスタンスを新しいインスタンスに置き換えるように Amazon EC2 Auto Scaling グループを設定することもできます。詳細については「Amazon EC2 Auto Scaling ユーザーガイド」の「[障害のあるAmazon EBS ボリュームを持つ Auto Scaling インスタンスの監視と置き換え](https://docs.aws.amazon.com/autoscaling/ec2/userguide/monitor-and-replace-instances-with-impaired-ebs-volumes.html)」を参照してください。

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

# Amazon EC2 インスタンスのステータスチェックの表示
<a name="viewing_status"></a>

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

------
#### [ Console ]

**ステータスチェックを表示するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

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

1. 特定のインスタンスのステータスを表示するにはインスタンスを選択して、**[ステータスとアラーム]** タブを選択してください。

1. ステータスチェックで CloudWatch メトリクスを確認するには**[ステータスとアラーム]** タブで **[メトリクス]** を展開し、以下のメトリクスのグラフを表示します。
   + **[システムのステータスチェックの失敗]**
   + **[インスタンスのステータスチェックの失敗]**
   + **[アタッチ済みの EBS ステータスチェックに失敗しました]**

   詳細については、「[ステータスチェックメトリクス](viewing_metrics_with_cloudwatch.md#status-check-metrics)」を参照してください。

------
#### [ AWS CLI ]

**ステータスチェックを表示するには**  
[describe-instance-status](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-status.html) コマンドを使用します。

**例**: 実行中のすべてのインスタンスのステータスを取得する

```
aws ec2 describe-instance-status
```

**例**: すべてのインスタンスのステータスを取得する

```
aws ec2 describe-instance-status --include-all-instances
```

**例**: 単一の実行中のインスタンスのステータスを取得する

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

**例**: ステータスが `impaired` のすべてのインスタンスを取得する

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

------
#### [ PowerShell ]

**ステータスチェックを表示するには**  
[Get-EC2VolumeStatus](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceStatus.html) コマンドを使用します。

**例**: 実行中のすべてのインスタンスのステータスを取得する

```
Get-EC2InstanceStatus
```

**例**: すべてのインスタンスのステータスを取得する

```
Get-EC2InstanceStatus -IncludeAllInstance $true
```

**例**: 単一の実行中のインスタンスのステータスを取得する

```
Get-EC2InstanceStatus -InstanceId i-1234567890abcdef0
```

**例**: ステータスが `impaired` のすべてのインスタンスを取得する

```
Get-EC2InstanceStatus \
-Filter @{Name="instance-status.status"; Values="impaired"}
```

------

# ステータスチェックに失敗した Amazon EC2 インスタンスの CloudWatch アラームの作成
<a name="creating_status_check_alarms"></a>

[ステータスチェックメトリクス](viewing_metrics_with_cloudwatch.md#status-check-metrics)を使用して、インスタンスのステータスチェックに失敗したときに通知されるように CloudWatch アラームを作成することができます。

メトリクスデータポイントが欠落している場合、ステータスチェックとステータスチェックアラームは一時的に*データ不足*という状態に陥ることがあります。これはまれですが、インスタンスが正常であっても、メトリクスレポートシステムに中断がある場合に発生する場合があります。この状態を、ステータスチェックの失敗やアラーム違反ではなく、欠落データとして扱うことをお勧めします。これは、応答としてインスタンス上で停止、終了、再起動、または復旧アクションを行うときに特に重要です。

------
#### [ Console ]

この例では、インスタンスがステータスチェックに失敗したときに通知を送信するアラームを設定します。オプションで、インスタンスを停止、終了、または復旧できます。

**ステータスチェックアラームを作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

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

1. [**CloudWatch アラームの管理**] ページの [**アラームの追加または編集**] で、[**Create an alarm (新しいアラームの作成)**] を選択してください。

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

   受信者のリストに E メールアドレスを追加したか、トピックを新規作成した場合、Amazon SNS は新しいアドレスごとに確認の E メールを送信します。各受信者は、E メール内の確認リンクを選択する必要があります。確認されたアドレスのみがアラート通知を受け取ります。

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

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

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

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

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

1. **[作成]** を選択します。

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

**ステータスチェックアラームを編集するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択し、[**Actions (アクション)**]、[**Monitoring (モニタリング)**]、[**CloudWatch アラームの管理**] の順に選択してください。

1. [**CloudWatch アラームの管理**] ページの [**アラームの追加または編集**] で、[**Edit an alarm (新しいアラームの編集)**] を選択してください。

1. [**Search for alarm (アラームの検索)**] で、アラームを選択してください。

1. 変更が完了したら、[**Update (更新)**] を選択してください。

------
#### [ AWS CLI ]

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

**ステータスチェックアラームを作成するには**

1. 既存の SNS トピックを選択するか、新しいキーペアを作成することができます。詳細については、*AWS Command Line InterfaceAmazon Athena ユーザーガイド* の [Athena へのアクセスAWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-sns.html)を参照してください。

1. Amazon EC2 の使用可能な Amazon CloudWatch メトリクスを表示するには [list-metrics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/list-metrics.html) コマンドを使用します。

   ```
   aws cloudwatch list-metrics --namespace AWS/EC2
   ```

1. アラームを作成するには次の [put-metric-alarm](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html) コマンドを使用します。

   ```
   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 を使用します。アラームアクションはこのアラームがトリガーされたときに実行するアクションです。

------
#### [ PowerShell ]

**ステータスチェックアラームを作成するには**  
[Write-CWMetricAlarm](https://docs.aws.amazon.com/powershell/latest/reference/items/Write-CWMetricAlarm.html) コマンドレットを次のように使用して、インスタンスが少なくとも 2 つの連続する期間内にステータスチェックに失敗した場合に SNS トピックに通知を発行します。

```
Write-CWMetricAlarm `
    -AlarmName "StatusCheckFailed-Alarm-for-i-1234567890abcdef0" `
    -MetricName "StatusCheckFailed" `
    -Namespace "AWS/EC2" `
    -Statistic "Maximum" `
    -Dimension @{Name="InstanceId"; Values="i-1234567890abcdef0"} `
    -Unit "Count" `
    -Period 300 `
    -EvaluationPeriod 2 `
    -Threshold 1 `
    -ComparisonOperator "GreaterThanOrEqualToThreshold" `
    -AlarmAction "arn:aws:sns:us-west-2:111122223333:my-sns-topic"
```

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

------