

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将 Elastic Beanstalk 环境运行状况信息流式传输到亚马逊日志 CloudWatch
<a name="AWSHowTo.cloudwatchlogs.envhealth"></a>

如果您为环境启用[增强型运行状况](health-enhanced.md)报告，则可以将环境配置为将运行状况信息流式传输到 CloudWatch 日志。这种流式传输独立于 Amazon EC2 实例日志流。本主题介绍环境运行状况信息流式传输。有关实例日志流式传输的信息，请参阅[将 Elastic Bean CloudWatch stalk 与亚马逊日志一起使用](AWSHowTo.cloudwatchlogs.md)。

在配置环境运行状况流式传输时，Elastic Beanstalk CloudWatch 会为环境运行状况创建一个日志组。日志组的名称为 `/aws/elasticbeanstalk/environment-name/environment-health.log`。在此日志组内，Elastic Beanstalk 创建名为 `YYYY-MM-DD#<hash-suffix>` 的日志流（每个日期可能存在多个日志流）。

当环境的运行状况发生更改时，Elastic Beanstalk 会将记录添加到运行状况日志流。该记录表示运行状况转换 - 新状态以及发生更改的原因的描述。例如，环境的状态可能由于负载均衡器发生故障而更改为“严重”。有关增强型运行状况的描述，请参阅[运行状况颜色和状态](health-enhanced-status.md)。

## 将环境运行状况流式传输到 CloudWatch 日志的先决条件
<a name="AWSHowTo.cloudwatchlogs.envhealth.prereqs"></a>

要启用将环境运行状况流式传输到 CloudWatch 日志，您必须满足以下条件：
+ *平台* – 您必须使用支持增强型运行状况报告的平台版本。
+ *权限* – 您必须向 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 日志
<a name="AWSHowTo.cloudwatchlogs.envhealth.streaming"></a>

您可以使用 Elastic Beanstalk 控制台、EB CLI 或配置选项启用将环境运行状况流式传输到 CloudWatch 日志。

### 使用 Elastic Beanstalk 控制台进行环境运行状况日志流式传输
<a name="AWSHowTo.cloudwatchlogs.envhealth.streaming.console"></a>

**将环境运行状况日志流式传输到 CloudWatch 日志**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Monitoring (监控)** 配置类别中，选择 **Edit (编辑)**。

1. 在 **Health reporting (运行状况报告)** 下，请确保报告 **System (系统)** 设置为 **Enhanced (增强型)**。

1. Under He **alth 事件直播到 CloudWatch 日志**
   + 启用 **Log streaming (日志流式传输)**。
   + 将 **Retention (保留)** 设置为保存日志的天数。
   + 选择 **Lifecycle (生命周期)** 设置，该设置确定日志是否在环境终止时进行保存。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

在启用日志流式传输后，您可以返回到**监控**配置类别或页面并查找**日志组**链接。单击此链接可在 CloudWatch 控制台中查看您的环境运行状况日志。

### 使用 EB CLI 进行环境运行状况日志流式传输
<a name="AWSHowTo.cloudwatchlogs.envhealth.streaming.ebcli"></a>

要使用 EB CLI 启用环境运行状况 CloudWatch 日志流式传输到日志，请使用[**eb logs**](eb3-logs.md)命令。

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

您也可以使用从 **eb logs** “日志” 中检索 CloudWatch 日志。例如，以下命令检索您的环境中所有的运行状况日志，并且将它们保存到 `.elasticbeanstalk/logs` 下的目录。

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

### 使用配置文件进行环境运行状况日志流式传输
<a name="AWSHowTo.cloudwatchlogs.envhealth.files"></a>

创建或更新环境时，您可以使用配置文件来设置和配置环境运行状况日志流式传输到 CloudWatch 日志。要使用下列示例，请将该文本复制到应用程序源包的顶层 `.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)。