

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

# 將 Elastic Beanstalk 環境運作狀態資訊串流至 Amazon CloudWatch Logs
<a name="AWSHowTo.cloudwatchlogs.envhealth"></a>

如果您啟用[增強型運作狀態](health-enhanced.md)報告，您可以將環境設定為將運作狀態資訊串流到 CloudWatch Logs。此串流與 Amazon EC2 執行個體日誌串流無關。此主題說明環境運作狀態資訊串流。如需執行個體日誌串流的詳細資訊，請參閱[搭配 Amazon CloudWatch Logs 使用 Elastic Beanstalk](AWSHowTo.cloudwatchlogs.md)。

當您設定環境運作狀態串流時，Elastic Beanstalk 會針對環境運作狀態建立 CloudWatch Logs 日誌群組。日誌群組的名稱是 `/aws/elasticbeanstalk/environment-name/environment-health.log`。在這個日誌群組內，Elastic Beanstalk 會建立名為 `YYYY-MM-DD#<hash-suffix>` 的日誌串流 (每個日期可能有一個以上的日誌串流)。

當環境的運作狀態變更，Elastic Beanstalk 會將記錄新增到運作狀態日誌串流。該記錄代表運作狀態轉換 - 新的狀態和描述變更的原因。例如，環境的狀態會因負載平衡器失敗而變更為「嚴重」。如需增強型運作狀況的詳細說明，請參閱[運作狀態顏色和狀態](health-enhanced-status.md)。

## 環境運作狀態串流至 CloudWatch Logs 的必要條件
<a name="AWSHowTo.cloudwatchlogs.envhealth.prereqs"></a>

若要啟用 CloudWatch Logs 的環境運作狀態串流，您必須符合以下條件：
+ *平台* – 您必須使用可支援增強型運作狀態報告的平台版本。
+ *許可* – 您必須將特定記錄相關許可授與 Elastic Beanstalk，以便代表您為環境串流運作狀態資訊。如果您的環境未使用 Elastic Beanstalk 為它建立的服務角色 `aws-elasticbeanstalk-service-role`，或您的帳戶服務連結角色 `AWSServiceRoleForElasticBeanstalk`，請務必將以下許可新增至您的自訂服務角色。

  ```
  {
        "Effect": "Allow",
        "Action": [
          "logs:DescribeLogStreams",
          "logs:CreateLogStream",
          "logs:PutLogEvents"
        ],
        "Resource": "arn:aws:logs:*:*:log-group:/aws/elasticbeanstalk/*:log-stream:*"
  }
  ```

## 將環境運作狀態日誌串流至 CloudWatch Logs
<a name="AWSHowTo.cloudwatchlogs.envhealth.streaming"></a>

您可以使用 Elastic Beanstalk 主控台、EB CLI 或組態選項，啟用串流至 CloudWatch Logs 的環境運作狀態。

### 使用 Elastic Beanstalk 主控台的環境運作狀態日誌串流
<a name="AWSHowTo.cloudwatchlogs.envhealth.streaming.console"></a>

**將環境運作狀態日誌串流至 CloudWatch Logs**

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

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

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

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

1. 在 **Health reporting (運作狀態報告)** 下，確保報告 **System (系統)** 設為 **Enhanced (增強型)**。

1. 在 **Health event streaming to CloudWatch Logs (運作狀態事件串流到 CloudWatch Logs)** 下
   + 啟用 **Log streaming (日誌串流)**。
   + 將 **Retention (保留)** 設為儲存日誌的天數。
   + 選取 **Lifecycle (生命週期)** 設定，其決定是否在環境終止後儲存日誌。

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

您在啟用日誌串流後，返回 **Monitoring (監控)** 組態類別或頁面，並且尋找 **Log Group (日誌群組)** 連結。按一下此連結，在 CloudWatch 主控台查看您的環境運作狀態日誌。

### 使用 EB CLI 的環境運作狀態日誌串流
<a name="AWSHowTo.cloudwatchlogs.envhealth.streaming.ebcli"></a>

若要使用 EB CLI 將環境運作狀態日誌串流到 CloudWatch Logs，請使用 [**eb logs**](eb3-logs.md) 命令。

```
$ eb logs --cloudwatch-logs enable --cloudwatch-log-source environment-health
```

您也可以使用 **eb logs** 擷取 CloudWatch Logs 的日誌，例如，以下命令為您的環境中擷取所有的運作狀態日誌，並將它們儲存到 `.elasticbeanstalk/logs` 底下的目錄。

```
$ eb logs --all --cloudwatch-log-source environment-health
```

### 使用組態檔案的環境運作狀態日誌串流
<a name="AWSHowTo.cloudwatchlogs.envhealth.files"></a>

當您建立或更新環境時，您可以使用組態檔案來設定與配置串流到 CloudWatch Logs 的環境運作狀態日誌。若要使用以下範例，可將文字複製到您的應用程式來源套件最上層，`.config` 目錄中具有 `.ebextensions` 副檔名的檔案。在範例中，設定 Elastic Beanstalk 以啟用環境運作狀態日誌串流，終止環境後保留日誌，並儲存 30 天。

**Example [運作狀態串流組態檔案](samples/aws_eb_cloudwatchlogs-envhealth.zip)**  

```
############################################################################
##  Sets up Elastic Beanstalk to stream environment health information
##  to Amazon CloudWatch Logs.
##  Works only for environments that have enhanced health reporting enabled.
############################################################################

option_settings:
  aws:elasticbeanstalk:cloudwatch:logs:health:
    HealthStreamingEnabled: true
    ### Settings below this line are optional.
    # DeleteOnTerminate: Delete the log group when the environment is
    # terminated. Default is false. If false, the health data is kept
    # RetentionInDays days.
    DeleteOnTerminate: false
    # RetentionInDays: The number of days to keep the archived health data
    # before it expires, if DeleteOnTerminate isn't set. Default is 7 days.
    RetentionInDays: 30
```

如需選項預設值和有效值的詳細資訊，請參閱 [`aws:elasticbeanstalk:cloudwatch:logs:health`](command-options-general.md#command-options-general-cloudwatchlogs-health)。