

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

# 在 Elastic Beanstalk 中監控環境
<a name="environments-health"></a>

透過 Elastic Beanstalk 運作狀態監控，您可以驗證應用程式可用性，並建立提醒，在指標超過閾值時啟用。您可以在主控台和命令列中使用 Elastic Beanstalk 運作狀態監控來追蹤環境的狀態。

**Topics**
+ [在 AWS 管理主控台中監控環境運作狀態](environment-health-console.md)
+ [使用 EB CLI 來監控環境運作狀態](health-enhanced-ebcli.md)
+ [基礎型運作狀態報告](using-features.healthstatus.md)
+ [Elastic Beanstalk 中的增強型運作狀態報告和監控](health-enhanced.md)
+ [管理警示](using-features.alarms.md)
+ [檢視 Elastic Beanstalk 環境的變更歷史記錄](using-features.changehistory.md)
+ [檢視 Elastic Beanstalk 環境的事件資料流](using-features.events.md)
+ [列出和連線到伺服器執行個體](using-features.ec2connect.md)
+ [在 Elastic Beanstalk 環境中檢視 Amazon EC2 執行個體的日誌](using-features.logging.md)
+ [檢視 Elastic Beanstalk 環境的部署日誌](environments-deployment-logs.md)

# 在 AWS 管理主控台中監控環境運作狀態
<a name="environment-health-console"></a>

您可以從 Elastic Beanstalk 主控台存取有關您應用程式的運作資訊。該主控台會顯示您環境的狀態和應用程式健全狀況概觀。在主控台的 **Environments (環境)** 頁面和每個應用程式的頁面中，清單上的環境會以顏色編碼，以指示狀態。

**在 Elastic Beanstalk 主控台中監控環境**

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

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

1. 在導覽窗格中，選擇 **Monitoring (監控)**。

監控頁面會顯示關於您環境的整體統計資料，例如 CPU 使用率和平均延遲。除了整體統計資料之外，您還可以查看監控圖表，這些圖表會隨時間顯示資源的使用量。您可以按一下任何圖表來檢視更多詳細資訊。

**注意**  
預設只會啟用基本的 CloudWatch 指標，傳回 5 分鐘期間的資料。透過編輯環境的組態設定，您可以啟用更精細的 1 分鐘 CloudWatch 指標。

## 監控圖表
<a name="environment-health-console-graphs"></a>

**監控**頁面會顯示您環境的運作狀態相關指標概觀。這包括 Elastic Load Balancing 和 Amazon EC2 提供的預設指標集，以及顯示環境運作狀態如何隨時間變化的圖表。

圖表上方的長條提供不同的時間間隔，以供您選取。例如，選取 **1w** 可顯示過去一週的資訊。或者，選取 **3h** 可顯示過去三小時的資訊。

如需更多種時間間隔選項，請選擇**自訂**。此處共有兩個範圍選項：*絕對*或*相對*。**絕對**選項可讓您指定特定的日期範圍，例如 *2023 年 1 月 1 日至 2023 年 6 月 30 日*。**相對**選項可選取具有特定時間單位的整數：*分鐘*、*小時*、*日*、*週*或*月*。範例包括 *10 小時*、*10 日*和 *10 個月*。

 

![\[Elastic Beanstalk 主控台環境監控頁面上的環境運作狀態監控區段\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/environment-monitoring-graphs.png)


## 自訂監控主控台
<a name="environment-health-console-customize"></a>

若要建立和檢視自訂指標，就必須使用 Amazon CloudWatch。透過 CloudWatch，您可建立自訂儀表板，於單一檢視中監控資源。選取**新增至儀表板**，即可從**監控**頁面瀏覽至 Amazon CloudWatch 主控台。Amazon CloudWatch 會提供您建立新儀表板或選取現有儀表板的選項。如需詳細資訊，請參閱《*Amazon CloudWatch 使用者指南*》中的[使用 Amazon CloudWatch 儀表板](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

![\[Elastic Beanstalk 主控台環境監控頁面上的環境運作狀態監控區段\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/environment-monitoring-graphs.png)


[Elastic Load Balancing](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/elb-metricscollected.html) 和 [Amazon EC2](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/ec2-metricscollected.html) 指標可以在所有環境中啟用。

有了[增強型運作狀態](health-enhanced.md)功能，EnvironmentHealth 指標會予以啟用，並自動將圖表加入監控主控台。增強型運作狀態功能也會將[運作狀態頁面](health-enhanced-console.md#health-enhanced-console-healthpage)新增到管理主控台。如需可用的增強型運作狀態指標清單，請參閱 [為環境發佈 Amazon CloudWatch 自訂指標](health-enhanced-cloudwatch.md)。

# 使用 EB CLI 來監控環境運作狀態
<a name="health-enhanced-ebcli"></a>

[Elastic Beanstalk 命令列界面](eb-cli3.md) (EB CLI) 是一種用於管理 AWS Elastic Beanstalk 環境的命令列工具。您亦可使用 EB CLI 來即時監控您環境的運作狀態，且精細程度較 Elastic Beanstalk 主控台內現有的監控高。

[安裝](eb-cli3.md#eb-cli3-install)和[設定](eb-cli3-configuration.md) EB CLI 之後，您可以啟動新的環境，並使用 **eb create**命令將程式碼部署到其中。如果您已在 Elastic Beanstalk 主控台中建立環境，您可以在專案資料夾中執行 **eb init**，並依提示操作 (專案資料夾可以是空白的)，將 EB CLI 連接至環境。

**重要**  
請執行帶有 `pip install` 選項的 `--upgrade`，確認您正使用 EB CLI 的最新版本：  

```
$ sudo pip install --upgrade awsebcli
```
如需 EB CLI 的完整安裝說明，請參閱 [使用設定指令碼安裝 EB CLI （建議）](eb-cli3.md#eb-cli3-install)。

欲使用 EB CLI 來監控您環境的運作狀態，首先必須執行 **eb init** 並依提示操作，藉此設定本機專案資料夾。如需完整說明，請參閱 [設定 EB CLI](eb-cli3-configuration.md)。

若您已有在 Elastic Beanstalk 中執行的環境，且希望使用 EB CLI 來監控其運作狀態，請遵循這些步驟，將其連接至現有環境。

**欲將 EB CLI 連接至現有環境**

1. 開啟命令列終端機並瀏覽至您的使用者資料夾。

1. 為您的環境建立並開啟新的資料夾。

1. 執行 **eb init** 命令，然後選擇欲監控其運作狀態的應用程式和環境。若您只有一個環境執行所選擇的應用程式，您不需要選擇該環境，因為 EB CLI 會自動選取，如以下範例所示。

   ```
   ~/project$ eb init
   Select an application to use
   1) elastic-beanstalk-example
   2) [ Create new Application ]
   (default is 2): 1
   Select the default environment.
   You can change this later by typing "eb use [environment_name]".
   1) elasticBeanstalkEx2-env
   2) elasticBeanstalkExa-env
   (default is 1): 1
   ```

**欲使用 EB CLI 來監控運作狀態**

1. 開啟命令列並瀏覽至您的專案資料夾。

1. 執行 **eb health** 命令來顯示環境中執行個體的運作狀態。在此範例中，有五個執行個體在 Linux 環境中執行。

   ```
   ~/project $ eb health
    elasticBeanstalkExa-env                                  Ok                       2015-07-08 23:13:20
   WebServer                                                                              Ruby 2.1 (Puma)
     total      ok    warning  degraded  severe    info   pending  unknown
       5        5        0        0        0        0        0        0
   
     instance-id   status     cause                                                                                                health
       Overall     Ok
     i-d581497d    Ok
     i-d481497c    Ok
     i-136e00c0    Ok
     i-126e00c1    Ok
     i-8b2cf575    Ok
   
     instance-id   r/sec    %2xx   %3xx   %4xx   %5xx      p99      p90      p75     p50     p10                                 requests
       Overall     671.8   100.0    0.0    0.0    0.0    0.003    0.002    0.001   0.001   0.000
     i-d581497d    143.0    1430      0      0      0    0.003    0.002    0.001   0.001   0.000
     i-d481497c    128.8    1288      0      0      0    0.003    0.002    0.001   0.001   0.000
     i-136e00c0    125.4    1254      0      0      0    0.004    0.002    0.001   0.001   0.000
     i-126e00c1    133.4    1334      0      0      0    0.003    0.002    0.001   0.001   0.000
     i-8b2cf575    141.2    1412      0      0      0    0.003    0.002    0.001   0.001   0.000
   
     instance-id   type       az   running     load 1  load 5      user%  nice%  system%  idle%   iowait%                             cpu
     i-d581497d    t2.micro   1a   12 mins        0.0    0.04        6.2    0.0      1.0   92.5       0.1
     i-d481497c    t2.micro   1a   12 mins       0.01    0.09        5.9    0.0      1.6   92.4       0.1
     i-136e00c0    t2.micro   1b   12 mins       0.15    0.07        5.5    0.0      0.9   93.2       0.0
     i-126e00c1    t2.micro   1b   12 mins       0.17    0.14        5.7    0.0      1.4   92.7       0.1
     i-8b2cf575    t2.micro   1c   1 hour        0.19    0.08        6.5    0.0      1.2   92.1       0.1
     
     instance-id   status     id   version              ago                                                                   deployments
     i-d581497d    Deployed   1    Sample Application   12 mins
     i-d481497c    Deployed   1    Sample Application   12 mins
     i-136e00c0    Deployed   1    Sample Application   12 mins
     i-126e00c1    Deployed   1    Sample Application   12 mins
     i-8b2cf575    Deployed   1    Sample Application   1 hour
   ```

   在此範例中，有一個單一執行個體在 Windows 環境中執行。

   ```
   ~/project $ eb health
    WindowsSampleApp-env                                 Ok                                 2018-05-22 17:33:19
   WebServer                                                IIS 10.0 running on 64bit Windows Server 2016/2.2.0
     total      ok    warning  degraded  severe    info   pending  unknown
       1        1        0        0        0        0        0        0
   
     instance-id           status     cause                                                                                        health
       Overall             Ok
     i-065716fba0e08a351   Ok
   
     instance-id           r/sec    %2xx   %3xx   %4xx   %5xx      p99      p90      p75     p50     p10                         requests
       Overall              13.7   100.0    0.0    0.0    0.0    1.403    0.970    0.710   0.413   0.079
     i-065716fba0e08a351     2.4   100.0    0.0    0.0    0.0    1.102*   0.865    0.601   0.413   0.091
   
     instance-id           type       az   running     % user time    % privileged time  % idle time                                  cpu
     i-065716fba0e08a351   t2.large   1b   4 hours             0.2                  0.1         99.7
   
     instance-id           status     id   version              ago                                                           deployments
     i-065716fba0e08a351   Deployed   2    Sample Application   4 hours
   ```

## 讀取輸出
<a name="health-enhanced-ebcli-output"></a>

輸出會在畫面頂端顯示環境名稱、環境整體運作狀態及目前的日期。

```
elasticBeanstalkExa-env                                  Ok                       2015-07-08 23:13:20
```

之後的三行會顯示環境類型 (此案例中是 "WebServer")、組態 (搭配 Puma 的 Ruby 2.1)，以及七種狀態各自的執行個體數量分析。

```
WebServer                                                                              Ruby 2.1 (Puma)
  total      ok    warning  degraded  severe    info   pending  unknown
    5        5        0        0        0        0        0        0
```

輸出的剩餘部分區分為四個區段。第一部分會顯示環境整體的*狀態*和狀態*成因*，之後則是每個執行個體的狀態和成因。以下範例顯示環境中兩個狀態為 `Info` 的執行個體，以及指出已啟動部署的原因。

```
  instance-id    status     cause                                                                                                health
    Overall      Ok
  i-d581497d     Info       Performing application deployment (running for 3 seconds)
  i-d481497c     Info       Performing application deployment (running for 3 seconds)
  i-136e00c0     Ok
  i-126e00c1     Ok
  i-8b2cf575     Ok
```

如需運作狀態和顏色的資訊，請參閱[運作狀態顏色和狀態](health-enhanced-status.md)。

**requests (請求)** 區段會顯示每一執行個體的 Web 伺服器日誌資訊。在此範例中，各個執行個體皆正常處理請求，未出現錯誤。

```
  instance-id    r/sec    %2xx   %3xx   %4xx   %5xx      p99      p90      p75     p50     p10                                 requests
    Overall      13.7    100.0    0.0    0.0    0.0    1.403    0.970    0.710   0.413   0.079
  i-d581497d     2.4     100.0    0.0    0.0    0.0    1.102*   0.865    0.601   0.413   0.091
  i-d481497c     2.7     100.0    0.0    0.0    0.0    0.842*   0.788    0.480   0.305   0.062
  i-136e00c0     4.1     100.0    0.0    0.0    0.0    1.520*   1.088    0.883   0.524   0.104
  i-126e00c1     2.2     100.0    0.0    0.0    0.0    1.334*   0.791    0.760   0.344   0.197
  i-8b2cf575     2.3     100.0    0.0    0.0    0.0    1.162*   0.867    0.698   0.477   0.076
```

**cpu** 區段會顯示每個執行個體的作業系統指標。輸出會因作業系統而不同。此為 Linux 環境的輸出。

```
  instance-id   type       az   running     load 1  load 5      user%  nice%  system%  idle%   iowait%                             cpu
  i-d581497d    t2.micro   1a   12 mins        0.0    0.03        0.2    0.0      0.0   99.7       0.1
  i-d481497c    t2.micro   1a   12 mins        0.0    0.03        0.3    0.0      0.0   99.7       0.0
  i-136e00c0    t2.micro   1b   12 mins        0.0    0.04        0.1    0.0      0.0   99.9       0.0
  i-126e00c1    t2.micro   1b   12 mins       0.01    0.04        0.2    0.0      0.0   99.7       0.1
  i-8b2cf575    t2.micro   1c   1 hour         0.0    0.01        0.2    0.0      0.1   99.6       0.1
```

此為 Windows 環境的輸出。

```
  instance-id           type       az   running     % user time    % privileged time  % idle time
  i-065716fba0e08a351   t2.large   1b   4 hours             0.2                  0.0         99.8
```

如需所顯示的伺服器和作業系統指標資訊，請參閱[執行個體指標](health-enhanced-metrics.md)。

最後的 **deployments (部署)** 區段，則顯示每一執行個體的部署狀態。若滾動部署失敗，您可以使用所顯示的部署 ID、狀態和版本標籤，辨識環境中執行錯誤版本的執行個體。

```
  instance-id   status     id   version              ago                                                                   deployments
  i-d581497d    Deployed   1    Sample Application   12 mins
  i-d481497c    Deployed   1    Sample Application   12 mins
  i-136e00c0    Deployed   1    Sample Application   12 mins
  i-126e00c1    Deployed   1    Sample Application   12 mins
  i-8b2cf575    Deployed   1    Sample Application   1 hour
```

## 互動式運作狀態檢視畫面
<a name="health-enhanced-ebcli-interactive"></a>

**eb health** 命令會顯示環境運作狀態的快照。若要每 10 秒重新整理所顯示的資訊，請使用 `--refresh` 選項。

```
$ eb health --refresh
 elasticBeanstalkExa-env                             Ok                            2015-07-09 22:10:04 (1 secs)
WebServer                                                                                        Ruby 2.1 (Puma)
  total      ok    warning  degraded  severe    info   pending  unknown
    5        5        0        0        0        0        0        0

  instance-id   status     cause                                                                                                health
    Overall     Ok
  i-bb65c145    Ok         Application deployment completed 35 seconds ago and took 26 seconds
  i-ba65c144    Ok         Application deployment completed 17 seconds ago and took 25 seconds
  i-f6a2d525    Ok         Application deployment completed 53 seconds ago and took 26 seconds
  i-e8a2d53b    Ok         Application deployment completed 32 seconds ago and took 31 seconds
  i-e81cca40    Ok

  instance-id   r/sec    %2xx   %3xx   %4xx   %5xx      p99      p90      p75     p50     p10                                 requests
    Overall     671.8   100.0    0.0    0.0    0.0    0.003    0.002    0.001   0.001   0.000
  i-bb65c145    143.0    1430      0      0      0    0.003    0.002    0.001   0.001   0.000
  i-ba65c144    128.8    1288      0      0      0    0.003    0.002    0.001   0.001   0.000
  i-f6a2d525    125.4    1254      0      0      0    0.004    0.002    0.001   0.001   0.000
  i-e8a2d53b    133.4    1334      0      0      0    0.003    0.002    0.001   0.001   0.000
  i-e81cca40    141.2    1412      0      0      0    0.003    0.002    0.001   0.001   0.000

  instance-id   type       az   running     load 1  load 5      user%  nice%  system%  idle%   iowait%                             cpu
  i-bb65c145    t2.micro   1a   12 mins        0.0    0.03        0.2    0.0      0.0   99.7       0.1
  i-ba65c144    t2.micro   1a   12 mins        0.0    0.03        0.3    0.0      0.0   99.7       0.0
  i-f6a2d525    t2.micro   1b   12 mins        0.0    0.04        0.1    0.0      0.0   99.9       0.0
  i-e8a2d53b    t2.micro   1b   12 mins       0.01    0.04        0.2    0.0      0.0   99.7       0.1
  i-e81cca40    t2.micro   1c   1 hour         0.0    0.01        0.2    0.0      0.1   99.6       0.1

  instance-id   status     id   version              ago                                                                   deployments
  i-bb65c145    Deployed   1    Sample Application   12 mins
  i-ba65c144    Deployed   1    Sample Application   12 mins
  i-f6a2d525    Deployed   1    Sample Application   12 mins
  i-e8a2d53b    Deployed   1    Sample Application   12 mins
  i-e81cca40    Deployed   1    Sample Application   1 hour

 (Commands: Help,Quit, ▼ ▲ ◄ ►)
```

此範例顯示最近自一個執行個體擴展至五個的環境。擴展操作成功，且所有執行個體現正通過運作狀態檢查，並準備好接受請求。在互動式模式中，運作狀態每 10 秒更新。在右上角，計時器會倒數下次更新的時間。

在左下角，報告會顯示選項清單。若要結束互動式模式，請按 **Q**。 若要捲動，請按箭頭鍵。欲查看其他命令清單，請按 **H**。

## 互動式運作狀態檢視畫面選項
<a name="health-enhanced-ebcli-options"></a>

以互動方式檢視環境運作狀態時，您可以使用鍵盤按鍵來調整檢視，並告知 Elastic Beanstalk 取代或重新啟動個別執行個體。若要在以互動模式檢視運作狀態報告時查看可用命令的清單，請按 **H**。

```
  up,down,home,end   Scroll vertically
  left,right         Scroll horizontally
  F                  Freeze/unfreeze data
  X                  Replace instance
  B                  Reboot instance
  <,>                Move sort column left/right
  -,+                Sort order descending/ascending
  P                  Save health snapshot data file
  Z                  Toggle color/mono mode
  Q                  Quit this program

  Views
  1                  All tables/split view
  2                  Status Table
  3                  Request Summary Table
  4                  CPU%/Load Table
  H                  This help menu


(press Q or ESC to return)
```

# 基礎型運作狀態報告
<a name="using-features.healthstatus"></a>

本主題說明 Elastic Beanstalk 基本運作狀態所提供的功能。

AWS Elastic Beanstalk 會使用來自多個來源的資訊來判斷您的環境是否可用，並處理來自網際網路的請求。環境的運作狀態是以四種顏色的其中一種表示，並顯示在 Elastic Beanstalk 主控台的[環境概觀](environments-console.md)頁面上。它也可以從 [DescribeEnvironments](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironments.html) API 取得，並透過使用 [EB CLI](eb-cli3.md) 叫用 **eb status**。

 基礎型運作狀態報告系統會根據 Elastic Load Balancing (針對負載平衡環境) 或 Amazon Elastic Compute Cloud (針對單一執行個體環境) 執行的運作狀態檢查，提供 Elastic Beanstalk 環境中執行個體的運作狀態資訊。

除了檢查您的 EC2 執行個體的運作狀態，Elastic Beanstalk 亦會監控環境中的其他資源，並回報缺少或設定不正確的資源，避免造成使用者無法使用您的環境。

您環境中資源收集的指標，每五分鐘會向 Amazon CloudWatch 發佈。其中包含 EC2 的作業系統指標或 Elastic Load Balancing 的請求指標。您可於環境主控台的[監控頁面](environment-health-console.md)，根據這些 CloudWatch 指標檢視圖表。以基礎型運作狀態而言，這些指標不會用來判定環境的運作狀態。

**Topics**
+ [運作狀態顏色](#using-features.healthstatus.colors)
+ [Elastic Load Balancing 運作狀態檢查](#using-features.healthstatus.understanding)
+ [單一執行個體和工作者層環境運作狀態檢查](#monitoring-basic-healthcheck-singleinstance)
+ [其他檢查](#monitoring-basic-additionalchecks)
+ [Amazon CloudWatch 指標](#monitoring-basic-cloudwatch)

## 運作狀態顏色
<a name="using-features.healthstatus.colors"></a>

Elastic Beanstalk 會根據於 Web 伺服器環境中執行的應用程式回應運作狀態檢查的情形，回報該環境的運作狀態。Elastic Beanstalk 使用四種顏色來描述狀態，如下表所示：


****  

| 顏色 | Description | 
| --- | --- | 
|  灰色  | 您的環境正在更新。 | 
|  Green  |  您的環境已通過最近的運作狀態檢查。您的環境至少有一個執行個體可用，且其正在接收請求。  | 
|  Yellow  |  您的環境未通過一項或多項運作狀態檢查。向您環境發送的部分請求會失敗。  | 
|  紅色  |  您的環境未通過三項或更多運作狀態檢查，或是一個資源變成不可使用。請求會持續失敗。  | 

這些描述僅適用使用基礎型運作狀態報告的環境。如需增強型運作狀態的詳細資訊，請參閱[運作狀態顏色和狀態](health-enhanced-status.md)。

## Elastic Load Balancing 運作狀態檢查
<a name="using-features.healthstatus.understanding"></a>

在負載平衡環境中，Elastic Load Balancing 每 10 秒會傳送請求至環境中的各個執行個體，確認其運作狀態良好。負載平衡器預設設定為開啟連接埠 80 上的 TCP 連線。若執行個體確認連線，將視為運作狀態良好。

您可在應用程式指定現有資源，藉此覆寫這項設定。若您指定路徑 (如 `/health`)，則運作狀態檢查 URL 會設定為 `HTTP:80/health`。運作狀態檢查 URL 應一律設在您應用程式提供服務的路徑。若此 URL 設定在應用程式前方之 Web 伺服器處理或快取的靜態頁面，運作狀態檢查將不會顯示應用程式伺服器或 Web 容器的問題。如需修改運作狀態檢查 URL 的說明，請參閱 [運作狀態檢查](environments-cfg-clb.md#using-features.managing.elb.healthchecks)。

若已設定運作狀態檢查 URL，Elastic Load Balancing 預期其傳送的 GET 請求回傳 `200 OK` 回應。若應用程式在 5 秒內未回應，或回應其他 HTTP 狀態碼，則無法通過運作狀態檢查。連續 5 次運作狀態檢查失敗，Elastic Load Balancing 會停止該執行個體的服務。

如需有關 Elastic Load Balancing 運作狀態檢查的詳細資訊，請參閱《*Elastic Load Balancing 使用者指南*》中的[運作狀態檢查](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/TerminologyandKeyConcepts.html#healthcheck)。

**注意**  
設定運作狀態檢查 URL 不會變更環境的 Auto Scaling 群組的運作狀態檢查行為。運作狀態不良的執行個體會從負載平衡器移除，但 Amazon EC2 Auto Scaling 不會自動替換，除非您將 Amazon EC2 Auto Scaling 設定為使用 Elastic Load Balancing 運作狀態檢查，做為替換執行個體的根據。若要設定 Amazon EC2 Auto Scaling 以取代 Elastic Load Balancing 運作狀態檢查失敗的執行個體，請參閱 [Elastic Beanstalk 環境的 Auto Scaling 運作狀態檢查設定](environmentconfig-autoscaling-healthchecktype.md)。

## 單一執行個體和工作者層環境運作狀態檢查
<a name="monitoring-basic-healthcheck-singleinstance"></a>

在單一執行個體或工作者層環境中，Elastic Beanstalk 會監控其 Amazon EC2 執行個體的狀態，藉此判定執行個體的運作狀態。Elastic Load Balancing 運作狀態設定 (包括 HTTP 運作狀態檢查 URL) 無法用於這些環境類型。

如需 Amazon EC2 執行個體狀態檢查的詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[使用狀態檢查監控執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-system-instance-status-check.html)。

## 其他檢查
<a name="monitoring-basic-additionalchecks"></a>

除了 Elastic Load Balancing 運作狀態檢查，Elastic Beanstalk 會監控您環境中的資源，若其部署失敗、設定不正確或變為不可用，其運作狀態將變更為紅色。這些檢查會確認：
+ 環境的 Auto Scaling 群組為可用，且具備至少一個執行個體。
+ 環境的安全群組為可用，且設定為允許連接埠 80 上的傳入流量。
+ 存在環境 CNAME，且其指向正確的負載平衡器。
+ 在工作者環境中，Amazon Simple Queue Service (Amazon SQS) 佇列至少每三分鐘輪詢一次。

## Amazon CloudWatch 指標
<a name="monitoring-basic-cloudwatch"></a>

若使用基礎型運作狀態報告，Elastic Beanstalk 服務不會向 Amazon CloudWatch 發佈指標。環境主控台[監控頁面](environment-health-console.md)上用於製作圖表的 CloudWatch 指標，會由您環境中的資源發佈。

例如，EC2 會針對您環境 Auto Scaling 群組中的執行個體，發佈下列指標：

 

`CPUUtilization`  
目前使用中的運算單位百分比。

`DiskReadBytes``DiskReadOps``DiskWriteBytes``DiskWriteOps`  
讀取及寫入的位元組數，以及讀取及寫入操作的數量。

`NetworkIn``NetworkOut`  
傳送及接收的位元組數。

Elastic Load Balancing 會針對您環境的負載平衡器發佈下列指標：

`BackendConnectionErrors`  
負載平衡器和環境執行個體間連線失敗的數量。

`HTTPCode_Backend_2XX``HTTPCode_Backend_4XX`  
您環境執行個體產生成功 (2XX) 及用戶端錯誤 (4XX) 回應代碼的數量。

`Latency`  
負載平衡器將請求轉送至執行個體到接收回應的秒數。

`RequestCount`  
完成的請求數。

此並非完整清單。如需針對這些資源回傳的指標完整清單，請參閱 Amazon CloudWatch 開發人員指南中的下列主題：

 


**指標**  

| 命名空間 | 主題 | 
| --- | --- | 
| AWS::ElasticLoadBalancing::LoadBalancer | [Elastic Load Balancing 指標與資源](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/elb-metricscollected.html) | 
| AWS::AutoScaling::AutoScalingGroup | [Amazon Elastic Compute Cloud 指標與資源](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/ec2-metricscollected.html) | 
| AWS::SQS::Queue | [Amazon SQS 指標與資源](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/sqs-metricscollected.html) | 
| AWS::RDS::DBInstance | [Amazon RDS 維度與指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/rds-metricscollected.html) | 

### 工作者環境運作狀態指標
<a name="w2aac43c11c23c18"></a>

下述僅針對工作者環境而言：SQS 協助程式會將環境運作狀態的自訂指標發佈至 CloudWatch，其中值 1 為綠色。您可使用 `ElasticBeanstalk/SQSD` 命名空間，在您的帳戶檢閱 CloudWatch 運作狀態指標資料。指標維度為 `EnvironmentName`，而指標名稱為 `Health`。所有執行個體都將其指標發佈至相同的命名空間。

欲啟用協助程式來發佈指標，環境的執行個體描述檔必須具備呼叫 `cloudwatch:PutMetricData` 的許可。此許可會納入預設的執行個體描述檔。如需詳細資訊，請參閱[管理 Elastic Beanstalk 執行個體描述檔](iam-instanceprofile.md)。

# 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)。

# 管理警示
<a name="using-features.alarms"></a>

本主題會逐步解說為您正在監控的指標建立警示的步驟。它還提供檢視現有警示和檢查其狀態的說明。

您可以針對您使用 Elastic Beanstalk 主控台監控的指標建立警示。警示可協助您監控 AWS Elastic Beanstalk 環境的變更，以便在問題發生之前輕鬆識別和緩解問題。例如，在環境 CPU 使用率超過特定閾值時，您可以設定警示通知您，確保潛在問題發生前就收到通知。如需詳細資訊，請參閱[搭配 Amazon CloudWatch 使用 Elastic Beanstalk](AWSHowTo.cloudwatch.md)。

**注意**  
Elastic Beanstalk 使用 CloudWatch 進行監控和警示，這表示針對您使用的任何警示，CloudWatch 成本會套用至 AWS 您的帳戶。

如需關於監控特定指標的詳細資訊，請參閱 [基礎型運作狀態報告](using-features.healthstatus.md)。

**欲檢查警示狀態**

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

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

1. 在導覽窗格中，選擇**警示**。

   此頁面會顯示現有警示清單。如果任何警示處於警示狀態，則會以警告圖示 () 標記警示![\[Image of the warning icon.\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/warning.png)。

1. 若要篩選警示，請選擇下拉式選單，然後選取篩選器。

1. 若要編輯或刪除警示，請分別選擇編輯圖示 (![\[Image of a cog, which serves as the edit icon.\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/cog.png)) 或刪除圖示 (![\[Image of an x, which servers as the delete icon.\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/x.png))。

**欲建立警示**

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

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

1. 在導覽窗格中，選擇 **Monitoring (監控)**。

1. 找到您要為其建立警示的指標，然後選擇警示圖示 (![\[Image of a bell, which serves as the alarm icon.\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/bell.png))。此時會顯示 **Add alarm (新增警示)** 頁面。

1. 輸入警示的詳細資訊：
   + **Name (名稱)**：此警示的名稱。
   + **Description (描述)** (選用)：警示的簡短描述。
   + **Period (期間)**：兩次讀數間的時間間隔。
   + **Threshold (閾值)**：描述行為和指標必須超過的值以觸發警示。
   + **Change state after (變更狀態時間)**：超過閾值後觸發警示狀態變更的所需時間。
   + **Notify (通知)**：警示變更狀態時所通知的 Amazon SNS 主題。
   + **變更為下列狀態時進行通知**：
     + **OK (正常)**：指標位於定義閾值內。
     + **Alarm (警示)**：指標超過定義閾值。
     + **Insufficient data (資料不足)**：警示剛開始、無法使用指標，或資料不足讓指標判斷警示狀態。

1. 選擇**新增**。環境更新時，環境狀態會變更為灰色。您可以在導覽窗格中選擇 **Alarms (警報)** 來檢視您所建立的警示。

# 檢視 Elastic Beanstalk 環境的變更歷史記錄
<a name="using-features.changehistory"></a>

本主題說明如何使用 Elastic Beanstalk 主控台檢視對 Elastic Beanstalk 環境所做的組態變更歷史記錄。

Elastic Beanstalk 會從 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 中記錄的事件擷取您的變更歷史記錄，並將它們顯示在您可以輕鬆瀏覽和篩選的清單中。

Change History (變更歷史記錄) 面板會針對您的環境所做的變更顯示下列資訊：
+ 進行變更的日期和時間
+ 負責所做變更的 IAM 使用者
+ 用來進行變更的來源工具 (可能是 Elastic Beanstalk 命令列介面 (EB CLI) 或主控台)
+ 設定的組態參數和新值

任何屬於變更一部分的敏感資料，例如受變更影響的資料庫使用者名稱，都不會顯示在面板中。

**檢視變更歷史記錄**

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

1. 在導覽窗格中，請選擇 **Change history** (變更歷史記錄)。

   Change history (變更歷史記錄) 頁面會顯示對 Elastic Beanstalk 環境所做的組態變更清單。

請記下下列有關導覽此頁面資訊的重點：
+ 您可以選擇 **<** (上一頁) 或 **>** (下一頁)，或選擇特定頁碼，來瀏覽清單。
+ 在 **Configuration changes** (組態變更) 欄下，請選取箭頭圖示，在 **Changes made** (所做變更) 標題下的展開和收合變更清單之間切換。
+ 使用搜尋列來篩選變更歷史記錄清單中的結果。您可以輸入任何字串，以縮小顯示的變更清單。

請注意下列有關篩選顯示結果的事項：
+  搜尋篩選不區分大小寫。
+  您可以根據 **Configuration changes** (組態變更) 欄下的資訊篩選顯示的變更，即使由於在 **Changes made** (所做變更) 內被收合而無法顯示。
+  您只能篩選顯示的結果。不過，即使您選擇移至另一個頁面以顯示更多結果，篩選器仍會保持不變。篩選的結果還會附加至下一頁的結果集中。

 下列範例示範如何篩選之前畫面上顯示的資料：
+  在搜尋方塊中輸入 **GettingStartedApp-env** 縮小結果範圍，僅包含對名稱為 *GettingStartedApp-env* 的環境所做的變更。
+  在搜尋方塊中輸入 **example3** 縮小結果範圍，僅包含由其使用者名稱包含字串 *example3* 的 IAM 使用者所做的變更。
+  在搜尋方塊中輸入 **2020-10** 縮小結果範圍，僅包含 2020 年 10 月所做的變更。將搜尋值變更為 **2020-10-16**，進一步篩選顯示的結果，僅包含 2020 年 10 月 16 日當天所做的變更。
+  在搜尋方塊中輸入 **proxy:staticfiles** 縮小結果範圍，僅包含對名稱為 *aws:elasticbeanstalk:environment:proxy:staticfiles* 的命名空間所做的變更。顯示的列即篩選的結果。即使在 **Changes made** (所做變更) 下摺疊的結果亦是如此。

# 檢視 Elastic Beanstalk 環境的事件資料流
<a name="using-features.events"></a>

本主題說明如何存取與您的應用程式相關聯的事件和通知。

## 使用 Elastic Beanstalk 主控台檢視事件
<a name="using-features.events.console"></a>

**使用 Elastic Beanstalk 主控台檢視事件**

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

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

1. 在導覽窗格中，選擇 **Events (事件)**。

   事件頁面會顯示已為環境記錄的所有事件清單。您可以選擇 **<** (上一頁)、**>** (下一頁) 或頁碼來翻閱清單。您可使用 **Severity (嚴重性)** 下拉式清單來篩選要顯示的事件類型。

## 使用命令列工具檢視事件
<a name="using-features.events.command-line"></a>

[EB CLI](eb-cli3.md) 及 [AWS CLI](https://aws.amazon.com/cli/) 均提供擷取事件的命令。若您正使用 EB CLI 管理環境，請使用 [**eb events**](eb3-events.md) 來列印事件清單。本命令也具備 `--follow` 選項，可持續顯示新事件，直到您按 **Ctrl\$1C** 來停止輸出。

若要使用 提取事件 AWS CLI，請使用 `describe-events`命令，並依名稱或 ID 指定環境：

 

```
$ aws elasticbeanstalk describe-events --environment-id e-gbjzqccra3
{
    "Events": [
        {
            "ApplicationName": "elastic-beanstalk-example",
            "EnvironmentName": "elasticBeanstalkExa-env",
            "Severity": "INFO",
            "RequestId": "a4c7bfd6-2043-11e5-91e2-9114455c358a",
            "Message": "Environment update completed successfully.",
            "EventDate": "2015-07-01T22:52:12.639Z"
        },
...
```

如需命令列工具的詳細資訊，請參閱 [設定 EB 命令列界面 (EB CLI) 以管理 Elastic Beanstalk](eb-cli3.md)。

# 列出和連線到伺服器執行個體
<a name="using-features.ec2connect"></a>

本主題說明如何檢視執行 Elastic Beanstalk 應用程式環境的 Amazon EC2 執行個體清單，以及如何與其連線。

您可以透過 Elastic Beanstalk 主控台檢視執行 AWS Elastic Beanstalk 應用程式環境的 Amazon EC2 執行個體清單。您可使用 SSH 用戶端連接至執行個體。您可以使用遠端桌面，連接至執行 Windows 的執行個體。

**重要**  
存取 Elastic Beanstalk 佈建的 Amazon EC2 執行個體之前，您必須建立 Amazon EC2 金鑰對並設定 Elastic Beanstalk 佈建的 Amazon EC2 執行個體，以使用 Amazon EC2 金鑰對。您可以使用 [AWS 管理主控台](https://console.aws.amazon.com/)，設定您的 Amazon EC2 金鑰對。如需建立 Amazon EC2 金鑰對的詳細資訊，請參閱《Amazon EC2 入門指南》**。如需有關如何將您的 Amazon EC2 執行個體設定為使用 Amazon EC2 金鑰對，請參閱 [EC2 key pair (EC2 金鑰對)](using-features.managing.security.md#using-features.managing.security.keypair)。  
依預設，Elastic Beanstalk 不會啟用遠端連線至 Windows 容器內的 EC2 執行個體，除非是舊型 Windows 容器。(Elastic Beanstalk 將舊型 Windows 容器內的 EC2 執行個體設定為使用連接埠 3389 以供進行 RDP 連線。) 您可以新增規則至安全群組，授權執行個體的傳入流量，藉此啟用遠端連線至您執行 Windows 的 EC2 執行個體。我們強烈建議您結束遠端連線時，將規則移除。您可以在下次需要從遠端登入時，再次新增規則。如需詳細資訊，請參閱[適用於 Microsoft Windows 的 Amazon Elastic Compute Cloud 使用者指南](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/authorizing-access-to-an-instance.html#authorizing-access-to-an-instance-rdp)中的[將 RDP 流量傳入規則新增至 Windows 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2Win_GetStarted.html#connecting_to_windows_instance)以及*連接至您的 Windows 執行個體*。

**欲檢視並連接至環境的 Amazon EC2 執行個體**

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

1. 在主控台的導覽窗格，選擇 **Load Balancers (負載平衡器)**。

1.  Elastic Beanstalk 建立的負載平衡器名稱會出現 **awseb**。找到您環境的負載平衡器，然後按一下。

1.  選擇主控台底部窗格的 **Instances (執行個體)** 索引標籤。

    將顯示您 Elastic Beanstalk 環境的負載平衡器所使用的執行個體清單。請記下您欲連接的執行個體 ID。

1. 在 Amazon EC2 主控台導覽窗格中，選擇 **Instances (執行個體)**，在清單中尋找您的執行個體 ID。

1. 在執行於您環境負載平衡器的 Amazon EC2 執行個體 ID 按一下滑鼠右鍵，然後選擇內容選單的 **Connect (連接)**。

1.  請於 **Description (描述)** 索引標籤記下該執行個體的公有 DNS 地址。

1.  使用您選擇的 SSH 用戶端連接至執行個體，然後輸入 **ssh -i .ec2/mykeypair.pem ec2-user@&lt;public-DNS-of-the-instance&gt;**。

如需連線至 Amazon EC2 Linux 執行個體的詳細資訊，請參閱《[Amazon EC2 使用者指南》中的 Amazon EC2 Linux 執行個體入門](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html)。 *Amazon EC2 *

如果您的 Elastic Beanstalk 環境在 [Windows Server 平台上使用 .NET](create_deploy_NET.container.console.md)，請參閱《[Amazon EC2 使用者指南》中的 Amazon EC2 Windows 執行個體入門](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html)。 *Amazon EC2 *

# 在 Elastic Beanstalk 環境中檢視 Amazon EC2 執行個體的日誌
<a name="using-features.logging"></a>

本主題說明 Elastic Beanstalk 提供的執行個體日誌類型。它也提供擷取和管理它們的詳細說明。

Elastic Beanstalk 環境的 Amazon EC2 執行個體會產生日誌，您可加以檢視針對應用程式或組態檔案進行問題疑難排解。由 Web 伺服器、應用程式伺服器、Elastic Beanstalk 平台指令碼和 建立的日誌 CloudFormation 會儲存在本機的個別執行個體上。您可以使用[環境管理主控台](environments-console.md)或 EB CLI 輕鬆擷取他們。您也可以將環境設定為即時將日誌串流至 Amazon CloudWatch Logs。

結尾日誌是最常使用日誌檔案 (Elastic Beanstalk 操作日誌及來自 web 伺服器或應用程式伺服器的日誌) 的最後 100 行。當您透過環境主控台或 **eb logs** 請求結尾日誌時，環境中的一個執行個體會將最近的日誌項目串連為單一文字檔案，並上傳至 Amazon S3。

套件日誌為更多日誌檔案的完整日誌，包括來自 yum 和 cron 的日誌以及數個來自 CloudFormation的日誌。當您請求套件日誌時，環境中的執行個體會將完整日誌檔案封裝為 ZIP 封存檔，並上傳至 Amazon S3。

若要將輪換日誌上傳至 Amazon S3，環境中的執行個體必須具備[執行個體描述檔](concepts-roles-instance.md)，其中包含寫入至 Elastic Beanstalk Amazon S3 儲存貯體的許可。當您在 Elastic Beanstalk 主控台首次啟動環境時，Elastic Beanstalk 提示您建立的執行個體描述檔預設即包含這些許可。

**擷取執行個體日誌**

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

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

1. 在導覽窗格中，選擇**日誌**。

1. 選擇 **Request Logs (請求日誌)**，然後選擇要擷取的日誌類型。欲取得結尾日誌，選擇 **Last 100 Lines (最後 100 行)**。欲取得套件日誌，選擇 **Full Logs (完整日誌)**。

1. 當 Elastic Beanstalk 完成擷取記錄檔時，請選擇 **Download (下載)**。

Elastic Beanstalk 會將結尾和套件日誌儲存在 Amazon S3 儲存貯體中，並產生一個預先簽章的 Amazon S3 URL，讓您用來存取日誌。Elastic Beanstalk 會在 15 分鐘後從 Amazon S3 刪除檔案。

**警告**  
擁有預先簽章之 Amazon S3 URL 的任何人皆可在檔案被刪除之前存取檔案。請務必僅將此 URL 提供給可信任者。

**注意**  
您的使用者政策必須具有 `s3:DeleteObject` 許可。Elastic Beanstalk 會使用您的使用者許可從 Amazon S3 刪除日誌。

若要保留日誌，您可以將環境設定為在日誌輪換後自動發佈至 Amazon S3。若要啟用 Amazon S3 的日誌輪換，請遵循 [設定執行個體日誌檢視](environments-cfg-logging.md#environments-cfg-logging-console) 中的程序。環境中的執行個體會每小時嘗試上傳已輪換的日誌。

若您的應用程式並未在做為您環境平台預設組態一部分的位置內產生日誌，您可以使用組態檔案 (`[.ebextensions](ebextensions.md)`) 來延伸預設組態。您可將應用程式的日誌檔案，新增至結尾日誌、套件日誌或日誌輪換。

若要進行即時日誌串流和長期儲存，請設定您的環境以[串流日誌到 Amazon CloudWatch Logs](#health-logs-cloudwatchlogs)。

若要取得環境日誌、事件和執行個體運作狀態的 AI 支援分析，以識別運作狀態問題的根本原因和解決方案，請參閱 [AI 驅動的環境分析](health-ai-analysis.md)。

**Topics**
+ [Amazon EC2 執行個體上的日誌位置](#health-logs-instancelocation)
+ [Amazon S3 中的日誌位置](#health-logs-s3location)
+ [Linux 上的日誌輪換設定](#health-logs-logrotate)
+ [擴展預設日誌任務組態](#health-logs-extend)
+ [將日誌檔案串流至 Amazon CloudWatch Logs](#health-logs-cloudwatchlogs)

## Amazon EC2 執行個體上的日誌位置
<a name="health-logs-instancelocation"></a>

日誌會存放於環境中 Amazon EC2 執行個體上的標準位置。Elastic Beanstalk 會產生下列日誌。

**Amazon Linux 2**
+ `/var/log/eb-engine.log`

**Amazon Linux AMI (AL1)**

**注意**  
 在 [2022 年 7 月 18 日，](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html)Elastic Beanstalk 會根據 Amazon Linux AMI (AL1) 將所有平台分支的狀態設定為**已淘汰**。如需有關遷移至完全支援的目前 Amazon Linux 2023 平台分支的詳細資訊，請參閱 [將您的 Elastic Beanstalk Linux 應用程式遷移到 Amazon Linux 2023 或 Amazon Linux 2](using-features.migration-al.md)。
+ `/var/log/eb-activity.log`
+ `/var/log/eb-commandprocessor.log`

**Windows Server**
+ `C:\Program Files\Amazon\ElasticBeanstalk\logs\`
+ `C:\cfn\log\cfn-init.log`

這些日誌會納入部署活動的訊息，包括與組態檔案 ([`.ebextensions`](ebextensions.md)) 相關的訊息。

各個應用程式和 Web 伺服器將日誌存放於自己的資料夾：
+ **Apache** – `/var/log/httpd/`
+ **IIS** – `C:\inetpub\wwwroot\`
+ **Node.js** – `/var/log/nodejs/`
+ **nginx** – `/var/log/nginx/`
+ **Passenger** – `/var/app/support/logs/`
+ **Puma** – `/var/log/puma/`
+ **Python** – `/opt/python/log/`
+ **Tomcat** – `/var/log/tomcat/`

## Amazon S3 中的日誌位置
<a name="health-logs-s3location"></a>

當您自環境請求結尾或套件日誌，或當執行個體上傳輪換日誌時，這些日誌會存放於 Amazon S3 內的 Elastic Beanstalk 儲存貯體。Elastic Beanstalk `elasticbeanstalk-region-account-id`會為您建立環境的每個 AWS 區域建立名為 的儲存貯體。在此儲存貯體內，日誌會存放於此路徑下：`resources/environments/logs/logtype/environment-id/instance-id`。

例如，帳戶 `i-0a1fd158`中 AWS 區域中 Elastic Beanstalk `e-mpcwnwheky`環境中執行個體 `us-west-2`的日誌`123456789012`會存放在下列位置：
+ **結尾日誌** –

  `s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/tail/e-mpcwnwheky/i-0a1fd158`
+ **套件日誌** –

  `s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/bundle/e-mpcwnwheky/i-0a1fd158`
+ **輪換日誌** –

  `s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/publish/e-mpcwnwheky/i-0a1fd158`

**注意**  
您可以在環境管理主控台中找到您的環境 ID。

在結尾和套件日誌產生後的 15 分鐘，Elastic Beanstalk 會自動將其自 Amazon S3 刪除。輪換的日誌會持續存在，直到您將其刪除或移至 Amazon Glacier。

## Linux 上的日誌輪換設定
<a name="health-logs-logrotate"></a>

在 Linux 平台上，Elastic Beanstalk 會使用 `logrotate` 來定期輪換日誌。若經過設定，日誌於本機輪換後，將由日誌輪換任務選取並上傳至 Amazon S3。於本機輪換的日誌，預設不會顯示於結尾或套件日誌。

您可於 `/etc/logrotate.elasticbeanstalk.hourly/` 找到 `logrotate` 的 Elastic Beanstalk 組態檔案。這些輪換設定為平台特定，未來的平台版本可能會加以變更。如需有關可用設定和範例組態的詳細資訊，請執行 `man logrotate`。

定時守護作業 (cron job) 會於 `/etc/cron.hourly/` 中叫用組態檔案。如需關於 `cron`的詳細資訊，請執行 `man cron`。

## 擴展預設日誌任務組態
<a name="health-logs-extend"></a>

Elastic Beanstalk 會使用 Amazon EC2 執行個體上 `/opt/elasticbeanstalk/tasks` (Linux) 或 `C:\Program Files\Amazon\ElasticBeanstalk\config` (Windows Server) 的子資料夾內的檔案，設定結尾日誌、套件日誌和日誌輪換的任務。

**在 Amazon Linux 上：**
+ **結尾日誌** –

  `/opt/elasticbeanstalk/tasks/taillogs.d/`
+ **套件日誌** –

  `/opt/elasticbeanstalk/tasks/bundlelogs.d/`
+ **輪換日誌** –

  `/opt/elasticbeanstalk/tasks/publishlogs.d/`

**在 Windows Server 上：**
+ **結尾日誌** –

  `c:\Program Files\Amazon\ElasticBeanstalk\config\taillogs.d\`
+ **套件日誌** –

  `c:\Program Files\Amazon\ElasticBeanstalk\config\bundlelogs.d\`
+ **輪換日誌** –

  `c:\Program Files\Amazon\ElasticBeanstalk\config\publogs.d\`

例如，Linux 上的檔案 `eb-activity.conf` 會將兩個日誌檔新增至結尾日誌任務。

**`/opt/elasticbeanstalk/tasks/taillogs.d/eb-activity.conf `**

```
/var/log/eb-commandprocessor.log
/var/log/eb-activity.log
```

您可使用環境資訊檔案 (`[.ebextensions](ebextensions.md)`) 將自己的 `.conf` 檔案新增至這些資料夾。`.conf` 檔案會列出您應用程式特定的日誌檔案，Elastic Beanstalk 會將其新增至日誌檔案任務。

使用 `files` 區段將組態檔案新增至您欲修改的任務。例如，下列組態文字會將日誌組態檔案加入至您環境中的每個執行個體。此日誌組態檔案 `cloud-init.conf` 新增 `/var/log/cloud-init.log` 到結尾日誌。

```
files:
  "/opt/elasticbeanstalk/tasks/taillogs.d/cloud-init.conf" :
    mode: "000755"
    owner: root
    group: root
    content: |
      /var/log/cloud-init.log
```

將此文字新增至副檔名為 `.config` 的檔案，再將此檔案新增至名為 `.ebextensions` 的資料夾下原始碼套件中。

```
~/workspace/my-app
|-- .ebextensions
|   `-- tail-logs.config
|-- index.php
`-- styles.css
```

在 Linux 平台上，您也可以在日誌任務組態中使用萬用字元。此組態檔案會自應用程式根目錄的 `.log` 資料夾，將副檔名為 `log` 的所有檔案新增至套件日誌。

```
files: 
  "/opt/elasticbeanstalk/tasks/bundlelogs.d/applogs.conf" :
    mode: "000755"
    owner: root
    group: root
    content: |
      /var/app/current/log/*.log
```

日誌任務組態在 Windows 平台上不支援萬用字元。

**注意**  
若要協助熟悉記錄自訂程序，您可以使用 [EB CLI](eb-cli3.md) 部署範例應用程式。為此，EB CLI 會建立包含具有範例組態之 `.ebextentions` 子目錄的本機應用程式目錄。您也可以使用範例應用程式的日誌檔案來探索本主題所述的日誌擷取功能。

如需使用組態檔案的詳細資訊，請參閱[使用組態檔案 (`.ebextensions`) 來進行進階的環境自訂](ebextensions.md)。

您可使用組態檔案來擴展日誌輪換，如同擴展結尾日誌和套件日誌。每當 Elastic Beanstalk 輪換自己的日誌並將其上傳至 Amazon S3 時，也會輪換並上傳您的其他日誌。日誌輪換擴展的行為依平台作業系統而異。下列小節描述兩種情況。

### 於 Linux 上擴展日誌輪換
<a name="health-logs-extend-rotation-linux"></a>

如[Linux 上的日誌輪換設定](#health-logs-logrotate)中所說明，在 Linux 平台上，Elastic Beanstalk 會使用 `logrotate` 來輪換日誌。當您將應用程式的日誌檔案設定為日誌輪換，該應用程式不需要建立日誌檔案的副本。Elastic Beanstalk 會設定 `logrotate`，於每次輪換複製您的應用程式日誌檔案。因此，應用程式在主動寫入日誌期間之外，必須讓日誌檔案保持解鎖狀態。

### 於 Windows Server 上擴展日誌輪換
<a name="health-logs-extend-rotation-windows"></a>

在 Windows Server 上，當您將應用程式的日誌檔案設定為日誌輪換，該應用程式必須定期輪換日誌檔案。Elastic Beanstalk 會尋找檔名開頭與您所設定的模式相符的檔案，將其選取以上傳至 Amazon S3。此外，Elastic Beanstalk 會忽略檔名的句點，將句點前的名稱視為基本日誌檔案名稱。

Elastic Beanstalk 會上傳基本日誌檔案的所有版本 (除了最新版本)，因其認為最新版本為作用中的應用程式日誌檔案，可能會被鎖定。因此，您的應用程式於輪換之間可鎖定作用中的日誌檔案。

例如，您的應用程式寫入名為 `my_log.log` 的日誌檔案，而且您在 `.conf` 檔案中指定了此名稱。應用程式會定期輪換檔案。在 Elastic Beanstalk 輪換循環時，會於日誌檔案資料夾找出下列檔案：`my_log.log`、`my_log.0800.log`、`my_log.0830.log`。Elastic Beanstalk 會將它們視為基本名稱 `my_log` 的版本。檔案 `my_log.log` 的修改時間最晚，因此 Elastic Beanstalk 僅會上傳其他兩個檔案：`my_log.0800.log` 和 `my_log.0830.log`。

## 將日誌檔案串流至 Amazon CloudWatch Logs
<a name="health-logs-cloudwatchlogs"></a>

您可將環境設定為在 Elastic Beanstalk 主控台中串流日誌至 Amazon CloudWatch Logs，或使用[組態選項](command-options.md)來進行此作業。透過 CloudWatch Logs，您環境的各個執行個體會將日誌串流至日誌群組，您可將日誌群組設定為保留數週或數年，甚至保留到環境終止之後。

所串流的日誌組會依環境而異，不過一律會包含 `eb-engine.log`，以及於應用程式前方執行的 nginx 或 Apache 代理伺服器存取日誌。

您可以在[建立環境期間](environments-create-wizard.md#environments-create-wizard-software)或[為現有環境](environments-cfg-logging.md#environments-cfg-logging-console)，在 Elastic Beanstalk 主控台設定日誌串流。您可以從主控台設定下列選項：啟用 /停用日誌串流至 CloudWatch Logs、設定保留天數，然後從生命週期選項中選取。在以下範例中，日誌儲存會長達 7 天，即使環境終止也一樣。

![\[Elastic Beanstalk 主控台中 CloudWatch Logs 設定的螢幕影像。\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/log-streaming-screen.png)


下列[組態檔案](ebextensions.md)的日誌串流保留期間為 180 天，即使環境終止也是如此。

**Example .ebextensions/log-streaming.config**  

```
option_settings:
  aws:elasticbeanstalk:cloudwatch:logs:
    StreamLogs: true
    DeleteOnTerminate: false
    RetentionInDays: 180
```

# 檢視 Elastic Beanstalk 環境的部署日誌
<a name="environments-deployment-logs"></a>

Elastic Beanstalk 會針對您環境的每個部署產生部署日誌。部署日誌提供部署期間所發生情況的合併時間檢視，包括相依性安裝、建置輸出、應用程式啟動，以及遇到的任何錯誤。您可以使用部署日誌快速診斷失敗的部署，而無需將 SSH 關聯至執行個體或關聯多個日誌檔案。

部署日誌會在本機寫入每個執行個體。對於透過主控台、CLI、API 或受管更新觸發的部署，一個執行個體會在部署期間持續將其日誌上傳至 Amazon S3。Elastic Beanstalk 主控台會從 Amazon S3 讀取日誌，因此您可以監控進度，而無需連線到執行個體。

部署日誌的設計是簡潔的。成功時，日誌只會顯示摘要訊息 （例如，哪些命令執行並完成）。在失敗時，日誌包含來自失敗步驟的最多 50 行輸出，因此您可以看到錯誤，而無需篩選詳細輸出。

**注意**  
部署日誌可在 [2026 年 3 月 11 日當天或之後發行的 Amazon Linux](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2026-03-11-al2.html) [2 和 Amazon Linux 2023](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2026-03-11-al2023.html) 平台版本上取得。目前不支援 Windows 平台。

## 受支援的操作
<a name="environments-deployment-logs.supported-operations"></a>

部署日誌會針對下列操作產生：
+ **應用程式部署** – 將新的應用程式版本部署到您的環境。
+ **組態更新** – 變更需要執行個體更新的環境組態設定。
+ **環境建立** – 建立新環境時的初始部署。
+ **重新啟動應用程式伺服器** – 重新啟動執行個體上的應用程式伺服器。

不修改執行個體上應用程式或組態狀態的操作，例如請求日誌、交換 CNAMEs 或更新標籤，不會產生部署日誌。

## 部署日誌內容
<a name="environments-deployment-logs.contents"></a>

部署日誌會在部署期間擷取下列資訊：
+ **部署生命週期** – 每個部署階段的開始和完成訊息，例如 `Starting Application deployment`和 `Completed Application deployment`。
+ **.ebextensions 輸出** – 成功時，執行的命令名稱。失敗時，最後 50 行`cfn-init`輸出以協助診斷問題。
+ **平台掛鉤輸出** – 成功時，執行的掛鉤指令碼名稱。失敗時，最後 50 行勾點輸出。
+ **相依性安裝** – 從套件管理員輸出**pip install**，例如 **npm install**、**composer install**、 和 **bundle install**。成功時，只會記錄完成訊息。失敗時，包含最後 50 行輸出。
+ **組建輸出** – 來自組建命令的輸出**docker build**，例如 **go build**、 和 Java 組建。失敗時，包含最後 50 行輸出。
+ **應用程式啟動輸出** – 應用程式啟動後的初始輸出。來源取決於您的平台：
  + *Docker* – 來自 **docker logs**或 的容器日誌 **docker compose logs**
  + *Java SE、Go、Node.js、Python、Ruby、.NET* – 程序 stdout 日誌
  + *Tomcat* – Catalina 日誌輸出
  + *PHP* – PHP-FPM 主要和集區錯誤日誌
  + *ECS* – 來自每個任務容器的容器日誌
**注意**  
從應用程式啟動後 2 秒開始擷取應用程式輸出。只包含初始啟動訊息 – 如果您的應用程式需要更長的時間來產生輸出，則不會出現在部署日誌中。若要查看完整的應用程式日誌，請請求套件日誌或直接連線至執行個體。如需詳細資訊，請參閱[檢視執行個體日誌](using-features.logging.md)。

當部署步驟失敗時，日誌會標記它，`[ERROR]`並包含失敗步驟中最多 50 行的輸出。如果部署日誌未包含足夠的詳細資訊，您可以從日誌****索引標籤擷取完整的執行個體日誌 （包括 `eb-hooks.log`、 `eb-engine.log`和應用程式日誌）。如需詳細資訊，請參閱[在 Elastic Beanstalk 環境中檢視 Amazon EC2 執行個體的日誌](using-features.logging.md)。

## 在主控台中檢視部署日誌
<a name="environments-deployment-logs.console"></a>

Elastic Beanstalk 主控台提供環境儀表板上的**部署**索引標籤，您可以在其中檢視部署歷史記錄和日誌。

### 檢視部署歷史記錄
<a name="environments-deployment-logs.console.history"></a>

**檢視部署歷史記錄**

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

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

1. 在環境儀表板中，選擇**部署**索引標籤。

   部署索引標籤會顯示環境的部署資料表。每一列都包含下列資訊：
   + **請求 ID** – 部署的唯一識別符。
   + **狀態** – *成功*、*失敗*或*進行中*。
   + **類型** – 部署類型，例如*環境建立*、*應用程式部署*、*組態更新*、*受管平台更新*、*重新啟動應用程式伺服器*、*重建環境*、*還原環境*、*交換環境網域*或終止*環境*。
   + **開始時間** – 部署開始時。
   + **持續時間** – 部署完成所需的時間。

部署進行中時，索引標籤會自動輪詢更新。您也可以選擇重新整理按鈕來手動重新載入清單。

### 檢視部署詳細資訊和日誌
<a name="environments-deployment-logs.console.detail"></a>

**檢視部署詳細資訊**

1. 在**部署**索引標籤上，選擇您要檢查之部署的**請求 ID** 連結。

1. 部署詳細資訊頁面會顯示摘要區段，其中包含請求 ID、狀態、部署類型、開始時間、持續時間和部署政策。部署政策 （例如*，一次全部*、*滾動*、*與其他批次一起滾動*、*不可變*或*流量分割*) 會在可以從部署事件判斷時顯示。

1. 在摘要下方，選擇下列其中一個索引標籤：
   + **事件** – 與此部署相關的事件時間軸，篩選為僅顯示所選部署的事件。
   + **部署日誌** – 來自執行個體的合併部署日誌。您可以搜尋、依日誌層級篩選，以及下載日誌檔案。

對於進行中的部署，日誌索引標籤會自動重新整理，以顯示寫入的新日誌項目。部署完成後，主控台會擷取最終日誌狀態，以確保您看到完整的輸出。

**重要**  
在主控台中檢視部署日誌需要環境 Amazon S3 儲存貯體 () 的`s3:GetObject`許可`elasticbeanstalk-region-account-id`。如果您的 IAM 政策不包含此許可，部署歷史記錄和事件仍然可用，但日誌索引標籤會顯示錯誤。

## 執行個體上的部署日誌檔案
<a name="environments-deployment-logs.instance"></a>

部署日誌會寫入每個執行個體上的 `/var/log/deployments/`目錄。日誌檔案名稱取決於如何觸發部署：
+ **工作流程控制部署 **（透過主控台、CLI 或 API 觸發） – `eb-deployment-request-id.log`，其中 *request-id* 是唯一的部署請求 ID。
+ **自我啟動部署 **（執行個體啟動或重新啟動應用程式伺服器） – `eb-deployment-unix-timestamp.log`。

Elastic Beanstalk 會自動輪換這些檔案，在每個執行個體上保留 50 個最新的部署日誌。

對於工作流程控制的部署，日誌會在下列路徑上傳到 Amazon S3：

```
s3://elasticbeanstalk-region-account-id/resources/environments/logs/deployments/environment-id/log-filename
```

在多執行個體環境中，第一個開始上傳的執行個體宣告整個部署的角色。該執行個體會在部署期間將其日誌上傳至 Amazon S3。所有執行個體仍會在本機寫入部署日誌。

**重要**  
將部署日誌上傳至 Amazon S3 需要執行個體設定檔中環境 Amazon S3 儲存貯體的`s3:PutObject`許可，而且 VPC 組態必須允許連線至 Amazon S3。

部署日誌上傳上限為每個檔案 1 MB。如果部署日誌超過此大小，則會截斷上傳的版本，並顯示訊息指出執行個體上有完整的日誌可用。

### 停用 S3 日誌上傳
<a name="environments-deployment-logs.disable"></a>

若要防止部署日誌上傳至 Amazon S3，請在您的環境中設定下列環境屬性：

```
option_settings:
  - namespace:  aws:elasticbeanstalk:application:environment
    option_name:  EB_DEPLOYMENT_LOG_S3_DISABLED
    value:  true
```

設定此環境屬性時，部署日誌仍會在本機寫入每個執行個體`/var/log/deployments/`上的 ，但不會上傳至 Amazon S3，而且無法在主控台**部署**索引標籤中使用。您也可以在**軟體**下的**組態**頁面或使用 EB CLI 或 來設定此屬性 AWS CLI。