

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

# Elastic Beanstalk 中的增強型運作狀態報告和監控
<a name="health-enhanced"></a>

本節說明 Elastic Beanstalk 增強型運作狀態功能的功能。

增強型運作狀態報告是一項功能，您可以在您的環境中啟用 ， AWS Elastic Beanstalk 以允許 收集您環境中資源的其他資訊。Elastic Beanstalk 會分析所收集到的資訊，以提供更全面的整體環境運作狀態，並協助辨識可能會導致應用程式無法運作的問題。

除了可變更運作狀態顏色的運作方式，增強型運作狀態更增加*狀態*描述項，當環境為黃色或紅色時，可提供所觀察之問題嚴重性的指標。若系統提供目前狀態的更多資訊，您可選擇 **Causes (成因)** 按鈕，於[運作狀態頁面](health-enhanced-console.md)檢視詳細的運作狀態資訊。

為了提供在您環境中所執行 Amazon EC2 執行個體的詳細運作狀態資訊，Elastic Beanstalk 在 Amazon Machine Image (AMI) 中包含了每個支援增強型運作狀態平台版本的[運作狀態代理程式](#health-enhanced-agent)。運作狀態代理程式會監控 Web 伺服器日誌和系統指標，並將其轉送至 Elastic Beanstalk 服務。Elastic Beanstalk 會分析這些指標以及來自 Elastic Load Balancing 和 Amazon EC2 Auto Scaling 的資料，以提供環境運作狀態的整體概況。

除了能夠收集並呈現您環境資源的相關資訊，Elastic Beanstalk 亦可針對環境中的資源監控其多種錯誤條件，給予通知協助您避免故障並解決組態問題。[影響環境運作狀態的因素](#health-enhanced-factors)包括應用程式每次處理請求的結果、執行個體作業系統的指標，以及最近的部署狀態。

您可使用 Elastic Beanstalk 主控台中的[環境概觀](health-enhanced-console.md)頁面或 [Elastic Beanstalk 命令列界面](eb-cli3.md) (EB CLI) 中的 [eb health](health-enhanced-ebcli.md) 命令，即時檢視運作狀態。若要隨時間記錄並追蹤環境和執行個體運作狀態，環境可設定為將 Elastic Beanstalk 收集的增強型運作狀態報告相關資訊，發佈至 Amazon CloudWatch 做為自訂指標。CloudWatch 的自訂指標[費用](https://aws.amazon.com/cloudwatch/pricing/)適用所有指標，免費的 `EnvironmentHealth` 除外。

**Windows 平台備註**  
當您在 Windows Server 環境上啟用增強式運作狀態報告時，請不要變更 [IIS 記錄日誌組態](https://docs.microsoft.com/en-us/iis/manage/provisioning-and-managing-iis/configure-logging-in-iis)。若要讓增強式運作狀態監控正常運作，IIS 記錄日誌必須使用 **W3C** 格式和 **ETW event only (僅 ETW 事件)** 或 **Both log file and ETW event (日誌檔案與 ETW 事件)** 日誌事件目標進行設定。  
此外，請不要停用或停止任何您環境執行個體上的 [Elastic Beanstalk 運作狀態代理程式](#health-enhanced-agent) Windows 服務。若要收集和報告執行個體的增強式運作狀態資訊，此服務必須處於啟用及執行中的狀態。

第一次建立環境時，Elastic Beanstalk 會提示您建立所需的角色，並預設啟用增強型運作狀態報告。請繼續閱讀以了解增強型運作狀態報告的運作方式詳細資訊，或參閱 [啟用 Elastic Beanstalk 增強型運作狀態報告](health-enhanced-enable.md) 以立即開始使用。

**Topics**
+ [Elastic Beanstalk 運作狀態代理程式](#health-enhanced-agent)
+ [判斷執行個體和環境運作狀態的因素](#health-enhanced-factors)
+ [運作狀態檢查規則自訂](#health-enhanced.rules)
+ [增強型運作狀態角色](#health-enhanced-roles)
+ [增強的運作狀態授權](#health-enhanced-authz)
+ [增強型運作狀態事件](#health-enhanced-events)
+ [更新、部署和擴展期間的增強式運作狀態報告行為](#health-enhanced-effects)
+ [啟用 Elastic Beanstalk 增強型運作狀態報告](health-enhanced-enable.md)
+ [使用環境管理主控台來進行增強型健全狀態監控](health-enhanced-console.md)
+ [運作狀態顏色和狀態](health-enhanced-status.md)
+ [執行個體指標](health-enhanced-metrics.md)
+ [設定環境的增強型健康狀況規則](health-enhanced-rules.md)
+ [為環境發佈 Amazon CloudWatch 自訂指標](health-enhanced-cloudwatch.md)
+ [將增強型運作狀態報告與 Elastic Beanstalk API 搭配使用](health-enhanced-api.md)
+ [增強型運作狀態日誌格式](health-enhanced-serverlogs.md)
+ [通知與故障診斷](environments-health-enhanced-notifications.md)
+ [AI 驅動的環境分析](health-ai-analysis.md)

## Elastic Beanstalk 運作狀態代理程式
<a name="health-enhanced-agent"></a>

Elastic Beanstalk 運作狀態代理程式是一種精靈程序 (或在 Windows 環境上的服務)，該程序會在您環境中的每個 Amazon EC2 執行個體上執行，監控作業系統和應用程式層級的運作狀態指標，並向 Elastic Beanstalk 報告問題。自每個平台的版本 2.0 起，所有平台版本均隨附運作狀態代理程式。

運作狀態代理程式會報告類似於 Amazon EC2 Auto Scaling 和 Elastic Load Balancing [發佈至 CloudWatch](using-features.healthstatus.md#monitoring-basic-cloudwatch) 的指標，做為[基礎型運作狀態報告](using-features.healthstatus.md)的一部分，其中包括 CPU 負載、HTTP 代碼和延遲。然而，運作狀態代理程式直接向 Elastic Beanstalk 報告的精細度和頻率，高於基礎型運作狀態報告。

基礎型運作狀態每 5 分鐘會發佈一次這些指標，並可於環境管理主控台以圖表監控。透過增強型運作狀態，Elastic Beanstalk 運作狀態代理程式每 10 秒會向 Elastic Beanstalk 報告指標。Elastic Beanstalk 會使用運作狀態代理程式提供的指標，判斷環境中各個執行個體的運作狀態，同時結合其他[因素](#health-enhanced-factors)，判定環境的整體運作狀態。

環境的整體運作狀態可在 Elastic Beanstalk 主控台的環境概觀頁面中即時檢視，Elastic Beanstalk 也會每 60 秒將其發佈至 CloudWatch。您可以在 [EB CLI](eb-cli3.md) 中使用 [**eb health**](health-enhanced-ebcli.md) 命令，即時檢視運作狀態代理程式報告的詳細指標。

若支付額外費用，您也可以選擇每 60 秒將個別執行個體和環境層級指標發佈至 CloudWatch。發佈至 CloudWatch 的指標之後可用來在[環境管理主控台](environments-console.md)中建立[監控圖表](environment-health-console.md#environment-health-console-customize)。

增強型運作狀態報告只在您選擇將增強型運作狀態指標發佈至 CloudWatch 時，才會產生費用。當您使用增強型運作狀態時，即使您選擇不要發佈增強型運作狀態指標，仍可免費發佈基礎型運作狀態指標。

如需運作狀態代理程式報告指標的詳細資訊，請參閱 [執行個體指標](health-enhanced-metrics.md)。如需將增強型運作狀態指標發佈至 CloudWatch 的詳細資訊，請參閱[為環境發佈 Amazon CloudWatch 自訂指標](health-enhanced-cloudwatch.md)。

## 判斷執行個體和環境運作狀態的因素
<a name="health-enhanced-factors"></a>

除了基本運作狀態報告系統檢查之外 (包含 [Elastic Load Balancing 運作狀態檢查](using-features.healthstatus.md#using-features.healthstatus.understanding) 和[資源監控](using-features.healthstatus.md#monitoring-basic-additionalchecks))，Elastic Beanstalk 增強型運作狀態報告還會收集您環境中執行個體狀態的其他資料。這包含作業系統指標、伺服器日誌及正在進行的環境操作狀態 (例如部署和更新)。Elastic Beanstalk 運作狀態報告服務會結合所有可用來源的資訊，並加以分析以判斷環境的整體運作狀態。



### 操作和命令
<a name="health-enhanced-factors-operations"></a>

當您在環境上執行操作時 (例如部署新的應用程式版本)，Elastic Beanstalk 會進行幾項影響您環境運作狀態的變更。

例如，當您將新的應用程式版本部署至執行多個執行個體的環境時，您可能會在[使用 EB CLI](health-enhanced-ebcli.md) 監控環境的運作狀態時，看到與以下內容相似的訊息。

```
  id             status     cause
    Overall      Info       Command is executing on 3 out of 5 instances
  i-bb65c145     Pending    91 % of CPU is in use. 24 % in I/O wait
                            Performing application deployment (running for 31 seconds)
  i-ba65c144     Pending    Performing initialization (running for 12 seconds)
  i-f6a2d525     Ok         Application deployment completed 23 seconds ago and took 26 seconds
  i-e8a2d53b     Pending    94 % of CPU is in use. 52 % in I/O wait
                            Performing application deployment (running for 33 seconds)
  i-e81cca40     Ok
```

在此範例中，環境整體狀態為 `Ok`，而成因是 *Command is executing on 3 out of 5 instances (5 個執行個體中，命令正於其中 3 個上執行)*。環境的三個執行個體狀態為 *Pending (待定)*，表示操作正在進行。

操作完成後，Elastic Beanstalk 會報告操作的其他資訊。例如，Elastic Beanstalk 會顯示下列有關執行個體已更新應用程式版本的資訊：

```
i-f6a2d525     Ok         Application deployment completed 23 seconds ago and took 26 seconds
```

執行個體運作狀態資訊亦包含環境中每個執行個體最近部署的詳細資訊。各個執行個體都會報告部署 ID 和狀態。部署 ID 為整數，每次部署新的應用程式版本或變更執行個體上組態選項的設定 (如環境變數) 時，此整數會加一。[滾動部署](using-features.rolling-version-deploy.md)失敗後，您可使用部署資訊來辨識執行錯誤應用程式版本的執行個體。

在原因欄中，Elastic Beanstalk 包含的參考訊息包括成功操作及多次運作狀態檢查的其他正常運作狀態資訊，但這些項目無法永久保存。環境運作狀態不良的成因會加以保存，直到環境回傳良好運作狀態。

### 命令逾時
<a name="health-enhanced-factors-timeout"></a>

Elastic Beanstalk 在操作開始時會套用命令逾時，讓執行個體轉換為良好運作狀態。您可於環境更新及部署組態 ([aws:elasticbeanstalk:command](command-options-general.md#command-options-general-elasticbeanstalkcommand) 命名空間中) 設定此命令逾時，預設為 10 分鐘。

在滾動更新期間，Elastic Beanstalk 會在操作的各個批次套用不同的逾時。您可於環境的滾動更新組態 ([aws:autoscaling:updatepolicy:rollingupdate](command-options-general.md#command-options-general-autoscalingupdatepolicyrollingupdate) 命名空間中) 設定此逾時。若批次中的所有執行個體在滾動更新逾時內都維持良好運作狀態，操作會繼續進行下一批次。否則，操作會失敗。

**注意**  
若您的應用程式並未通過運作狀態檢查 (即未處於**良好 (OK)** 狀態)，但以另一層級而言仍屬穩定，您可以設定 [`HealthCheckSuccessThreshold`](command-options-general.md#command-options-general-elasticbeanstalkcommand) 中的 `aws:elasticbeanstalk:command namespace` 選項，來變更 Elastic Beanstalk 將執行個體視為運作狀態良好的層級。

欲讓 Web 伺服器環境視為良好運作狀態，環境或批次中每個執行個體都必須在 2 分鐘內連續通過 12 個運作狀態檢查。針對工作者層環境，每個執行個體都必須通過 18 項運作狀態檢查。在命令逾時前，Elastic Beanstalk 不會在運作狀態檢查失敗時降低環境的運作狀態。若環境中的執行個體在命令逾時內恢復良好運作狀態，操作即為成功。

### HTTP 請求
<a name="health-enhanced-factors-requests"></a>

環境未進行操作時，執行個體和環境運作狀態的主要資訊來源為各個執行個體的 Web 伺服器日誌。為了判斷執行個體和環境整體的運作狀態，Elastic Beanstalk 會考量請求數目、每次請求結果，以及每次請求的解決速度。

在 Linux 類型的平台上，Elastic Beanstalk 會讀取並剖析 Web 伺服器日誌來取得 HTTP 請求的資訊。在 Windows Server 平台上，Elastic Beanstalk 會[直接從 IIS Web 伺服器](health-enhanced-metrics-server-iis.md)接收此資訊。

您的環境可能沒有作用中的 web 伺服器。例如，多容器 Docker 平台便不包含 web 伺服器。其他平台則會包含 web 伺服器，但您的應用程式可能會停用它。在這些情況下，您的環境便需要額外的組態，才能以其轉送資訊至 Elastic Beanstalk 服務時所需要的格式，提供 [Elastic Beanstalk 運作狀態代理程式](#health-enhanced-agent)日誌。如需詳細資訊，請參閱「[增強型運作狀態日誌格式](health-enhanced-serverlogs.md)」。

### 作業系統指標
<a name="health-enhanced-factors-healthcheck"></a>

Elastic Beanstalk 會監控運作狀態代理程式報告的作業系統指標，以辨識系統資源始終不足的執行個體。

如需運作狀態代理程式報告指標的詳細資訊，請參閱 [執行個體指標](health-enhanced-metrics.md)。

## 運作狀態檢查規則自訂
<a name="health-enhanced.rules"></a>

Elastic Beanstalk 增強型運作狀態報告倚賴一組規則，以確定您環境的運作狀態。這些的部分規則可能不適用於您的特定應用程式。常用案例是一種應用程式，其會傳回設計上經常性 HTTP 4xx 錯誤。Elastic Beanstalk 使用其中一個預設規則，獲得出現差錯的結論，然後將您環境的運作狀態從正常變更為警告、降級或嚴重，視錯誤率而定。若要正確處理這種情況下，Elastic Beanstalk 可讓您設定此規則，並忽略應用程式 HTTP 4xx 錯誤。如需詳細資訊，請參閱[設定環境的增強型健康狀況規則](health-enhanced-rules.md)。

## 增強型運作狀態角色
<a name="health-enhanced-roles"></a>

增強型運作狀態報告需要兩個角色：Elastic Beanstalk 的服務角色和環境的執行個體描述檔。服務角色可讓 Elastic Beanstalk 代表您與其他 AWS 服務互動，以收集您環境中資源的相關資訊。執行個體描述檔可讓您環境中的執行個體將日誌檔案寫入 Amazon S3，並將增強的運作狀態資訊傳送至 Elastic Beanstalk 服務。

當您使用 Elastic Beanstalk 主控台或 EB CLI 建立 Elastic Beanstalk 環境時，Elastic Beanstalk 會建立預設服務角色，並將必要的受管理政策附加至您環境的預設執行個體描述檔。

如果您使用 API、 SDK 或 AWS CLI 來建立環境，則必須事先建立這些角色，並在環境建立期間指定這些角色，以使用增強型運作狀態。如需為您環境建立適當角色的說明，請參閱[Elastic Beanstalk Service 角色、執行個體描述檔和使用者政策](concepts-roles.md)。

建議您針對執行個體描述檔和服務角色使用*受管理政策*。受管政策是 Elastic Beanstalk 維護的 AWS Identity and Access Management (IAM) 政策。使用受管理政策可確保您的環境擁有正常運作所需的所有許可。

對於執行個體描述檔，您可以分別針對 [Web 伺服器層](concepts-webserver.md)或[工作者階層](concepts-worker.md)環境使用 `AWSElasticBeanstalkWebTier` 或 `AWSElasticBeanstalkWorkerTier` 受管理的策略。如需這兩個受管理執行個體描述檔政策的詳細資訊，請參閱 [管理 Elastic Beanstalk 執行個體描述檔](iam-instanceprofile.md)。

## 增強的運作狀態授權
<a name="health-enhanced-authz"></a>

Elastic Beanstalk 執行個體描述檔受管的政策包含 `elasticbeanstalk:PutInstanceStatistics` 動作的許可。此動作不屬於 Elastic Beanstalk API 的一部分。環境執行個體在內部使用的是不同 API 的一部分，會將增強的運作狀態資訊傳達給 Elastic Beanstalk 服務。您不會直接呼叫這個 API。

建立新環境時，授權 `elasticbeanstalk:PutInstanceStatistics` 動作預設為啟用。若要增加環境的安全性，並協助防止運作狀態資料假冒您的身分進行詐騙，建議您讓此動作的授權保持啟用狀態。如果您為執行個體描述檔使用受管政策，這項功能可供您新環境使用，無需任何進一步設定。如果您使用*自訂執行個體描述檔*而非*受管政策*，您的環境可能顯示**無資料**運作狀態。發生這種情況是因為執行個體未經授權，無法將增強型運作狀態資料傳送至服務。

若要授權此動作，請在您的執行個體描述檔中包含下列陳述式。

```
    {
      "Sid": "ElasticBeanstalkHealthAccess",
      "Action": [
        "elasticbeanstalk:PutInstanceStatistics"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:*:*:application/*",
        "arn:aws:elasticbeanstalk:*:*:environment/*"
      ]
    }
```

如果您目前不想使用增強型運作狀態授權，請將 [aws:elasticbeanstalk:healthreporting:system](command-options-general.md#command-options-general-elasticbeanstalkhealthreporting) 命名空間的 `EnhancedHealthAuthEnabled` 選項設定為 `false`，加以停用。如果停用此選項，就不需要先前說明的許可。您可以為您應用程式和環境的[最低權限存取](security-best-practices.md#security-best-practices.preventive.least-priv)，從執行個體描述檔中移除這些許可。

**注意**  
之前 `EnhancedHealthAuthEnabled` 預設設定為 `false`，導致 `elasticbeanstalk:PutInstanceStatistics` 動作的授權也預設為停用。若要為現有環境啟用此動作，請將 [aws:elasticbeanstalk:healthreporting:system](command-options-general.md#command-options-general-elasticbeanstalkhealthreporting) 命名空間的 `EnhancedHealthAuthEnabled` 選項設定為 `true`。您可以使用[組態檔案](ebextensions.md)中的[選項設定](ebextensions-optionsettings.md)來設定此選項。

## 增強型運作狀態事件
<a name="health-enhanced-events"></a>

環境轉換狀態時，增強型運作狀態系統會產生事件。以下範例顯示了在**資訊 (Info)**、**良好 (OK)** 及**嚴重 (Severe)** 狀態間轉換的環境事件輸出。

![\[Elastic Beanstalk 主控台的 Elastic Beanstalk 環境概觀頁面，其中顯示增強的運作狀態最近事件\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/enhanced-health-events.png)


當轉換成較嚴重的狀態時，增強式運作狀態事件會包含指出轉換原因的訊息。

並非所有執行個體層級的變更都會使 Elastic Beanstalk 發出事件。為了避免錯誤的警示，Elastic Beanstalk 只會在問題持續出現在多次檢查中時產生運作狀態相關的事件。

環境層級的即時運作狀態資訊 (包括狀態、顏色和原因) 都可在 Elastic Beanstalk 主控台的[環境概觀](environments-dashboard.md)頁面和 [EB CLI](eb-cli3.md) 取得。透過將 EB CLI 連接至您的環境並執行 [**eb health**](health-enhanced-ebcli.md) 命令，您也可以檢視環境中各個執行個體的即時狀態。

## 更新、部署和擴展期間的增強式運作狀態報告行為
<a name="health-enhanced-effects"></a>

啟用增強型運作狀態報告會影響您的環境在組態更新和部署期間的行為。Elastic Beanstalk 在直到所有執行個體皆一致通過運作狀態檢查之前，都不會完成更新批次。此外，因為增強式運作狀態報告會套用運作狀態的更高標準並監控更多因素，通過基本運作狀態報告 [ELB 運作狀態檢查](using-features.healthstatus.md#using-features.healthstatus.understanding)的執行個體，不一定會同時通過增強式運作狀態報告。如需運作狀態檢查如何影響更新程序的詳細資訊，請參閱[滾動組態更新](using-features.rollingupdates.md)和[滾動部署](using-features.rolling-version-deploy.md)的主題。

增強型運作狀態報告亦可強調 Elastic Load Balancing 須設定適當的[運作狀態檢查 URL](environments-cfg-clb.md#using-features.managing.elb.healthchecks) 之需求。當您的環境為滿足需求而擴展，新的執行個體一通過 ELB 運作狀態檢查就會開始處理請求。若未設定運作狀態檢查 URL，執行個體接受 TCP 連線後 20 秒即可開始。

在負載平衡器宣告環境運作狀態良好前，若您的應用程式尚未完成啟動以接收流量，將出現大量失敗的請求，而您環境的運作狀態檢查會開始失敗。命中由您應用程式所提供路徑的運作狀態檢查 URL 可避免此問題。在直到向運作狀態檢查 URL 發出的 GET 請求傳回 200 狀態代碼前，ELB 運作狀態檢查都不會通過。

# 啟用 Elastic Beanstalk 增強型運作狀態報告
<a name="health-enhanced-enable"></a>

本主題說明如何啟用增強型運作狀態報告。它為您提供使用 Elastic Beanstalk 主控台、EB CLI 和 .ebextensions 組態為環境啟用增強型運作狀態功能的程序。

使用最新[平台版本](concepts.platforms.md)建立的新環境包括支援增強型運作狀態報告的運作狀態 AWS Elastic Beanstalk [代理程式](health-enhanced.md#health-enhanced-agent)。若您在 Elastic Beanstalk 主控台中，或透過 EB CLI 建立您的環境，就會依預設啟用增強型運作狀態。您亦可使用[組態檔案](ebextensions.md)，於應用程式原始碼中設定您的運作狀態報告偏好。

增強型運作狀態報告需要[執行個體描述檔](concepts-roles-instance.md)和具備一組標準許可的[服務角色](concepts-roles-service.md)。當您在 Elastic Beanstalk 主控台中建立環境時，Elastic Beanstalk 會自動建立所需的角色。請參閱[了解如何開始使用 Elastic Beanstalk](GettingStarted.md) 以了解如何建立您的第一個環境。

**Topics**
+ [使用 Elastic Beanstalk 主控台啟用增強型運作狀態報告](#health-enhanced-enable-console)
+ [使用 EB CLI 啟用增強式運作狀態報告](#health-enhanced-enable-ebcli)
+ [使用組態檔案啟用增強式運作狀態報告](#health-enhanced-enable-config)

## 使用 Elastic Beanstalk 主控台啟用增強型運作狀態報告
<a name="health-enhanced-enable-console"></a>

**使用 Elastic Beanstalk 主控台，在執行中的環境內啟用增強型運作狀態報告**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

1. 在導覽窗格中，選擇 **Configuration** (組態)。

1. 在 **Monitoring (監控)** 組態類別中，選擇 **Edit (編輯)**。

1. 於 **Health Reporting (運作狀態報告)** 下的 **System (系統)** 中，選擇 **Enhanced (增強型)**。
**注意**  
若您使用[不支援的平台或版本](health-enhanced.md)，將不會出現增強型運作狀態報告的選項。

1. 若要儲存變更，請選擇頁面底部的**儲存變更**。

當您透過第 2 版 (v2) 平台版本建立新環境時，根據預設，Elastic Beanstalk 主控台會啟用增強型運作狀態報告。您可於環境建立期間變更運作狀態報告選項，藉此停用增強型運作狀態報告。

**使用 Elastic Beanstalk 主控台，在建立環境時停用增強型運作狀態報告**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. [建立應用程式](applications.md)或選取現有程式。

1. [建立環境](using-features.environments.md)。在 **Create a new environment (建立新環境)** 頁面，在選擇 **Create environment (建立環境)** 之前，選擇 **Configure more options (設定更多選項)**。

1. 在 **Monitoring (監控)** 組態類別中，選擇 **Edit (編輯)**。

1. 於 **Health Reporting (運作狀態報告)** 下的 **System (系統)** 中選擇 **Basic (基本)**。

1. 選擇**儲存**。

## 使用 EB CLI 啟用增強式運作狀態報告
<a name="health-enhanced-enable-ebcli"></a>

當您透過 **eb create** 命令建立新環境時，EB CLI 預設會啟用增強型運作狀態報告，並套用預設執行個體描述檔和服務角色。

您可以使用 `--service-role` 選向，透過名稱指定不同的服務角色。

若您有在 v2 平台版本上搭配基本運作狀態報告執行的環境，而您希望切換至增強式運作狀態，請遵循這些步驟。

**使用 [EB CLI](eb-cli3.md) 於執行環境中啟用增強型運作狀態**

1. 使用 **eb config** 命令於預設文字編輯器開啟組態檔案。

   ```
   ~/project$ eb config
   ```

1. 於設定區段找尋 `aws:elasticbeanstalk:environment` 命名空間。請確認 `ServiceRole` 的值不是 null，且符合您的[服務角色](concepts-roles-service.md)的名稱。

   ```
     aws:elasticbeanstalk:environment:
       EnvironmentType: LoadBalanced
       ServiceRole: aws-elasticbeanstalk-service-role
   ```

1. 於 `aws:elasticbeanstalk:healthreporting:system:` 命名空間之下，將 `SystemType` 的值變更為 **enhanced**。

   ```
     aws:elasticbeanstalk:healthreporting:system:
       SystemType: enhanced
   ```

1. 儲存組態檔案並關閉文字編輯器。

1. EB CLI 會開始進行環境更新，以套用您的組態變更。等待操作完成，或按 **Ctrl\$1C** 以安全離開。

   ```
   ~/project$ eb config
   Printing Status:
   INFO: Environment update is starting.
   INFO: Health reporting type changed to ENHANCED.
   INFO: Updating environment no-role-test's configuration settings.
   ```

## 使用組態檔案啟用增強式運作狀態報告
<a name="health-enhanced-enable-config"></a>

您可於原始碼套件納入[組態檔案](ebextensions.md)，藉此啟用增強型運作狀態報告。下列範例呈現的組態檔案，可啟用增強型運作狀態報告，並將預設服務和執行個體描述檔指派至環境：

**Example .ebextensions/enhanced-health.config**  

```
option_settings:
  aws:elasticbeanstalk:healthreporting:system:
    SystemType: enhanced
  aws:autoscaling:launchconfiguration:
    IamInstanceProfile: aws-elasticbeanstalk-ec2-role
  aws:elasticbeanstalk:environment:
    ServiceRole: aws-elasticbeanstalk-service-role
```

若您已建立自己的執行個體描述檔或服務角色，請將反白顯示的文字取代為這些角色的名稱。

# 使用環境管理主控台來進行增強型健全狀態監控
<a name="health-enhanced-console"></a>

在 中啟用增強型運作狀態報告時 AWS Elastic Beanstalk，您可以在環境[管理主控台中監控環境](environments-console.md)運作狀態。

**Topics**
+ [環境概觀](#health-enhanced-console-overview)
+ [環境健全狀態頁面](#health-enhanced-console-healthpage)
+ [監控頁面](#health-enhanced-console-monitoringpage)

## 環境概觀
<a name="health-enhanced-console-overview"></a>

[環境概觀](environments-dashboard.md)會顯示環境的[運作狀態](health-enhanced-status.md)和列出事件，這些事件提供了關於運作狀態最近變化的資訊。

**檢視環境概觀**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

如需目前環境運作狀態的詳細資訊，請選擇 **Causes**(原因) 來開啟 **Health** (運作狀態) 頁面。或者，在導覽窗格中，選擇 **Health (運作狀態)**。

## 環境健全狀態頁面
<a name="health-enhanced-console-healthpage"></a>

**運作狀態**頁面會針對環境和環境中的每個 Amazon EC2 執行個體，顯示運作狀態、指標與原因。

**注意**  
只有在您已針對環境[啟用增強型運作狀態監控](health-enhanced-enable.md)時，Elastic Beanstalk 才會顯示 **Health** (運作狀態)頁面。

下圖顯示了 Linux 環境的 **Health (運作狀態)** 頁面。

![\[Linux 環境的環境運作狀態頁面\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/enhanced-health-instances.png)


下圖顯示了 Windows 環境的 **Health (運作狀態)** 頁面。請注意，CPU 指標與 Linux 環境上的指標不同。

![\[Windows 環境的環境運作狀態頁面。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/enhanced-health-instances-win.png)


您可以在頁面頂端查看環境執行個體的總數，以及每個狀態的執行個體數量。若要只顯示具有特定狀態的執行個體，請選擇 **Filter By (篩選條件)**，然後選取 [status (狀態)](health-enhanced-status.md)。

![\[對於選擇要顯示的執行個體狀態，依選單篩選的環境運作狀態頁面\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/enhanced-health-instances-status.png)


若要重新啟動或終止健全狀態不佳的執行個體，請選擇 **Instance Actions (執行個體動作)**，然後選擇 **Reboot (重新啟動)** 或 **Terminate (終止)**。

![\[環境運作狀態頁面顯示執行個體動作功能表，用於重新啟動或終止運作狀態不佳的執行個體。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/enhanced-health-instances-actions.png)


Elastic Beanstalk 會每 10 秒更新一次**運作狀態**頁面。它會報告環境和執行個體運作狀態的相關資訊。

對於環境中的每個 Amazon EC2 執行個體，頁面會顯示執行個體的 ID 和[狀態](health-enhanced-status.md)、執行處理個體後的時間量、最近在執行個體上執行的部署 ID、服務的執行個體要求的回應和延遲，以及負載和 CPU 使用率資訊。**Overall (整體)** 資料列會顯示整體環境的平均回應和延遲資訊。

此頁面會以非常寬的資料表顯示許多詳細資訊。若要隱藏部分欄位，請選擇 ![\[the cog icon.\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/cog.png) (**偏好設定**)。選取或清除欄位名稱，然後選擇 **Confirm (確認)**。

![\[選取要顯示在環境運作狀況頁面上的欄位\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/enhanced-health-console-preferences.png)


選擇任何執行個體的 **Instance ID (執行個體 ID)**，以檢視有關執行個體的詳細資訊，包括其可用區域和執行個體類型。

![\[環境運作狀態頁面上的伺服器指標，以及執行個體資訊\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/enhanced-health-console-instance.png)


選擇任何執行個體的 **Deployment ID (部署 ID)**，以檢視執行個體最新 [deployment (部署)](using-features.deploy-existing-version.md) 的詳細資訊。

![\[環境運作狀態頁面上的伺服器指標，以及部署資訊\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/enhanced-health-console-deployment.png)


部署資訊包含下列項目：
+ **部署 ID** — [部署](using-features.deploy-existing-version.md)的唯一識別符。部署 ID 從 1 開始，每次當您部署新的應用程式版本或變更組態設定時 (這些設定會影響您環境執行個體上所執行的軟體或作業系統)，此 ID 就會增加 1。
+ **版本** — 部署中所使用應用程式原始程式碼的版本標籤。
+ **狀態** — 部署的狀態，可以是 `In Progress`、`Deployed` 或 `Failed`。
+ **時間** — 對於進行中的部署，這是其部署開始的時間。對於已完成的部署，這是其部署結束的時間。

如果您在環境中[啟用 X-Ray 整合](environment-configuration-debugging.md)並使用 AWS X-Ray SDK 檢測應用程式，**運作狀態**頁面會在概觀列中新增 AWS X-Ray 主控台的連結。

![\[環境運作狀態頁面上的請求指標\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/enhanced-health-console-xray.png)


選擇連結以檢視與 AWS X-Ray 主控台中反白顯示的統計資料相關的追蹤。

## 監控頁面
<a name="health-enhanced-console-monitoringpage"></a>

**監控**頁面會針對增強型運作狀態報告系統所產生的自訂 Amazon CloudWatch 指標，顯示摘要統計資料與圖表。如需在此頁面中新增圖表和統計資料的相關指示，請參閱[在 AWS 管理主控台中監控環境運作狀態](environment-health-console.md)。

# 運作狀態顏色和狀態
<a name="health-enhanced-status"></a>

增強式運作狀態報告會使用四種顏色，代表執行個體和整體環境的運作狀態，與[基本運作狀態報告](using-features.healthstatus.md)相似。增強式運作狀態報告亦提供七種運作狀態，採用單一詞彙描述，更完整地表示您環境的狀態。

## 執行個體狀態與環境狀態
<a name="health-enhanced-status-type"></a>

每次 Elastic Beanstalk 針對您的環境執行運作狀態檢查，增強型運作狀態報告會分析所有可用[資料](health-enhanced.md#health-enhanced-factors)，來檢查環境中的各個執行個體運作狀態。若任何較低層級的檢查失敗，Elastic Beanstalk 會調降執行個體的運作狀態等級。

Elastic Beanstalk 會在[環境管理主控台](environments-console.md)顯示整體環境的運作狀態資訊 (顏色、狀態與成因)。此資訊亦可自 EB CLI 取得。個別執行個體的運作狀態和原因訊息每 10 秒更新一次，當您使用 檢視運作狀態時，可從 [EB CLI](eb-cli3.md) 取得[**eb health**](health-enhanced-ebcli.md)。

Elastic Beanstalk 會使用執行個體運作狀態的變化，藉此評估環境的運作狀態，但不會立即變更環境運作狀態。若執行個體在任一分鐘內未通過運作狀態檢查達三次，Elastic Beanstalk 可能會調降環境的運作狀態等級。視環境中執行個體數量及所辨識的問題而定，一個運作狀態不良的執行個體可能會使 Elastic Beanstalk 顯示資訊訊息，或變更環境的運作狀態，將顏色從綠色 (**良好**) 調整為黃色 (**警告**) 或紅色 (**降級**或**嚴重**)。

## 正常 (綠色)
<a name="health-enhanced-status-ok"></a>

此狀態會在以下時機顯示：
+ 執行個體通過運作狀態檢查，且運作狀態代理程式未報告任何問題。
+ 環境中多數執行個體均通過運作狀態檢查，且運作狀態代理程式未報告重大問題。
+ 執行個體通過運作狀態檢查且正常完成請求。

範例：**您最近部署的環境正常處理請求。5% 的請求回傳 400 系列的錯誤。各個執行個體上的部署均正常完成。

訊息 (執行個體)：**應用程式部署於 23 秒前完成，總共費時 26 秒。

## 警告 (黃色)
<a name="health-enhanced-status-warning"></a>

此狀態會在以下時機顯示：
+ 運作狀態代理程式報告某一執行個體或環境出現中等數量的請求失敗或其他問題。
+ 執行個體上正在進行某個操作，且花費很長的時間。

範例：**環境中一個執行個體的狀態為**嚴重**。

訊息 (環境)：**5 個執行個體中其中 1 個服務受損。

## 降級 (紅色)
<a name="health-enhanced-status-degraded"></a>

此狀態會在運作狀態代理程式報告某一執行個體或環境出現大量請求失敗或其他問題時顯示。

範例：**環境正在向上擴展至 5 個執行個體。

*訊息 (環境)：*4 個作用中的執行個體低於 Auto Scaling 群組的大小最低限制 5。

## 嚴重 (紅色)
<a name="health-enhanced-status-severe"></a>

此狀態會在運作狀態代理程式報告某一執行個體或環境出現極大量請求失敗或其他問題時顯示。

*範例：*Elastic Beanstalk 無法聯絡負載平衡器以取得執行個體運作狀態。

訊息 (環境)：**ELB 運作狀態不良，或無法取得所有執行個體的運作狀態。無執行個體正在傳送資料。無法擔任角色「arn:aws:iam::123456789012:role/aws-elasticbeanstalk-service-role」。驗證角色是否存在，以及設定是否正確。

訊息 (執行個體)：**執行個體 ELB 運作狀態已處於無法使用狀態達 37 分鐘。無資料。最後的資料為 37 分鐘之前。

## 資訊 (綠色)
<a name="health-enhanced-status-info"></a>

此狀態會在以下時機顯示：
+ 執行個體上正在進行某個操作。
+ 環境中數個執行個體正在進行某個操作。

範例：**正將新的應用程式版本部署至執行中的執行個體。

訊息 (環境)：**5 個執行個體中的其中 3 個正在執行命令。

訊息 (執行個體)：**正在執行應用程式部署 (已執行 3 秒)。

## 待定 (灰色)
<a name="health-enhanced-status-pending"></a>

此狀態會在執行個體上於[命令逾時](health-enhanced.md#health-enhanced-factors-timeout)範圍內正在進行某個操作時顯示。

範例：**您最近已建立環境，且正在引導執行個體。

訊息：**正在執行初始化 (已執行 12 秒)。

## 未知 (灰色)
<a name="health-enhanced-status-unknown"></a>

此狀態會在 Elastic Beanstalk 及運作狀態代理程式報告執行個體上的資料量不足時顯示。

範例：**未接收到任何資料。

## 暫停 (灰色)
<a name="health-enhanced-status-suspended"></a>

此狀態會在 Elastic Beanstalk 停止監控環境的運作狀態時顯示。環境可能無法正常運作。某些嚴重的運作狀態如果持續太久，會導致 Elastic Beanstalk 將環境轉換成**暫停**狀態。

*範例：*Elastic Beanstalk 無法存取環境的[服務角色](iam-servicerole.md)。

*範例：*已刪除 Elastic Beanstalk 為環境建立的 [Auto Scaling 群組](using-features.managing.as.md)。

訊息：**環境運作狀態已從**良好**轉換成**嚴重**。沒有任何執行個體。已將 Auto Scaling 群組所需的容量設為 1。

# 執行個體指標
<a name="health-enhanced-metrics"></a>

執行個體指標可提供您環境中執行個體運作狀態的資訊。[Elastic Beanstalk 運作狀態代理程式](health-enhanced.md#health-enhanced-agent)會在每個執行個體上執行。它會收集並將執行個體的指標轉送給 Elastic Beanstalk，讓其分析指標來判斷您環境中執行個體的運作狀態。

執行個體上的 Elastic Beanstalk 運作狀態代理程式會從 Web 伺服器和作業系統收集執行個體的指標。為了取得 Linux 類型平台上的 Web 伺服器資訊，Elastic Beanstalk 會讀取和剖析 Web 伺服器日誌。在 Windows Server 平台上，Elastic Beanstalk 會直接從 IIS Web 伺服器接收此資訊。Web 伺服器會提供傳入 HTTP 請求的資訊：傳入的請求數量、導致錯誤的請求數量，以及解決錯誤的時間長度。作業系統會提供執行個體資源狀態的快照資訊：CPU 負載和每個處理類型的用時分配。

運作狀態代理程式會收集 Web 伺服器和作業系統指標，並每 10 秒轉送至 Elastic Beanstalk。Elastic Beanstalk 會分析資料，並使用結果來更新每個執行個體和環境的運作狀態。

**Topics**
+ [Web 伺服器指標](#health-enhanced-metrics-server)
+ [作業系統指標](#health-enhanced-metrics-os)
+ [Windows Server 上 IIS 內擷取到的 Web 伺服器指標](health-enhanced-metrics-server-iis.md)

## Web 伺服器指標
<a name="health-enhanced-metrics-server"></a>

在以 Linux 為基礎的平台上，Elastic Beanstalk 運作狀態代理程式會從日誌讀取 Web 伺服器指標，這些日誌來自環境中執行個體處理請求的 Web 容器或伺服器。Elastic Beanstalk 平台可設定為產生兩個日誌：一個是人類可讀的格式，另一個則是機器可讀的格式。運作狀態代理程式每 10 秒會將供機器閱讀的日誌轉送至 Elastic Beanstalk。

如需 Elastic Beanstalk 使用的日誌格式的詳細資訊，請參閱[增強型運作狀態日誌格式](health-enhanced-serverlogs.md)。

在 Windows Server 平台上，Elastic Beanstalk 會將模組新增至 IIS Web 伺服器的請求管道，並擷取 HTTP 請求時間和回應代碼的指標。模組會使用高效能處理序間通訊 (IPC) 通道，將這些指標傳送到執行個體上的運作狀態代理程式。如需實作的詳細資訊，請參閱 [Windows Server 上 IIS 內擷取到的 Web 伺服器指標](health-enhanced-metrics-server-iis.md)。報告的 Web 伺服器指標

`RequestCount`  
過去 10 秒內 Web 伺服器每秒處理請求的數目。會在 EB CLI 及 [環境健全狀態頁面](health-enhanced-console.md#health-enhanced-console-healthpage) 中顯示為平均 `r/sec` (每秒請求數)。

`Status2xx``Status3xx``Status4xx``Status5xx`  
過去 10 秒導致每個類型的狀態碼的請求數量。例如，成功的請求會傳回 200 OK；重新導向則傳回 301；若輸入的 URL 不符合應用程式內的任何資源，則傳回 404。  
EB CLI 和[環境健全狀態頁面](health-enhanced-console.md#health-enhanced-console-healthpage)顯示這些指標的格式包括：執行個體的請求原始數據，以及佔環境整體請求的比例。

`p99.9``p99``p95``p90``p85``p75``p50``p10`  
過去 10 秒最慢 *x*% 的請求的平均延遲，其中 *x* 為數字與 100 的差。例如，`p99 1.403` 表示過去 10 秒最慢的 1% 請求的平均延遲為 1.403 秒。

## 作業系統指標
<a name="health-enhanced-metrics-os"></a>

Elastic Beanstalk 運作狀態代理程式會報告下列作業系統指標。Elastic Beanstalk 使用這些指標來辨識持續承受高負載的執行個體。指標會因作業系統而不同。報告的作業系統指標 — Linux

`Running`  
執行個體啟動後已經過的時間。

`Load 1``Load 5`  
過去 1 分鐘和 5 分鐘期間的平均負載。以十進位值顯示，表示那段期間程序執行的平均數量。若該數值高於可用 vCPU (執行緒) 的數量，則剩餘部分則表示等待中的程序平均數量。  
例如，若您的執行個體類型有四個 vCPU，且負載為 4.5，則平均有 .5 個程序在那段期間處於等待狀態，相當於一個程序的等待時間佔了 50%。

`User %``Nice %``System %``Idle %``I/O Wait %`  
過去 10 秒內 CPU 花在每個狀態的時間百分比。報告的作業系統指標 — Windows

`Running`  
執行個體啟動後已經過的時間。

`% User Time``% Privileged Time``% Idle Time`  
過去 10 秒內 CPU 花在每個狀態的時間百分比。

# Windows Server 上 IIS 內擷取到的 Web 伺服器指標
<a name="health-enhanced-metrics-server-iis"></a>

在 Windows Server 平台上，Elastic Beanstalk 會將模組新增至 IIS Web 伺服器的請求管道，並擷取 HTTP 請求時間和回應代碼的指標。模組會使用高效能處理序間通訊 (IPC) 通道，將這些指標傳送到執行個體上的運作狀態代理程式。運作狀態代理程式會彙整這些指標，將它們與作業系統指標合併，並傳送至 Elastic Beanstalk 服務。

## 實作詳細資訊
<a name="health-enhanced-metrics-server-iis.impl"></a>

為了從 IIS 擷取指標，Elastic Beanstalk 會實作受管 [https://msdn.microsoft.com/en-us/library/system.web.ihttpmodule%28v=vs.110%29.aspx](https://msdn.microsoft.com/en-us/library/system.web.ihttpmodule%28v=vs.110%29.aspx)，並訂閱 [https://msdn.microsoft.com/en-us/library/system.web.httpapplication.beginrequest(v=vs.110).aspx](https://msdn.microsoft.com/en-us/library/system.web.httpapplication.beginrequest(v=vs.110).aspx) 和 [https://msdn.microsoft.com/en-us/library/system.web.httpapplication.endrequest(v=vs.110).aspx](https://msdn.microsoft.com/en-us/library/system.web.httpapplication.endrequest(v=vs.110).aspx) 事件。這可讓模組報告所有由 IIS 處理的 web 請求 HTTP 請求延遲及回應代碼。為了將模組新增至 IIS 請求管道，Elastic Beanstalk 會在 IIS 組態檔案 `%windir%\System32\inetsrv\config\applicationHost.config` 的 [https://docs.microsoft.com/en-us/iis/configuration/system.webserver/modules/](https://docs.microsoft.com/en-us/iis/configuration/system.webserver/modules/) 區段中註冊模組。

IIS 中的 Elastic Beanstalk 模組會將擷取到的 web 請求指標傳送到執行個體上的運作狀態代理程式，該程式是名為 `HealthD` 的 Windows 服務。為了傳送此資料，模組會使用 [https://msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding(v=vs.110).aspx](https://msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding(v=vs.110).aspx)，提供針對機器上通訊最佳化的安全、可靠繫結。

# 設定環境的增強型健康狀況規則
<a name="health-enhanced-rules"></a>

AWS Elastic Beanstalk 增強型運作狀態報告依賴一組規則來判斷您環境的運作狀態。這些的部分規則可能不適用於您的特定應用程式。以下是一些常見範例：
+ 您使用用戶端測試工具。在此案例中，預期經常發生 HTTP 用戶端 (4xx) 錯誤。
+ 您可以將 [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/) 與環境的 Application Load Balancer 搭配使用，以封鎖不必要的傳入流量。在此案例中，Application Load Balancer 會為每個拒絕的傳入訊息傳回 HTTP 403。

根據預設，在判斷環境的運作狀態時，Elastic Beanstalk 包含所有應用程式 HTTP 4xx 錯誤。它會根據錯誤率，將您的環境運作狀態從 **OK** (正常) 變更為 **Warning** (警告)、**Degraded** (降級) 或 **Severe** (嚴重)。若要正確處理如範例中所提的情況，Elastic Beanstalk 可讓您設定一些增強型運作狀態規則。您可以選擇忽略環境執行個體上的應用程式 HTTP 4xx 錯誤，或忽略環境負載平衡器傳回的 HTTP 4xx 錯誤。本主題說明如何進行這些組態變更。

**注意**  
目前，這是唯一可用的增強型運作狀態規則自訂。您無法將增強型運作狀態設為忽略 4xx 以外的其他 HTTP 錯誤。

## 使用 Elastic Beanstalk 主控台設定進階型運作狀態規則
<a name="health-enhanced-rules.console"></a>

您可以使用 Elastic Beanstalk 主控台在您環境中設定增強型運作狀態規則。

**使用 Elastic Beanstalk 主控台設定 HTTP 4xx 狀態碼檢查**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

1. 在導覽窗格中，選擇 **Configuration** (組態)。

1. 在 **Monitoring (監控)** 組態類別中，選擇 **Edit (編輯)**。

1. 在 **Health monitoring rule customization (運作狀態監控規則自訂)** 下，啟用或停用所需的 **Ignore (忽略)** 選項。  
![\[Elastic Beanstalk 主控台監控組態頁面上的運作狀態監控規則自訂部分\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/enhanced-health-rule-customization.png)

1. 若要儲存變更，請選擇頁面底部的**儲存變更**。

## 使用 EB CLI 設定增強型運作狀態規則
<a name="health-enhanced-rules.ebcli"></a>

您可以透過在本機儲存環境組態、新增設定增強型運作狀態規則的項目，然後將組態上傳到 Elastic Beanstalk。您可在建立期間或之後將儲存的設定套用到環境中。

**使用 EB CLI 和儲存的組態設定 HTTP 4xx 狀態碼檢查**

1. 初始化您的專案資料夾 [**eb init**](eb-cli3-configuration.md)。

1. 透過執行 **eb create** 命令來建立環境。

1. 透過執行 **eb config save** 命令以在本機儲存組態範本。以下範例使用 `--cfg` 選項以指定組態的名稱。

   ```
   $ eb config save --cfg 01-base-state
   Configuration saved at: ~/project/.elasticbeanstalk/saved_configs/01-base-state.cfg.yml
   ```

1. 在文字編輯器中開啟已儲存的組態檔案。

1. 在 `OptionSettings` > `aws:elasticbeanstalk:healthreporting:system:`下，新增 `ConfigDocument` 金鑰以列出每個增強型運作狀態規則來做設定。以下 `ConfigDocument` 停用應用程式 HTTP 4xx 狀態碼的檢查，同時保持負載平衡器 HTTP 4xx 代碼的檢查。

   ```
   OptionSettings:
     ...
     aws:elasticbeanstalk:healthreporting:system:
       ConfigDocument:
         Rules:
           Environment:
             Application:
               ApplicationRequests4xx:
                 Enabled: false
             ELB:
               ELBRequests4xx:
                 Enabled: true
         Version: 1
       SystemType: enhanced
   ...
   ```
**注意**  
您可將 `Rules` 和 `CloudWatchMetrics` 合併在相同的 `ConfigDocument` 選項設定中。`CloudWatchMetrics` 會在 [為環境發佈 Amazon CloudWatch 自訂指標](health-enhanced-cloudwatch.md) 中詳加說明。  
如果您之前已啟用 `CloudWatchMetrics`，使用 **eb config save** 命令擷取的組態檔案已經擁有 `ConfigDocument` 金鑰及 `CloudWatchMetrics` 部分。*請勿刪除* — 將 `Rules` 區段加入到相同的 `ConfigDocument` 選項值。

1. 儲存組態檔案並關閉文字編輯器。在這個範例中，已更新的組態檔案是以不同於下載的組態檔案名稱儲存 (`02-cloudwatch-enabled.cfg.yml`)。這會在檔案上傳時建立單獨的已儲存組態。您可以使用與下載的檔案相同的名稱，以覆寫現有的組態，不用建立新的名稱。

1. 使用 **eb config put** 命令上傳更新的組態檔案到 Elastic Beanstalk。

   ```
   $ eb config put 02-cloudwatch-enabled
   ```

   當您在已儲存的組態使用 **eb config** `get` 和 `put` 命令時，請不要包含副檔名。

1. 套用儲存的組態至您的執行環境。

   ```
   $ eb config --cfg 02-cloudwatch-enabled
   ```

   該 `--cfg` 選項會指定一個已套用至環境並已命名的組態檔案。您可以在本機儲存組態檔，或可儲存在 Elastic Beanstalk 中。如果已指定名稱的組態檔案同時存在兩個位置中，則 EB CLI 會使用本機檔案。

## 使用 Config 文件設定增強型運作狀態規則
<a name="health-enhanced-rules.configdocument"></a>

適用於增強型運作狀態規則的組態 (config) 文件是 JSON 文件，其中列出要設定的規則。

以下範例顯示的 Config 文件停用應用程式 HTTP 4xx 狀態碼的檢查，並啟用負載平衡器 HTTP 4xx 狀態碼的檢查。

```
{
  "Rules": {
    "Environment": {
      "Application": {
        "ApplicationRequests4xx": {
          "Enabled": false
        }
      },
      "ELB": {
        "ELBRequests4xx": {
          "Enabled": true
        }
      }
    }
  },
  "Version": 1
}
```

對於 AWS CLI，您可以在選項設定引數中將文件做為索引`Value`鍵的值傳遞，而選項設定引數本身是 JSON 物件。在這種情況下，您必須將嵌入文件中的引號逸出。以下命令會檢查組態設定是否有效。

```
$ aws elasticbeanstalk validate-configuration-settings --application-name my-app --environment-name my-env --option-settings '[
    {
        "Namespace": "aws:elasticbeanstalk:healthreporting:system",
        "OptionName": "ConfigDocument",
        "Value": "{\"Rules\": { \"Environment\": { \"Application\": { \"ApplicationRequests4xx\": { \"Enabled\": false } }, \"ELB\": { \"ELBRequests4xx\": {\"Enabled\": true } } } }, \"Version\": 1 }"
    }
]'
```

如需 YAML`.ebextensions` 中的組態檔案，您可以依原狀提供 JSON 文件。

```
  option_settings:
    - namespace: aws:elasticbeanstalk:healthreporting:system
      option_name: ConfigDocument
      value: {
  "Rules": {
    "Environment": {
      "Application": {
        "ApplicationRequests4xx": {
          "Enabled": false
        }
      },
      "ELB": {
        "ELBRequests4xx": {
          "Enabled": true
        }
      }
    }
  },
  "Version": 1
}
```

# 為環境發佈 Amazon CloudWatch 自訂指標
<a name="health-enhanced-cloudwatch"></a>

您可以將 AWS Elastic Beanstalk 增強型運作狀態報告收集的資料發佈至 Amazon CloudWatch，做為自訂指標。發佈指標到 CloudWatch 以讓您隨時監控應用程式效能變化，並透過追蹤資源使用情況並要求延遲擴展負載來找出潛在的問題。

透過發佈指標至 CloudWatch，您也可藉由[監控圖表](environment-health-console.md#environment-health-console-graphs)和[警示](using-features.alarms.md)讓它們可供使用。一個免費指標，當您使用增強型運作狀態狀況報告，會自動啟用 *EnvironmentHealth*。*EnvironmentHealth* 以外的自訂指標會產生標準 [CloudWatch 費用](https://aws.amazon.com/cloudwatch/pricing/)。

若要為環境發佈 CloudWatch 自訂指標，您必須在環境中先啟用增強型運作狀態報告。如需說明，請參閱 [啟用 Elastic Beanstalk 增強型運作狀態報告](health-enhanced-enable.md)。

**Topics**
+ [增強型運作狀態報告指標](#health-enhanced-cloudwatch-metrics)
+ [使用 Elastic Beanstalk 主控台設定 CloudWatch 指標](#health-enhanced-cloudwatch-console)
+ [使用 EB CLI 設定 CloudWatch 自訂指標](#health-enhanced-cloudwatch-ebcli)
+ [提供自訂指標設定文件](#health-enhanced-cloudwatch-configdocument)

## 增強型運作狀態報告指標
<a name="health-enhanced-cloudwatch-metrics"></a>

當您在環境中啟用增強型運作狀態報告時，增強型運作狀態報告系統會自動發佈一個 [CloudWatch 自訂指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/publishingMetrics.html) (*EnvironmentHealth*)。若要發佈其他指標至 CloudWatch，可透過使用 [Elastic Beanstalk 主控台](#health-enhanced-cloudwatch-console)、[EB CLI](#health-enhanced-cloudwatch-ebcli) 或 [.ebextensions](command-options.md)，利用那些指標來設定您的環境。

您可以從您的環境發佈以下增強型運作狀態指標至 CloudWatch。可用指標 — 所有平台

`EnvironmentHealth`  
*僅用於環境。*除非設定其他指標，否則這是唯一增強型運作狀態報告系統發佈的 CloudWatch 指標。環境運作狀態係由七種[狀態](health-enhanced-status.md)其中之一來表示。在 CloudWatch 主控台中，這些狀態對應到以下值：  
+ 0 - 良好
+ 1 - 資訊
+ 5 - 不明
+ 10 - 無資料
+ 15 - 警告
+ 20 - 降級
+ 25 - 嚴重

`InstancesSevere``InstancesDegraded``InstancesWarning``InstancesInfo``InstancesOk``InstancesPending``InstancesUnknown``InstancesNoData`  
*僅用於環境。*這些指標表示在環境中的執行個體數目與個別運作狀態。`InstancesNoData` 表示沒有收到資料的執行個體數量。

`ApplicationRequestsTotal``ApplicationRequests5xx``ApplicationRequests4xx``ApplicationRequests3xx``ApplicationRequests2xx`  
*執行個體和環境。*表示由執行個體或環境所完成請求的總數量，以及每個狀態碼類別完成的請求數量。

`ApplicationLatencyP10``ApplicationLatencyP50``ApplicationLatencyP75``ApplicationLatencyP85``ApplicationLatencyP90``ApplicationLatencyP95``ApplicationLatencyP99``ApplicationLatencyP99.9`  
*執行個體和環境。*表示它完成 *x* % 請求的最快平均時間 (秒)。

`InstanceHealth`  
*僅執行個體。*表示目前執行個體的運作狀態。執行個體運作狀態係由七種[狀態](health-enhanced-status.md)其中之一來表示。在 CloudWatch 主控台中，這些狀態對應到以下值：  
+ 0 - 良好
+ 1 - 資訊
+ 5 - 不明
+ 10 - 無資料
+ 15 - 警告
+ 20 - 降級
+ 25 - 嚴重可用指標 — Linux

`CPUIrq``CPUIdle``CPUUser``CPUSystem``CPUSoftirq``CPUIowait``CPUNice`  
*僅執行個體。*顯示過去一分鐘內 CPU 花在每個狀態的時間百分比。

`LoadAverage1min`  
*僅執行個體。*在過去一分鐘執行個體的平均 CPU 負載。

`RootFilesystemUtil`  
*僅執行個體。*表示使用中的磁碟空間的百分比。可用指標 — Windows

`CPUIdle``CPUUser``CPUPrivileged`  
僅執行個體。顯示過去一分鐘內 CPU 花在每個狀態的時間百分比。

## 使用 Elastic Beanstalk 主控台設定 CloudWatch 指標
<a name="health-enhanced-cloudwatch-console"></a>

您可以使用 Elastic Beanstalk 主控台來設定您的環境以發佈增強型運作狀態報告指標至 CloudWatch，並使它們可用於監控圖表和警示。

**在 Elastic Beanstalk 主控台中設定 CloudWatch 自訂指標**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

1. 在導覽窗格中，選擇 **Configuration** (組態)。

1. 在 **Monitoring (監控)** 組態類別中，選擇 **Edit (編輯)**。

1. 在**運作狀態報告**下，選取要發佈到 CloudWatch 的執行個體和環境指標。若要選擇多個指標，請在選擇時同時按下 **Ctrl (Ctrl)** 鍵。

1. 若要儲存變更，請選擇頁面底部的**儲存變更**。

啟用 CloudWatch 自訂指標可將它們新增至 [**監控** 頁面](environment-health-console.md)上可用的指標清單。

## 使用 EB CLI 設定 CloudWatch 自訂指標
<a name="health-enhanced-cloudwatch-ebcli"></a>

您可以透過在本機保存您的環境設定、新增定義要發佈指標的項目來使用 EB CLI 設定自訂指標，然後將設定上傳到 Elastic Beanstalk。您可在建立期間或之後將儲存的設定套用到環境中。

**使用 EB CLI 和儲存的組態設定 CloudWatch 自訂指標**

1. 初始化您的專案資料夾 [**eb init**](eb-cli3-configuration.md)。

1. 透過執行 **eb create** 命令來建立環境。

1. 透過執行 **eb config save** 命令以在本機儲存組態範本。以下範例使用 `--cfg` 選項以指定組態的名稱。

   ```
   $ eb config save --cfg 01-base-state
   Configuration saved at: ~/project/.elasticbeanstalk/saved_configs/01-base-state.cfg.yml
   ```

1. 在文字編輯器中開啟已儲存的組態檔案。

1. 在 `OptionSettings` > `aws:elasticbeanstalk:healthreporting:system:` 下方，新增 `ConfigDocument` 金鑰以啟用每個您想要的 CloudWatch 指標。例如，以下的 `ConfigDocument` 發佈 `ApplicationRequests5xx` 和 `ApplicationRequests4xx` 環境層級的指標，以及 `ApplicationRequestsTotal` 在執行個體層級的指標。

   ```
   OptionSettings:
     ...
     aws:elasticbeanstalk:healthreporting:system:
       ConfigDocument:
         CloudWatchMetrics:
           Environment:
             ApplicationRequests5xx: 60
             ApplicationRequests4xx: 60
           Instance:
             ApplicationRequestsTotal: 60
         Version: 1
       SystemType: enhanced
   ...
   ```

   在此範例中，60 表示測量之間的秒數。目前，這是唯一支援的值。
**注意**  
您可將 `CloudWatchMetrics` 和 `Rules` 合併在相同的 `ConfigDocument` 選項設定中。`Rules` 會在 [設定環境的增強型健康狀況規則](health-enhanced-rules.md) 中詳加說明。  
如果您之前已使用 `Rules` 設定增強型運作狀態規則，那麼使用 **eb config save** 命令擷取的組態檔案，已經擁有 `ConfigDocument` 金鑰及 `Rules` 部分。*請勿刪除* — 將 `CloudWatchMetrics` 區段加入到相同的 `ConfigDocument` 選項值。

1. 儲存組態檔案並關閉文字編輯器。在這個範例中，已更新的組態檔案是以不同於下載的組態檔案名稱儲存 (`02-cloudwatch-enabled.cfg.yml`)。這會在檔案上傳時建立單獨的已儲存組態。您可以使用與下載的檔案相同的名稱，以覆寫現有的組態，不用建立新的名稱。

1. 使用 **eb config put** 命令上傳更新的組態檔案到 Elastic Beanstalk。

   ```
   $ eb config put 02-cloudwatch-enabled
   ```

   當您搭配已儲存的組態使用 **eb config** `get` 和 `put` 命令時，請不要包含副檔名。

1. 套用儲存的組態至您的執行環境。

   ```
   $ eb config --cfg 02-cloudwatch-enabled
   ```

   該 `--cfg` 選項會指定一個已套用至環境並已命名的組態檔案。您可以在本機儲存組態檔，或可儲存在 Elastic Beanstalk 中。如果已指定名稱的組態檔案同時存在兩個位置中，則 EB CLI 會使用本機檔案。

## 提供自訂指標設定文件
<a name="health-enhanced-cloudwatch-configdocument"></a>

Amazon CloudWatch 自訂指標組態 (config) 文件是一種 JSON 文件，能以環境與執行個體的層級列出要發佈的指標。以下範例顯示能在 Linux 啟用所有可用自訂指標的設定文件。

```
{
  "CloudWatchMetrics": {
    "Environment": {
      "ApplicationLatencyP99.9": 60,
      "InstancesSevere": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "InstancesUnknown": 60,
      "ApplicationLatencyP85": 60,
      "InstancesInfo": 60,
      "ApplicationRequests2xx": 60,
      "InstancesDegraded": 60,
      "InstancesWarning": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "InstancesNoData": 60,
      "InstancesPending": 60,
      "ApplicationLatencyP10": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "InstancesOk": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60
    },
    "Instance": {
      "ApplicationLatencyP99.9": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "ApplicationLatencyP85": 60,
      "CPUUser": 60,
      "ApplicationRequests2xx": 60,
      "CPUIdle": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "RootFilesystemUtil": 60,
      "LoadAverage1min": 60,
      "CPUIrq": 60,
      "CPUNice": 60,
      "CPUIowait": 60,
      "ApplicationLatencyP10": 60,
      "LoadAverage5min": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "CPUSystem": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60,
      "InstanceHealth": 60,
      "CPUSoftirq": 60
    }
  },
  "Version": 1
}
```

對於 AWS CLI，您可以在選項設定引數中將文件做為索引`Value`鍵的值傳遞，而選項設定引數本身是 JSON 物件。在這種情況下，您必須將嵌入文件中的引號逸出。

```
$ aws elasticbeanstalk validate-configuration-settings --application-name my-app --environment-name my-env --option-settings '[
    {
        "Namespace": "aws:elasticbeanstalk:healthreporting:system",
        "OptionName": "ConfigDocument",
        "Value": "{\"CloudWatchMetrics\": {\"Environment\": {\"ApplicationLatencyP99.9\": 60,\"InstancesSevere\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": 60,\"ApplicationLatencyP95\": 60,\"InstancesUnknown\": 60,\"ApplicationLatencyP85\": 60,\"InstancesInfo\": 60,\"ApplicationRequests2xx\": 60,\"InstancesDegraded\": 60,\"InstancesWarning\": 60,\"ApplicationLatencyP50\": 60,\"ApplicationRequestsTotal\": 60,\"InstancesNoData\": 60,\"InstancesPending\": 60,\"ApplicationLatencyP10\": 60,\"ApplicationRequests5xx\": 60,\"ApplicationLatencyP75\": 60,\"InstancesOk\": 60,\"ApplicationRequests3xx\": 60,\"ApplicationRequests4xx\": 60},\"Instance\": {\"ApplicationLatencyP99.9\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": 60,\"ApplicationLatencyP95\": 60,\"ApplicationLatencyP85\": 60,\"CPUUser\": 60,\"ApplicationRequests2xx\": 60,\"CPUIdle\": 60,\"ApplicationLatencyP50\": 60,\"ApplicationRequestsTotal\": 60,\"RootFilesystemUtil\": 60,\"LoadAverage1min\": 60,\"CPUIrq\": 60,\"CPUNice\": 60,\"CPUIowait\": 60,\"ApplicationLatencyP10\": 60,\"LoadAverage5min\": 60,\"ApplicationRequests5xx\": 60,\"ApplicationLatencyP75\": 60,\"CPUSystem\": 60,\"ApplicationRequests3xx\": 60,\"ApplicationRequests4xx\": 60,\"InstanceHealth\": 60,\"CPUSoftirq\": 60}},\"Version\": 1}"
    }
]'
```

如需 YAML`.ebextensions` 中的組態檔案，您可以依原狀提供 JSON 文件。

```
  option_settings:
    - namespace: aws:elasticbeanstalk:healthreporting:system
      option_name: ConfigDocument
      value: {
  "CloudWatchMetrics": {
    "Environment": {
      "ApplicationLatencyP99.9": 60,
      "InstancesSevere": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "InstancesUnknown": 60,
      "ApplicationLatencyP85": 60,
      "InstancesInfo": 60,
      "ApplicationRequests2xx": 60,
      "InstancesDegraded": 60,
      "InstancesWarning": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "InstancesNoData": 60,
      "InstancesPending": 60,
      "ApplicationLatencyP10": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "InstancesOk": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60
    },
    "Instance": {
      "ApplicationLatencyP99.9": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "ApplicationLatencyP85": 60,
      "CPUUser": 60,
      "ApplicationRequests2xx": 60,
      "CPUIdle": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "RootFilesystemUtil": 60,
      "LoadAverage1min": 60,
      "CPUIrq": 60,
      "CPUNice": 60,
      "CPUIowait": 60,
      "ApplicationLatencyP10": 60,
      "LoadAverage5min": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "CPUSystem": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60,
      "InstanceHealth": 60,
      "CPUSoftirq": 60
    }
  },
  "Version": 1
}
```

# 將增強型運作狀態報告與 Elastic Beanstalk API 搭配使用
<a name="health-enhanced-api"></a>

由於 AWS Elastic Beanstalk 增強型運作狀態報告具有角色和解決方案堆疊需求，因此您必須先更新在增強型運作狀態報告發行之前使用的指令碼和程式碼，才能使用它。為了保持回溯相容性，在您使用 Elastic Beanstalk API 來建立環境時，增強型運作狀態報告預設不會啟用。

請為您的環境設定服務角色、執行個體描述檔和 Amazon CloudWatch 組態選項，以設定增強型運作狀態報告。您可以透過三種方式來進行設定：設定 `.ebextensions` 資料夾中的組態選項、使用儲存的組態，或是在 `create-environment` 呼叫的 `option-settings` 參數中直接設定這些項目。

若要使用 API、SDKs或 AWS 命令列界面 (CLI) 來建立支援增強型運作狀態的環境，您必須：
+ 使用適當的[權限](concepts-roles.md)來建立服務角色和執行個體描述檔
+ 使用新的[平台版本](concepts.platforms.md)建立新的環境
+ 設定運作狀態系統類型、執行個體描述檔和服務角色[組態選項](command-options.md)

請使用 `aws:elasticbeanstalk:healthreporting:system`、`aws:autoscaling:launchconfiguration` 和 `aws:elasticbeanstalk:environment` 命名空間中的下列組態選項，來設定您環境的增強型運作狀態報告。

## 增強型運作狀態組態選項
<a name="health-enhanced-api-options"></a>

**SystemType**

命名空間：`aws:elasticbeanstalk:healthreporting:system`

若要啟用增強型運作狀態報告，請設定為 **enhanced**。

**IamInstanceProfile**

命名空間：`aws:autoscaling:launchconfiguration`

設定為執行個體描述檔的名稱，此設定檔已設定為搭配 Elastic Beanstalk 使用。

**ServiceRole**

命名空間：`aws:elasticbeanstalk:environment`

設定為服務角色的名稱，此服務角色已設定為搭配 Elastic Beanstalk 使用。

**ConfigDocument** (選用)

命名空間：`aws:elasticbeanstalk:healthreporting:system`

JSON 文件，其中定義了要發佈到 CloudWatch 的執行個體和環境指標。例如：

```
{
  "CloudWatchMetrics":
    {
    "Environment":
      {
      "ApplicationLatencyP99.9":60,
      "InstancesSevere":60
      }
    "Instance":
      {
      "ApplicationLatencyP85":60,
      "CPUUser": 60
      }
    }
  "Version":1
}
```

**注意**  
取決於您提供給 Elastic Beanstalk 的格式，組態文件可能需要使用特別的格式，例如逸出引號。如需範例，請參閱 [提供自訂指標設定文件](health-enhanced-cloudwatch.md#health-enhanced-cloudwatch-configdocument)。

# 增強型運作狀態日誌格式
<a name="health-enhanced-serverlogs"></a>

AWS Elastic Beanstalk 平台使用自訂 Web 伺服器日誌格式，有效率地將 HTTP 請求的相關資訊轉送至增強型運作狀態報告系統。系統會分析日誌、識別問題，並相應地設定執行個體和環境運作狀態。若您停用環境的 Web 伺服器代理並直接從 Web 容器處理請求，您仍可將伺服器設定為透過 [Elastic Beanstalk 運作狀態代理程式](health-enhanced.md#health-enhanced-agent)使用的位置和格式來輸出日誌，藉此善加運用增強型運作狀態報告。

**注意**  
此頁面上的資訊只和 Linux 類型平台相關。在 Windows Server 平台上，Elastic Beanstalk 會直接從 IIS Web 伺服器接收 HTTP 請求的資訊。如需詳細資訊，請參閱[Windows Server 上 IIS 內擷取到的 Web 伺服器指標](health-enhanced-metrics-server-iis.md)。

## Web 伺服器日誌組態
<a name="health-enhanced-serverlogs.configure"></a>

Elastic Beanstalk 平台設定為輸出兩個與 HTTP 請求有關的資訊之日誌。第一個為詳細記錄的格式，並提供有關請求的詳細資訊，包括申請者的使用者代理程式資訊和人類可讀的時間戳記。

**/var/log/nginx/access.log**  
下列範例來自執行於 Ruby Web 伺服器環境上的 nginx 代理，但格式與 Apache 的類似。

```
172.31.24.3 - - [23/Jul/2015:00:21:20 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:21 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
172.31.24.3 - - [23/Jul/2015:00:21:22 +0000] "GET / HTTP/1.1" 200 11 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "177.72.242.17"
```

第二個日誌則採用簡潔格式，其中包含僅與增強型運作狀態報告相關的資訊。本日誌會輸出至名為 `healthd` 的子資料夾，且每小時輪換一次。輪換出的舊日誌會立即刪除。

**/var/log/nginx/healthd/application.log.2015-07-23-00**  
下列範例的日誌採用機器可讀取的格式。

```
1437609879.311"/"200"0.083"0.083"177.72.242.17
1437609879.874"/"200"0.347"0.347"177.72.242.17
1437609880.006"/bad/path"404"0.001"0.001"177.72.242.17
1437609880.058"/"200"0.530"0.530"177.72.242.17
1437609880.928"/bad/path"404"0.001"0.001"177.72.242.17
```

增強型運作狀態日誌格式包含下列資訊：
+ 請求的時間，格式為 Unix 時間
+ 請求的路徑
+ 結果的 HTTP 狀態代碼
+ 請求時間
+ 上游時間
+ `X-Forwarded-For` HTTP 標頭

以 nginx 代理而言，時間為具有三個小數位的浮點秒。Apache 則用整微秒表示。

**注意**  
若您在日誌檔案中看到類似下列的警告 (其中 `DATE-TIME` 為日期和時間)，並且您使用自訂代理 (例如在多容器 Docker 環境中的情況)，您必須使用 .ebextension 來設定您的環境，讓 `healthd` 可讀取您的日誌檔案：  

```
W, [DATE-TIME #1922] WARN -- : log file "/var/log/nginx/healthd/application.log.DATE-TIME" does not exist
```
您可以從[多容器 Docker 範例](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/samples/docker-multicontainer-v2.zip)中的 .ebextension 開始。

**/etc/nginx/conf.d/webapp\$1healthd.conf**  
下列範例為 nginx 的日誌組態，並反白顯示 `healthd` 日誌格式。

```
upstream my_app {
  server unix:///var/run/puma/my_app.sock;
}

log_format healthd '$msec"$uri"'
                '$status"$request_time"$upstream_response_time"'
                '$http_x_forwarded_for';

server {
  listen 80;
  server_name _ localhost; # need to listen to localhost for worker tier

  if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
    set $year $1;
    set $month $2;
    set $day $3;
    set $hour $4;
  }

  access_log  /var/log/nginx/access.log  main;
  access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd;

  location / {
    proxy_pass http://my_app; # match the name of upstream directive which is defined above
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }

  location /assets {
    alias /var/app/current/public/assets;
    gzip_static on;
    gzip on;
    expires max;
    add_header Cache-Control public;
  }

  location /public {
    alias /var/app/current/public;
    gzip_static on;
    gzip on;
    expires max;
    add_header Cache-Control public;
  }
}
```

**/etc/httpd/conf.d/healthd.conf**  
以下範例顯示 Apache 的日誌組態。

```
LogFormat "%{%s}t\"%U\"%s\"%D\"%D\"%{X-Forwarded-For}i" healthd
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/healthd/application.log.%Y-%m-%d-%H 3600" healthd
```

## 產生增強型運作狀態報告的日誌
<a name="health-enhanced-serverlogs.generate"></a>

欲提供日誌給運作狀態代理程式，您必須執行下列操作：
+ 如上述以正確格式輸出日誌
+ 將日誌輸出至 `/var/log/nginx/healthd/`
+ 日誌命名格式如下：`application.log.$year-$month-$day-$hour`
+ 每小時輪換日誌一次
+ 請勿截斷日誌

# 通知與故障診斷
<a name="environments-health-enhanced-notifications"></a>

**試用 Amazon Q Developer CLI 進行 AI 輔助故障診斷**  
 Amazon Q Developer CLI 可協助您快速疑難排解環境問題。Q CLI 透過檢查環境狀態、檢閱事件、分析日誌和詢問釐清問題來提供解決方案。如需詳細資訊和詳細的逐步解說，請參閱 AWS 部落格中的[使用 Amazon Q Developer CLI 疑難排解 Elastic Beanstalk 環境](https://aws.amazon.com/blogs/devops/troubleshooting-elastic-beanstalk-environments-with-amazon-q-developer-cli/)。

此頁面列出常見問題的訊息，以及更多資訊的連結。訊息會顯示在 Elastic Beanstalk 主控台[環境概觀窗格](environments-dashboard-envoverview.md)的 中，並在運作狀態問題持續存在的數個檢查時，記錄在[事件](using-features.events.md)中。

## 部署
<a name="environments-health-enhanced-notifications-deployments"></a>

在部署之後，Elastic Beanstalk 會監控您的環境以確保一致性。如果滾動部署失敗，則在您環境中的執行個體上所執行的應用程式，其版本可能會有不同。如果一個或多個批次的部署成功，但是在所有批次的部署完成之前失敗了，就可能會發生此種狀況。

*在 5 個執行個體中的 2 個找到不正確的應用程式版本。預期的版本 "v1" （部署 1)。*

*環境執行個體上的應用程式版本不正確。預期的版本 "v1" （部署 1)。*

預期的應用程式版本，並未在環境中的部分或全部執行個體上執行。

*應用程式版本「v2」不正確 （部署 2)。預期的版本 "v1" （部署 1)。*

已部署到執行個體上的應用程式和預期的版本不同。如果部署失敗，則預期的版本會重設為最近成功部署的版本。在上述的範例中，第一個部署 (「v1」) 成功，但第二個部署 (「v2」) 失敗了。任何執行個體中的「v2」都會被視為運作狀態不佳。

若要解決此問題，請開始進行另一項部署作業。您可以[重新部署已知運作正常的先前版本](using-features.deploy-existing-version.md)，或是設定您的環境在部署進行時[略過運作狀態檢查](using-features.rolling-version-deploy.md#environments-cfg-rollingdeployments-console)，然後重新部署新的版本，以強制完成部署作業。

您也可以找出和終止執行應用程式錯誤版本的執行個體。Elastic Beanstalk 將會啟動執行正確版本的執行個體，來取代您所終止的任何執行個體。利用 [EB CLI 運作狀態指令](health-enhanced-ebcli.md)，來找出執行應用程式錯誤版本的執行個體。

## 應用程式伺服器
<a name="environments-health-enhanced-notifications-webapp"></a>

*有 15% 的請求發生 HTTP 4xx 錯誤*

*傳送給 ELB 的請求，有 20% 發生 HTTP 4xx 錯誤。*

傳送到執行個體或環境的 HTTP 請求，有極高的百分比因為發生了 4xx 錯誤而失敗。

400 系列的狀態碼表示使用者發出了不良的請求，例如請求不存在的頁面 (404 找不到檔案)，或使用者不具存取權限 (403 禁止存取)。少量的 404 錯誤是常見的，但是大量的 404 錯誤，則可能代表有內部或外部的連結連到了無法使用的頁面。修正無效的內部連結，並針對無效的外部連結新增重新導向功能，即可解決這些問題。

*有 5% 的請求因為發生 HTTP 5xx 錯誤而失敗*

*傳送給 ELB 的請求，有 3% 因為發生 HTTP 5xx 錯誤而失敗。*

傳送到執行個體或環境的 HTTP 請求，有極高的百分比因為發生了 500 系列狀態代碼的錯誤而失敗。

500 系列狀態碼表示應用程式伺服器發生了內部錯誤。這些問題代表您應用程式的程式碼中存在錯誤，應該盡快找出和修正這些錯誤。

*CPU 的使用率為 95%*

在執行個體上，運作狀態代理程式報告了極高百分比的 CPU 使用率，並且將執行個體的運作狀態設為**警告**或**降級**。

請擴展您的環境，來減少執行個體的負載。

## 工作者執行個體
<a name="environments-health-enhanced-notifications-worker"></a>

*在佇列中有 20 筆訊息待處理 (25 秒前)*

請求新增到您工作者環境佇列中的速度，比處理請求的速度還快。請擴展您的環境，以提高處理能力。

*在無效字母佇列中有 5 筆訊息 (15 秒前) *

工作者的請求正重複失敗，並且新增到 [無效信件佇列](using-features-managing-env-tiers.md#worker-deadletter) 中。查看無效字母佇列中的請求，來了解其失敗原因。

## 其他資源
<a name="environments-health-enhanced-notifications-other"></a>

*4 個作用中的執行個體低於 Auto Scaling 群組的大小最低限制 5*

您環境中所執行的執行個體數量，少於針對 Auto Scaling 群組所設定的最低數量限制。

*Auto Scaling 群組 (groupname) 通知已刪除或修改*

針對您的 Auto Scaling 群組所設定的通知，已經在 Elastic Beanstalk 外部修改。

# AI 驅動的環境分析
<a name="health-ai-analysis"></a>

AWS Elastic Beanstalk的 AI 驅動分析可識別根本原因，並建議環境運作狀態問題的解決方案。當您的環境遇到問題時，您可以使用 `RequestEnvironmentInfo`和 `RetrieveEnvironmentInfo` API 操作搭配 `analyze`資訊類型來請求 AI 分析，以取得 AI 產生的洞見和建議的解決方案。

**注意**  
AI 分析僅適用於 2026 年 2 月 16 日當天或之後發行的支援 Amazon Linux 2 和 AL2023 平台版本。

## 運作方式
<a name="health-ai-analysis-how-it-works"></a>

當您請求 AI 分析時，Elastic Beanstalk 會在環境中的執行個體上執行指令碼，以收集最近的事件、執行個體運作狀態和日誌 （最多 170，000 [個資料字符](https://docs.aws.amazon.com/bedrock/latest/userguide/key-definitions.html))。然後，它會將此資料傳送至您帳戶中的 Amazon Bedrock，並傳回洞見和建議的後續步驟。

## 先決條件
<a name="health-ai-analysis-prereqs"></a>

使用 AI 分析之前，請確認您的環境符合下列要求：
+ 執行[支援平台版本](#health-ai-analysis-supported-platforms)的環境
+ 具有必要許可的[執行個體描述檔](iam-instanceprofile.md) （請參閱[所需的許可](#health-ai-analysis-permissions)下文）
+ **人類使用案例詳細資訊** – AI 分析透過 Amazon Bedrock 使用 Anthropic Claude 模型。Anthropic 要求您提交一次性使用案例詳細資訊表單，才能叫用其模型。若要提交此表格，請從 [Amazon Bedrock 主控台](https://console.aws.amazon.com/bedrock/)的模型目錄中選取任何 Anthropic 模型，或呼叫 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_PutUseCaseForModelAccess.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_PutUseCaseForModelAccess.html) API。每個 AWS 帳戶只需執行一次此操作。如果您從 AWS Organizations 管理帳戶提交表單，它會自動涵蓋組織中的所有成員帳戶。如需詳細資訊，請參閱[存取 Amazon Bedrock 基礎模型](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)。
+ **GovCloud 區域** – 如果您使用 AWS GovCloud (US) 區域，您必須先啟用 Amazon Bedrock 中最新 Anthropic Claude Sonnet 和/或 Opus 模型的存取權，才能使用 AI 分析。如需在 GovCloud 區域中啟用模型存取的指示，請參閱[管理對 Amazon Bedrock 基礎模型的存取](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html#model-access-govcloud)。如需有關最新可用 Anthropic Claude Sonnet 和/或 Opus 模型的資訊，請參閱[推論設定檔的支援區域和模型](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html)。

## 所需的許可
<a name="health-ai-analysis-permissions"></a>

若要使用 AI 分析，您環境的 Amazon EC2 執行個體描述檔必須具有叫用 Amazon Bedrock 的許可。將下列許可新增至執行個體描述檔：
+ `bedrock:InvokeModel`
+ `bedrock:ListFoundationModels`
+ `elasticbeanstalk:DescribeEvents`
+ `elasticbeanstalk:DescribeEnvironmentHealth`

如需設定執行個體描述檔的詳細資訊，請參閱 [管理 Elastic Beanstalk 執行個體描述檔](iam-instanceprofile.md)。

## 在 主控台中使用 AI 分析
<a name="health-ai-analysis-console"></a>

**從環境概觀**  
當您環境的運作狀態為**警告**、**降級**或**嚴重**時，**AI 分析**按鈕會出現在環境概觀區段中。按一下此按鈕啟動您環境的 AI 分析。

**從日誌頁面**  
您也可以從導覽窗格中**的日誌**頁面存取 AI 分析。按一下 **AI 分析**按鈕，請求對環境目前狀態進行 AI 支援的分析。

## 搭配 使用 AI 分析 AWS CLI
<a name="health-ai-analysis-api"></a>

您可以透過 使用 Elastic Beanstalk API AWS CLI ，以程式設計方式請求和擷取 AI 分析。

**請求 AI 分析**  
使用 [https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RequestEnvironmentInfo.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RequestEnvironmentInfo.html)操作，並將 `InfoType` 參數設定為 `analyze`。

**Example AWS CLI - 請求 AI 分析**  

```
aws elasticbeanstalk request-environment-info \
    --environment-name my-env \
    --info-type analyze \
    --region us-east-1
```

**擷取 AI 分析**  
使用 參數`InfoType`集為 的 [https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RetrieveEnvironmentInfo.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RetrieveEnvironmentInfo.html)操作`analyze`來擷取分析結果。

**Example AWS CLI - 擷取 AI 分析**  

```
aws elasticbeanstalk retrieve-environment-info \
    --environment-name my-env \
    --info-type analyze \
    --region us-east-1
```

回應包括 AI 產生的環境目前狀態分析，以及任何已識別問題的建議解決方案。

## 搭配 EB CLI 使用 AI 分析
<a name="health-ai-analysis-ebcli"></a>

如果您使用 EB CLI，您可以使用 **eb logs**命令的 `--analyze`(`-ai`) 選項請求 AI 分析。命令會請求分析、等待分析完成，並顯示結果。

**Example EB CLI - 請求 AI 分析**  

```
$ eb logs --analyze
```

`--analyze` 選項與 `--instance`、`--zip`、 `--all`或 不相容`--log-group`。如需完整的命令參考，請參閱 [**eb logs**](eb3-logs.md)。

**注意**  
`--analyze` 選項需要 EB CLI 3.27 版或更新版本。

## 重要考量
<a name="health-ai-analysis-considerations"></a>
+ **定價** – AI 分析使用 Amazon Bedrock 來處理環境資料，而標準 Amazon Bedrock 定價適用於模型調用。如需定價的詳細資訊，請參閱 [Amazon Bedrock 定價](https://aws.amazon.com/bedrock/pricing/)。
+ **平台需求** – AI 分析僅適用於 2026 年 2 月 16 日當天或之後發行的 Amazon Linux 2 和 AL2023 型平台版本。若要使用此功能，請將您的環境更新為支援的平台版本。如需詳細資訊，請參閱[更新您 Elastic Beanstalk 環境的平台版本](using-features.platform.upgrade.md)。
+ **許可** – 在使用 AI 分析之前，請確定您的執行個體描述檔具有所需的 Amazon Bedrock 許可 (`bedrock:InvokeModel` 和 `bedrock:ListFoundationModels`) 和 Elastic Beanstalk 許可 (`elasticbeanstalk:DescribeEvents` 和 `elasticbeanstalk:DescribeEnvironmentHealth`)。
+ **資料隱私權** – 分析會將環境事件和日誌傳送至您帳戶中的 Amazon Bedrock 進行處理。如需有關 Amazon Bedrock 如何處理您的資料的資訊，請參閱 [Amazon Bedrock 安全與合規](https://aws.amazon.com/bedrock/security-compliance/)。
+ **服務配額** – AI 分析在 Amazon Bedrock 中使用 Anthropic Claude 模型，該模型具有每分鐘請求和每分鐘字符的預設配額。如果您遇到調節錯誤，可以請求提高配額。如需詳細資訊，請參閱[請求增加配額](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)。

## 支援的平台版本
<a name="health-ai-analysis-supported-platforms"></a>

2026 年 2 月 16 日當天或之後發行的 Amazon Linux 2 和 AL2023 [RELEASE_NOTES_URL](RELEASE_NOTES_URL)型平台版本支援 AI 分析。若要驗證您的平台版本，請參閱 [Elastic Beanstalk 版本備註](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/welcome.html)。