AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

将 Elastic Beanstalk 环境运行状况信息流式传输到 Amazon CloudWatch Logs

如果您为环境启用增强型运行状况报告,则可以将环境配置为将运行状况信息流式传输至 CloudWatch Logs。此流式传输独立于 Amazon EC2 实例日志流式传输。本主题介绍环境运行状况信息流式传输。有关实例日志流式传输的信息,请参阅将 Elastic Beanstalk 用于 Amazon CloudWatch Logs

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

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

环境运行状况流式传输到 CloudWatch Logs 的先决条件

要启用环境运行状况流式传输到 CloudWatch Logs,您必须满足以下条件:

  • 平台 – 您必须使用支持增强型运行状况报告的平台版本。

  • 权限 – 您必须向 Elastic Beanstalk 授予与日志记录相关的特定权限,以便它可以代表您执行操作以流式传输您的环境的运行状况信息。如果您的环境未使用 Elastic Beanstalk 为其创建的服务角色 aws-elasticbeanstalk-service-role 或您的账户的服务相关角色 AWSServiceRoleForElasticBeanstalk,请务必向您的自定义服务角色添加以下权限。

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

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

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

使用 Elastic Beanstalk 控制台进行环境运行状况日志流式传输

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

  1. 打开 Elastic Beanstalk 控制台

  2. 导航到您的环境的管理页

  3. 选择 Configuration

  4. 监控配置卡上,选择修改

  5. Health reporting (运行状况报告) 下,请确保报告 System (系统) 设置为 Enhanced (增强型)

  6. Health event streaming to CloudWatch Logs (运行状况事件流式传输到 CloudWatch Logs)

    • 启用 Log streaming (日志流式传输)

    • Retention (保留) 设置为保存日志的天数。

    • 选择 Lifecycle (生命周期) 设置,该设置确定日志是否在环境终止时进行保存。

  7. 选择 Apply

下图中的示例将日志保存 7 天并且在终止环境后保留日志。

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

使用 EB CLI 进行环境运行状况日志流式传输

要使用 EB CLI 启用环境运行状况日志流式传输到 CloudWatch Logs,请使用 eb logs 命令。

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

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

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

使用配置文件进行环境运行状况日志流式传输

在创建或更新环境时,您可以使用配置文件来设置和配置实例环境运行状况日志流式传输到 CloudWatch Logs。要使用下列示例,请将该文本复制到应用程序源包的顶层 .config 目录中扩展名为 .ebextensions 的文件。该示例将 Elastic Beanstalk 配置为启用环境运行状况日志流式传输,在终止环境后保留日志,并且将日志保存 30 天。

运行状况流式传输配置文件

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