本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 awslogs 日志驱动程序
在默认情况下,Amazon Batch将使awslogs
日志驱动程序向 CloudWatch Logs 发送日志信息。可以使用此功能在同一个方便的位置查看容器中的不同日志,并防止容器日志占用容器实例上的磁盘空间。本主题可帮助在作业定义中配置awslogs
日志驱动程序。
注意
在Amazon Batch控制台中,创建作业定义时,可以在awslogs
日志记录配置部分配置日志驱动程序。
注意
作业中的容器所记录的信息类型主要取决于其ENTRYPOINT
命令。默认情况下,捕获的日志显示命令输出是在本地运行容器时在交互式终端上通常看到的内容,即STDOUT
和STDERR
I/O 流。awslogs
日志驱动程序只是将 Docker 中的这些日志传递到 CloudWatch Logs。有关如何处理 Docker 日志的更多信息,包括捕获不同文件数据或流的替代方法,请参阅 Docker 文档中的查看容器或服务的日志
要将系统日志从容器实例发送到 CloudWatch Logs,请参阅将 CloudWatch Logs 与Amazon Batch结合使用。有关 CloudWatch Logs 的更多信息,请参阅《Amazon CloudWatch Logs 用户指南》中的监控日志文件和 CloudWatch Logs 配额。
Amazon Batch JobDefiniton 数据类型中的 awslogs 日志驱动程序选项
awslogs
日志驱动程序支持Amazon Batch作业定义中的下列选项。有关更多信息,请参阅 Docker 文档中的 CloudWatch 日志记录驱动程序
awslogs-region
-
必需:否
指定
awslogs
日志驱动程序应将 Docker 日志发送到的区域。默认情况下,使用的区域与作业的区域相同。可以选择将来自不同区域作业的所有日志发送到 CloudWatch Logs 中的单个区域。这样,所有这些信息在同一个位置可见。或者,也可以按区域将它们分开,以获得更高粒度。但是,选择此选项时,请确保指定的日志组存在于指定的区域中。 awslogs-group
-
必需:可选
可以使用
awslogs-group
选项,以指定awslogs
日志驱动程序将其日志流发送到的日志组。如果未指定,则将使用aws/batch/job
。 awslogs-stream-prefix
-
必需:可选
通过
awslogs-stream-prefix
选项,可以将日志流与指定的前缀,以及容器所属Amazon Batch作业的 Amazon ECS 任务 ID 关联在一起。如果使用此选项指定前缀,则日志流将采用以下格式:prefix-name
/default/ecs-task-id
awslogs-datetime-format
-
必需:否
此选项以 Python
strftime
格式定义多行开始位置模式。日志消息由与模式匹配的行以及与模式不匹配的任何以下行组成。因此,匹配行是日志消息之间的分隔符。使用此格式的一个使用案例示例是用于解析输出(如堆栈转储),这可能记录在多个条目中。正确模式允许它捕获在单个条目中。
有关更多信息,请参阅 awslogs-datetime-format
。 如果同时配置了
awslogs-datetime-format
和awslogs-multiline-pattern
,此选项始终优先。注意
多行日志记录对所有日志消息执行正则表达式解析和匹配。这可能会对日志记录性能产生负面影响。
awslogs-multiline-pattern
-
必需:否
此选项使用正则表达式定义多行开始位置模式。日志消息由与模式匹配的行以及与模式不匹配的任何以下行组成。因此,匹配行是日志消息之间的分隔符。
有关更多信息,请参阅 Docker 文档中的 awslogs-multiline-pattern
。 如果还配置了
awslogs-datetime-format
,则会忽略此选项。注意
多行日志记录对所有日志消息执行正则表达式解析和匹配。这可能会对日志记录性能产生负面影响。
awslogs-create-group
-
必需:否
指定是否要自动创建日志组。如果未指定此选项,则默认为
false
。警告
不建议使用该选项。建议使用 CloudW atch Logs CreateLogGroup API 操作提前创建日志组,因为每个作业都会尝试创建日志组,增加作业失败的机会。
注意
执行角色的 IAM policy 必须包含
logs:CreateLogGroup
权限,然后才能尝试使用awslogs-create-group
。
在作业定义中指定日志配置
默认情况下,Amazon Batch会启用awslogs
日志驱动程序。本节介绍如何为作业自定义awslogs
日志配置。有关更多信息,请参阅 创建单节点作业定义 。
以下日志配置 JSON 片段为每个作业指定了一个logConfiguration
对象。一个是用于将日志发送到名为awslogs-wordpress
的日志组的 WordPress 作业,另一个是用于将日志发送到名为awslogs-mysql
的日志组的 MySQL 容器。两个容器都使用awslogs-example
日志流前缀。
"logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "
awslogs-wordpress
", "awslogs-stream-prefix": "awslogs-example
" } }
"logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "
awslogs-mysql
", "awslogs-stream-prefix": "awslogs-example
" } }
Amazon Batch控制台中指定了wordpress
作业的日志配置,如以下映像所示。
在作业定义日志配置中向awslogs
日志驱动程序注册作业定义之后,可以使用该作业定义提交作业,以开始将日志发送到 CloudWatch Logs。有关更多信息,请参阅 教程:提交作业。