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

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

使用 awslogs 日志驱动程序

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

注意

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

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

awslogs 日志驱动程序选项

这些区域有:awslogs日志驱动程序支持 AWS Batch 作业定义中的下列选项。有关更多信息,请参阅 。CloudWatch Logs 记录驱动程序在 Docker 文档中。

awslogs-region

:必需 否

指定区域,其中awslogs日志驱动程序应发送您的 Docker 日志。默认情况下,使用的区域与作业的区域相同。您可以选择将不同区域中的作业中的所有日志发送到 CloudWatch Logs 中的单个区域。这样做可以让它们从一个位置可见。或者,您可以按 “区域” 分隔它们,以获得更精细的方法。但是,当您选择此选项时,请确保指定的日志组存在于您指定的区域中。

awslogs-group

:必需 可选

随着awslogs-group选项,可将awslogs日志驱动程序将其日志流发送到。如果未指定此aws/batch/job使用。

awslogs-stream-prefix

:必需 可选

随着awslogs-stream-prefix选项,可将日志流与指定的前缀关联在一起,并将容器所属的 AWS 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

:必需 否

此选项使用正则表达式定义多行开始位置模式。日志消息由与模式匹配的行以及与模式不匹配的任何以下行组成。因此,匹配行是日志消息之间的分隔符。

有关更多信息,请参阅 。awslogs 多行模式在 Docker 文档中。

如果还配置了 awslogs-datetime-format,则会忽略此选项。

注意

多行日志记录对所有日志消息执行正则表达式解析和匹配。这可能会对日志记录性能产生负面影响。

awslogs-create-group

:必需 否

指定您是否希望自动创建日志组。如果未指定此选项,则默认为false

警告

不建议使用此选项。我们建议您使用 CloudWatch 日志提前创建日志组CreateLogGroupAPI 操作,因为每个作业尝试创建日志组,从而增加作业失败的可能性。

注意

您的执行角色的 IAM 策略必须包含logs:CreateLogGroup权限,然后尝试使用awslogs-create-group

在作业定义中指定日志配置

默认情况下,AWS Batch 启用awslogs日志驱动程序。此部分描述如何自定义awslogs作业的日志配置。有关更多信息,请参阅 创建作业定义

以下日志配置 JSON 代码段具有logConfiguration对象指定的每个作业。一个是一个 WordPress 作业,它将日志发送到名为awslogs-wordpress,另一个是用于将日志发送到名为awslogs-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" } }

在 AWS Batch 控制台中,wordpress作业定义,如下图所示。


    控制台日志配置

在将任务定义注册到awslogs日志驱动程序,您可以提交具有该作业定义的作业,以开始将日志发送到 CloudWatch Logs。有关更多信息,请参阅 提交作业