本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 Elastic Bean CloudWatch stalk 与亚马逊日志配合使用
本主题介绍亚马逊 CloudWatch 日志服务可以为 Elastic Beanstalk 提供的监控功能。它还会引导您完成配置设置,并列出每个 Elastic Beanstalk 平台的日志位置。
通过实施 CloudWatch 日志,您可以执行以下监控活动:
-
监控和存档您环境中的EC2亚马逊实例中您的 Elastic Beanstalk 应用程序、系统和自定义日志文件。
-
配置警报,使您可以更轻松地对指标筛选器提取的特定日志流事件做出反应。
安装在您环境中每个 Amazon EC2 实例上的 CloudWatch 日志代理会将您配置的每个日志组的指标数据点发布到该 CloudWatch 服务。每个日志组都应用自己的过滤器模式来确定要 CloudWatch 作为数据点发送到哪些日志流事件。属于同一日志组的各日志流具有相同的保留、监控和访问控制设置。您可以将 Elastic Beanstalk 配置为自动将日志流式传输到服务 CloudWatch ,如中所述。将实例日志流式传输到 CloudWatch 日志有关 CloudWatch 日志的更多信息,包括术语和概念,请参阅 Amazon CloudWatch Logs 用户指南。
除了实例日志外,如果您为环境启用增强型运行状况,则可以将环境配置为将运行状况信息流式传输到 CloudWatch 日志。请参阅 将 Elastic Beanstalk 环境运行状况信息流式传输到 Amazon CloudWatch Logs。
主题
将日志流式传输到日志的 CloudWatch 先决条件
要启用将日志从您环境的 Amazon EC2 实例流式传输到 CloudWatch 日志,您必须满足以下条件。
-
平台 – 由于此功能仅在此版本
推出时或之后发布的平台版本中可用,因此,如果您使用的是早期平台版本,请将环境更新为当前环境。 -
如果您的 E AWSElasticBeanstalkWorkerTierlastic Beanstalk 实例配置文件中没有AWSElasticBeanstalkWebTier或 El astic Beanstalk 托管策略,则必须在配置文件中添加以下内容才能启用此功能。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": [ "*" ] } ] }
Elastic Beanstalk 是如何设置日志 CloudWatch 的
Elastic Beanstalk 在其创建的 CloudWatch 每个实例上安装一个使用默认配置设置的日志代理。要了解更多信息,请参阅CloudWatch 日志代理参考。
当您启用将实例日志流式传输到 CloudWatch 日志时,Elastic Beanstalk 会将您的环境实例中的日志文件发送到日志。 CloudWatch 不同的平台将流式传输不同的日志。下表按平台列出了日志。
平台/平台分支 |
日志 |
---|---|
Docker / 平台分支:在 64 位 Amazon Linux 2 上运行的 Docker |
|
Docker / 平台分支:在 64 位亚马逊 Linux 上ECS运行 2 |
|
Go 。 NETLinux 上的内核 Java /平台分支:在 64 位 Amazon Linux 2 上运行的 Corretto |
|
Node.js Python |
|
Tomcat PHP |
|
。 NET在 Windows 服务器上 |
|
Ruby |
|
注意
2022 年 7 月 18 日,Elastic Beanstalk 将所有基于亚马逊 Linux () 的平台分支的状态设置为停用。AMI AL1有关迁移到当前且完全受支持的 Amazon Linux 2023 平台分支的更多信息,请参阅 将 Elastic Beanstalk Linux 应用程序迁移到 Amazon Linux 2023 或 Amazon Linux 2。
下表按平台列出了从基于 Amazon LinuxAMI(之前的 Amazon Linux 2)的平台分支上的实例流式传输的日志文件。
平台/平台分支 |
日志 |
---|---|
Docker / 平台分支:在 64 位 Amazon Linux 上运行的 Docker |
|
Docker / 平台分支:在 64 位 Amazon Linux 上运行的多容器 Docker |
|
Glassfish(预配置的 Docker) |
|
Go |
|
Java / 平台分支:在 64 位 Amazon Linux 上运行的 Java 8 平台分支:在 64 位 Amazon Linux 上运行的 Java 7 |
|
Tomcat |
|
Node.js |
|
PHP |
|
Python |
|
Ruby / 平台分支:基于在 64 位 Amazon Linux 上运行的 Ruby 的 Puma |
|
Ruby / 平台分支:基于在 64 位 Amazon Linux 上运行的 Ruby 的 Passenger |
|
Elastic Beanstalk 在日志中为其流式 CloudWatch 传输的各种日志文件配置日志组。要从 Logs 中检索特定的 CloudWatch 日志文件,您必须知道相应日志组的名称。日志组命名方案取决于平台的操作系统。
对于 Linux 平台,为实例上日志文件位置加上前缀 /aws/elasticbeanstalk/
以获得日志组名称。例如,要检索文件 environment_name
/var/log/nginx/error.log
,请指定日志组 /aws/elasticbeanstalk/
。environment_name
/var/log/nginx/error.log
有关 Windows 平台,请参阅下表以了解每个日志文件对应的日志组。
实例上日志文件 |
日志组 |
---|---|
|
|
|
|
|
|
将实例日志流式传输到 CloudWatch 日志
您可以使用 Elastic Beanstalk 控制台、CLI EB 或配置选项启用将实例 CloudWatch 日志流式传输到日志。
在启用它之前,请设置与 L CloudWatch ogs 代理一起使用的IAM权限。您可以将以下自定义策略挂载到分配给您的环境的实例配置文件。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "*" ] } ] }
使用 Elastic Beanstalk 控制台进行实例日志流式传输
将实例日志流式传输到 CloudWatch 日志
打开 Elastic Beanstalk
控制台,然后在 “区域” 列表中,选择您的。 AWS 区域 -
在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。
注意
如果您有多个环境,请使用搜索栏筛选环境列表。
在导航窗格中,选择 Configuration(配置)。
-
在 Updates, monitoring, and logging(更新、监控和日志记录)配置类别中,选择 Edit(编辑)。
-
在 “将实例日志流式传输到 CloudWatch 日志” 下:
-
启用 Log streaming (日志流式传输)。
-
将 Retention (保留) 设置为保存日志的天数。
-
选择 Lifecycle (生命周期) 设置,该设置确定日志是否在环境终止时进行保存。
-
-
要保存更改,请选择页面底部的 Apply(应用)。
在启用日志流式传输后,您可以返回到软件配置类别或页面并查找日志组链接。单击此链接可在 CloudWatch 控制台中查看您的日志。
使用 EB 进行实例日志流式传输 CLI
要使用 EB 启用将实例 CloudWatch 日志流式传输到日志CLI,请使用eb logs命令。
$ eb logs --cloudwatch-logs enable
您也可以使用从 eb logs “日志” 中检索 CloudWatch 日志。您可以检索环境的所有实例日志,也可以使用该命令的多个选项来指定要检索的日志的子集。例如,以下命令检索您的环境中一组完整的实例日志,并且将它们保存到 .elasticbeanstalk/logs
下的目录。
$ eb logs --all
具体而言,--log-group
选项可让您检索特定日志组的实例日志,对应于特定实例上日志文件。为此,您需要了解对应于要检索的日志文件的日志组的名称。您可以在 Elastic Beanstalk 是如何设置日志 CloudWatch 的 中找到此信息。
使用配置文件进行日志流式传输
创建或更新环境时,您可以使用配置文件来设置和配置向日志传输的实例 CloudWatch 日志。以下示例配置文件启用默认实例日志流式传输。Elastic Beanstalk 为您的环境平台流式传输一组默认日志文件。要使用此示例,请将该文本复制到应用程序源代码包的顶层 .ebextensions
目录中扩展名为 .config
的文件。
option_settings: - namespace: aws:elasticbeanstalk:cloudwatch:logs option_name: StreamLogs value: true
自定义日志文件流式传输
Elastic Beanstalk 与日志的 CloudWatch 集成不直接支持您的应用程序生成的自定义日志文件的流式传输。要流式传输自定义日志,请使用配置文件直接安装 CloudWatch 代理并配置要推送的文件。有关示例配置文件,请参阅 logs-streamtocloudwatch-linux.config
注意
该示例在 Windows 平台上不起作用。
有关配置 CloudWatch 日志的更多信息,请参阅 Amazon CloudWatch 用户指南中的CloudWatch 代理配置文件参考。
故障排除 CloudWatch 日志集成
如果您在日志中找不到预期的某些环境实例 CloudWatch 日志,则可以调查以下常见问题:
-
您的IAM角色缺少所需的IAM权限。
-
您在不支持 Logs AWS 区域 的环境中启动了您的 CloudWatch 环境。
-
您的其中一个自定义日志文件不存在于您指定的路径中。