AWS Glue 作业的日志记录 - AWS Glue

AWS Glue 作业的日志记录

在 AWS Glue 5.0 中,所有作业都具有实时日志记录功能。此外,您可以通过指定自定义配置选项来自定义日志记录行为,包括设置 Amazon CloudWatch 日志组名称、Amazon CloudWatch 日志流前缀(将添加到 AWS Glue 作业运行 ID 和驱动程序/执行程序 ID 之前)以及日志消息的日志转换模式等。借助这些配置,您可以将日志聚合到具有不同过期策略的自定义 Amazon CloudWatch 日志组中。此外,您还可以使用自定义日志流前缀和转换模式来更有效地分析日志。借助这种自定义级别,您可以根据自己的具体需求优化日志管理和分析。

AWS Glue 5.0 中的日志记录行为

默认情况下,系统日志、Spark 进程守护程序日志、和用户 AWS Glue Logger 日志都会写入 Amazon CloudWatch 中的 /aws-glue/jobs/error 日志组,而用户 stdout(标准输出)和 stderr(标准错误)日志则会默认写入 /aws-glue/jobs/output 日志组。

自定义日志记录

您可以使用以下作业参数来自定义默认日志组和日志流前缀:

  • --custom-logGroup-prefix:让您能够为 /aws-glue/jobs/error/aws-glue/jobs/output 日志组指定自定义前缀。如果您提供了自定义前缀,则日志组名称将为以下格式:

    • /aws-glue/jobs/error 将为 <customer prefix>/error

    • /aws-glue/jobs/output 将为 <customer prefix>/output

  • --custom-logStream-prefix:让您能够为日志组内的日志流名称指定自定义前缀。如果您提供了自定义前缀,则日志流名称将为以下格式:

    • jobrunid-driver 将为 <customer log stream>-driver

    • jobrunid-executorNum 将为 <customer log stream>-executorNum

自定义前缀的验证规则和限制:

  • 完整日志流名称长度必须介于 1 到 512 个字符之间。

  • 自定义前缀本身的长度不应超过 400 个字符。

  • 自定义前缀必须匹配正则表达式模式“[^:*]*”(允许的特殊字符为“_”、“-”和“/”)。

使用自定义脚本日志记录程序记录特定于应用程序的消息

您可以使用 AWS Glue 日志记录程序记录在脚本中记录任何特定于应用程序的消息,这些消息实时发送到驱动程序日志流。

以下示例显示了一个 Python 脚本。

from awsglue.context import GlueContext from pyspark.context import SparkContext sc = SparkContext() glueContext = GlueContext(sc) logger = glueContext.get_logger() logger.info("info message") logger.warn("warn message") logger.error("error message")

以下示例显示了一个 Scala 脚本。

import com.amazonaws.services.glue.log.GlueLogger object GlueApp { def main(sysArgs: Array[String]) { val logger = new GlueLogger logger.info("info message") logger.warn("warn message") logger.error("error message") } }

启用进度栏以显示作业进度

AWS Glue 在 JOB_RUN_ID-progress-bar 日志流下提供了实时进度栏,用于查看 AWS Glue 作业运行状态。目前,它仅支持初始化 glueContext 的作业。如果您运行纯 Spark 作业而没有初始化 glueContext,则不显示 AWS Glue 进度栏。

进度栏每 5 秒显示下列进度更新。

Stage Number (Stage Name): > (numCompletedTasks + numActiveTasks) / totalNumOfTasksInThisStage]

Amazon CloudWatch 日志记录的安全配置

为 Amazon CloudWatch 日志启用安全配置后,AWS Glue 会使用包含安全配置名称的特定命名模式创建日志组。

包含安全配置的日志组命名规范

默认日志组和自定义日志组将如下所示:

  • 默认错误日志组:/aws-glue/jobs/Security-Configuration-Name-role/glue-job-role/error

  • 默认输出日志组:/aws-glue/jobs/Security-Configuration-Name-role/glue-job-role/output

  • 自定义错误日志组(AWS Glue 5.0):custom-log-group-prefix/Security-Configuration-Name-role/glue-job-role/error

  • 自定义输出日志组(AWS Glue 5.0):custom-log-group-prefix/Security-Configuration-Name-role/glue-job-role/output

必需的 IAM 权限

您需要将 logs:AssociateKmsKey 权限添加到您的 IAM 角色权限中(如果您使用 Amazon CloudWatch Logs 启用了安全配置)。如果不包括该权限,连续日志记录将禁用。

此外,要为 Amazon CloudWatch Logs 配置加密,请遵循《Amazon Amazon CloudWatch Logs 用户指南》中 Encrypt Log Data in Amazon CloudWatch Logs Using AWS Key Management Service 部分的说明。

附加信息

有关创建安全配置的更多信息,请参阅在 AWS Glue 控制台上管理安全配置