使用 awslogs 日志驱动程序 - Amazon Batch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 awslogs 日志驱动程序

在默认情况下,Amazon Batch将使awslogs日志驱动程序向 CloudWatch Logs 发送日志信息。可以使用此功能在同一个方便的位置查看容器中的不同日志,并防止容器日志占用容器实例上的磁盘空间。本主题可帮助在作业定义中配置awslogs日志驱动程序。

注意

在Amazon Batch控制台中,创建作业定义时,可以在awslogs日志记录配置部分配置日志驱动程序

注意

作业中的容器所记录的信息类型主要取决于其ENTRYPOINT命令。默认情况下,捕获的日志显示命令输出是在本地运行容器时在交互式终端上通常看到的内容,即STDOUTSTDERR I/O 流。awslogs日志驱动程序只是将 Docker 中的这些日志传递到 CloudWatch Logs。有关如何处理 Docker 日志的更多信息,包括捕获不同文件数据或流的替代方法,请参阅 Docker 文档中的查看容器或服务的日志

要将系统日志从容器实例发送到 CloudWatch Logs,请参阅将 CloudWatch Logs 与Amazon Batch结合使用。有关 CloudWatch Logs 的更多信息,请参阅《Amazon CloudWatch Logs 用户指南》中的监控日志文件CloudWatch Logs 配额

可用的 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-formatawslogs-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。有关更多信息,请参阅提交作业