本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
查看 Elastic Beanstalk 环境的部署日志
Elastic Beanstalk 会为每次部署到您的环境生成部署日志。部署日志按时间顺序提供了部署期间发生的情况的统一视图,包括依赖项安装、构建输出、应用程序启动以及遇到的任何错误。您可以使用部署日志快速诊断失败的部署,而无需通过 SSH 连接到实例或关联多个日志文件。
部署日志在本地写入每个实例。对于通过控制台、CLI、API 或托管更新触发的部署,一个实例在部署期间会持续将其日志上传到 Amazon S3。Elastic Beanstalk 控制台从 Amazon S3 读取日志,因此您无需连接到实例即可监控进度。
部署日志经过精心设计,简洁明了。成功后,日志仅显示摘要消息(例如,哪些命令已运行并已完成)。失败时,日志最多包含失败步骤的 50 行输出,因此您无需筛选详细输出即可看到错误。
支持的操作
将为以下操作生成部署日志:
应用程序部署-将新的应用程序版本部署到您的环境。
配置更新-更改需要实例更新的环境配置设置。
环境创建-创建新环境时的初始部署。
重新启动应用程序服务器-在您的实例上重新启动应用程序服务器。
不修改实例上的应用程序或配置状态的操作(例如请求日志 CNAMEs、交换或更新标签)不会生成部署日志。
部署日志内容
部署日志在部署期间会捕获以下信息:
-
部署生命周期-每个部署阶段的开始和完成消息,例如
Starting Application deployment和Completed Application deployment。 -
.ebextensions 输出 — 成功后,显示运行的命令的名称。失败时,最后50行
cfn-init输出可帮助诊断问题。 -
平台挂钩输出-成功后,运行的挂钩脚本的名称。失败时,最后50行挂钩输出。
-
依赖项安装-软件包管理器的输出npm install,例如pip install、composer install、和bundle install。成功后,仅记录完成消息。失败时,将包括最后 50 行输出。
-
生成输出-生成命令(例如docker buildgo build、和 Java 构建)的输出。失败时,将包括最后 50 行输出。
-
应用程序启动输出-应用程序启动后的初始输出。来源取决于您的平台:
Docker — 来自docker logs或的容器日志 docker compose logs
Java SE、Go、Node.js、Python、Ruby、.NET — 处理标准输出日志
Tomcat — C atalina 日志输出
PHP — PH P-FPM 主服务器和池错误日志
ECS — 来自每个任务容器的容器日志
注意
在应用程序启动 2 秒后开始捕获应用程序输出。仅包含初始启动消息,如果您的应用程序需要更长时间才能生成输出,则不会出现在部署日志中。要查看完整的应用程序日志,请请求捆绑包日志或直接连接到实例。有关更多信息,请参阅 查看实例日志。
当部署步骤失败时,日志会将其标记为[ERROR]并包含失败步骤的最多 50 行输出。如果部署日志不包含足够的详细信息,则可以从 “日志” 选项卡检索完整的实例日志(包括eb-engine.logeb-hooks.log、和应用程序日志)。有关更多信息,请参阅 查看您的 Elastic Beanstalk 环境中的 Amazon EC2 实例的日志。
在控制台中查看部署日志
Elastic Beanstalk 控制台在环境控制面板上提供了 “部署” 选项卡,您可以在其中查看部署历史记录和日志。
查看部署历史记录
查看部署历史记录
打开 Elastic Beanstalk
控制台,然后在 “区域” 列表中,选择您的。 AWS 区域 -
在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。
-
在环境仪表板中,选择 “部署” 选项卡。
“部署” 选项卡显示了环境的部署表。每行包含以下信息:
请求 ID-部署的唯一标识符。
状态-成功、失败或进行中。
类型-部署类型,例如环境创建、应用程序部署、配置更新、托管平台更新、重启应用程序服务器、重建环境、恢复环境、交换环境域或终止环境。
开始时间-部署开始的时间。
持续时间-完成部署所需的时间。
部署进行时,该选项卡会自动轮询更新。您也可以选择刷新按钮来手动重新加载列表。
查看部署详细信息和日志
查看部署详细信息
-
在 “部署” 选项卡上,选择要检查的部署的 “请求 ID” 链接。
-
部署详细信息页面显示一个摘要部分,其中包含请求 ID、状态、部署类型、开始时间、持续时间和部署策略。当可以从部署事件中确定部署策略时,就会显示部署策略(例如 “全部一次”、“滚动”、“滚动”、“附加批次”、“不可变” 或 “流量分割”)。
-
在摘要下方,选择以下选项卡之一:
-
事件-与此部署相关的事件的时间表,经过筛选后仅显示所选部署的事件。
-
部署日志-来自实例的合并部署日志。您可以搜索、按日志级别筛选和下载日志文件。
-
对于正在进行的部署,日志选项卡会自动刷新以在写入时显示新的日志条目。部署完成后,控制台会获取最终的日志状态,以确保您看到完整的输出。
重要
在控制台中查看部署日志需要s3:GetObject获得环境的 Amazon S3 存储桶 (elasticbeanstalk-) 的权限。如果您的 IAM 策略不包含此权限,则部署历史记录和事件仍可用,但日志选项卡将显示错误。region-account-id
实例上的部署日志文件
部署日志会写入每个实例的/var/log/deployments/目录中。日志文件名取决于部署的触发方式:
-
工作流控制的部署(通过控制台、CLI 或 API 触发)—
eb-deployment-,其中request-id.logrequest-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 日志上传
要防止部署日志上传到 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。