

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon EC2 執行個體的狀態檢查
<a name="monitoring-system-instance-status-check"></a>

透過執行個體狀態監控，您可以快速判斷 Amazon EC2 是否已偵測到任何可能會防止執行個體執行應用程式的問題。Amazon EC2 會在每一次執行 EC2 執行個體時執行自動化檢查，以識別硬體和軟體問題。您可以檢視這些狀態檢查的結果，以找出特定及可偵測的問題。事件狀態資料可增強 Amazon EC2 已提供的每個執行個體狀態 (例如 `pending`、`running` 和 `stopping`) 的相關資訊，以及 Amazon CloudWatch 監控的使用率指標 (CPU 使用率、網路流量和磁碟活動)。

狀態檢查會每分鐘執行一次，並會傳回通過或失敗狀態。如果所有檢查都通過，執行個體的整體狀態即為 **OK (正常)**。若一或多個檢查失敗，整體狀態便會是 **impaired (故障)**。狀態檢查內建於 Amazon EC2 中，因此無法停用或刪除。

當狀態檢查失敗時，狀態檢查對應的 CloudWatch 指標會遞增。如需詳細資訊，請參閱 [狀態檢查指標](viewing_metrics_with_cloudwatch.md#status-check-metrics)。但是，您可以使用這些指標，建立根據狀態檢查結果而觸發的 CloudWatch 警示。例如，您可以建立警示，在狀態檢查於特定執行個體上失敗時警告您。如需詳細資訊，請參閱 [為狀態檢查失敗的 Amazon EC2 執行個體建立 CloudWatch 警示](creating_status_check_alarms.md)。

您也可以建立 Amazon CloudWatch 提醒以監控 Amazon EC2 執行個體，並且在執行個體因為基礎問題故障時，自動復原執行個體。如需詳細資訊，請參閱 [自動執行個體復原功能](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>

有三種類型的狀態檢查。
+ [系統狀態檢查](#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 會將地址解析協定 (ARP) 請求傳送至網路介面 (NIC)，以便檢查執行個體的運作狀態。這些檢查會偵測需要您介入修復的問題。當執行個體狀態檢查失敗時，通常您需要自行處理問題 (例如重新開機執行個體或對執行個體的組態進行變更)。

**注意**  
使用 `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` 指標是二進位值，如果附接至執行個體的一個或多個 EBS 磁碟區無法完成 I/O 操作，則表示損壞。這些狀態檢查會對運算或 Amazon EBS 基礎設施的潛在問題進行偵測。當連接的 EBS 狀態檢查指標失敗時，您可以等待 AWS 解決問題，也可以採取動作，例如取代受影響的磁碟區或停止和重新啟動執行個體。

以下是可能導致附接的 EBS 狀態檢查失敗的問題範例：
+ EBS 磁碟區之下儲存子系統上的硬體或軟體問題
+ 實體主機上會影響 EBS 磁碟區連線的硬體問題
+ 執行個體與 EBS 磁碟區之間的連線問題

可以使用 `StatusCheckFailed_AttachedEBS` 指標來協助改善工作負載的彈性。您可以使用此指標，建立根據狀態檢查結果而觸發的 Amazon CloudWatch 警示。例如，偵測到長期影響時，可容錯移轉至次要執行個體或可用區域。或者，可以使用 EBS CloudWatch 指標來監控每個附接磁碟區的 I/O 效能，以偵測並取代受損磁碟區。如果您的工作負載沒有將 I/O 驅動到執行個體所附接的任何 EBS 磁碟區，並且附接的 EBS 狀態檢查顯示有損壞，則可以停止並啟動執行個體，將它移至新主機。這可以解決影響 EBS 磁碟區連線能力的基礎主機問題。如需詳細資訊，請參閱 [Amazon EBS 的 Amazon CloudWatch 指標](https://docs.aws.amazon.com/ebs/latest/userguide/using_cloudwatch_ebs.html)。

您也可以設定 Amazon EC2 Auto Scaling 群組來偵測連接的 EBS 狀態檢查失敗，然後將受影響的執行個體取代為新的執行個體。如需詳細資訊，請參閱「Amazon EC2 Auto Scaling 使用者指南」**中的[使用受損的 Amazon EBS 磁碟區監控和取代自動擴展執行個體](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. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 在**執行個體**頁面上，**狀態檢查**資料欄會列出每個執行個體的操作狀態。

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-EC2InstanceStatus](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. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 選取執行個體，選擇**狀態檢查**標籤，然後選擇**動作** > **建立狀態檢查警示**。

1. 在 **Manage CloudWatch alarms (管理 CloudWatch 警示)**頁面上，於 **Add or edit alarm (新增或編輯警示)**下，選擇 **Create an alarm (建立警示)**。

1. 針對**警示通知**，開啟切換開關以設定 Amazon Simple Notification Service (Amazon SNS) 通知。選取現有 Amazon SNS 主題或輸入名稱以建立新主題。

   若將電子郵件地址新增到收件人清單，或是建立新主題，Amazon SNS 會將確認電子郵件傳送至每個新地址。每個收件人都必須選擇電子郵件中的確認連結。僅确认的地址会接收提醒通知。

1. 針對**警示動作**，開啟切換開關，以指定觸發警示時要採取的動作。選取動作。

1. 針對 **Alarm thresholds (警示閾值)**，指定警示的指標和準則。

   您可保留**範例分組依據** (**Average**) 和 **要做為範例的資料類型** (**Status check failed:either**) 的預設設定，或者可以根據您的需求進行變更。

   針對**連續期間**，設定要評估的期間數，然後在**期間**中，輸入在觸發提醒及傳送電子郵件前的評估期間長度。

1. (選用) 針對 **Sample metric data (範例指標資料)**，選擇 **Add to dashboard (新增至儀表板)**。

1. 選擇**建立**。

若需要變更執行個體狀態警示，您可以編輯它。

**編輯狀態檢查警示**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇**執行個體**。

1. 選取執行個體，並選擇 **Actions (動作)**、**Monitoring (監控)**、**Manage CloudWatch alarms (管理 CloudWatch 警示)**。

1. 在 **Manage CloudWatch alarms (管理 CloudWatch 警示)**頁面上，於 **Add or edit alarm (新增或編輯警示)**下，選擇 **Edit an alarm (編輯警示)**。

1. 針對 **Search for alarm (搜尋警示)**，選擇警示。

1. 完成變更後，請選擇 **Update (更新)**。

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

在下列範例中，當執行個體的執行個體檢查或系統檢查在至少兩個連續期間中失敗時，警示便會發佈通知到 SNS 主題。使用的 CloudWatch 指標為 `StatusCheckFailed`。

**建立狀態檢查警示**

1. 選取現有的 SNS 主題，或建立新主題。如需詳細資訊，請參閱《AWS Command Line Interface 使用者指南》中的[存取 AWS CLI中的 Amazon SNS](https://docs.aws.amazon.com/cli/latest/userguide/cli-services-sns.html)。**

1. 使用下列 [list-metrics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/list-metrics.html) 命令檢視 Amazon EC2 可用的 Amazon CloudWatch 指標。

   ```
   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 指標的時間範圍，以秒為單位。此範例使用 300，即 60 秒乘以 5 分鐘。評估期間為針對指標的值與閾值進行比較的連續期間數。此範例使用 2。警示動作為觸發此警示時要執行的動作。

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

**建立狀態檢查警示**  
當執行個體在至少兩個連續時段未通過狀態檢查時，請使用 [Write-CWMetricAlarm](https://docs.aws.amazon.com/powershell/latest/reference/items/Write-CWMetricAlarm.html) cmdlet 將通知發佈至 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 指標的時間範圍，以秒為單位。此範例使用 300，即 60 秒乘以 5 分鐘。評估期間為針對指標的值與閾值進行比較的連續期間數。此範例使用 2。警示動作為觸發此警示時要執行的動作。

------