为 AWS Glue 作业启用连续日志记录 - AWS Glue
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

为 AWS Glue 作业启用连续日志记录

您可使用 AWS Glue 控制台或通过 AWS Command Line Interface (AWS CLI) 启用连续日志记录。

在创建作业时,您可以启用带有标准筛选条件或无筛选条件的连续日志记录,或者通过 AWS CLI 启用。选择标准筛选条件可筛选掉无用的 Apache Spark 驱动程序/执行程序和 Apache Hadoop YARN 检测信号日志消息。选择无筛选条件则提供所有所有日志消息。

您还可以指定自定义配置选项,例如 Amazon CloudWatch 日志组名称、CloudWatch 作业运行 ID 驱动程序/执行程序 ID 之前的 AWS Glue 日志流前缀以及日志消息的日志转换模式。这些配置帮助您在具有不同过期策略的自定义 CloudWatch 日志组中设置聚合日志,并使用自定义日志流前缀和转换模式进一步分析它们。

使用 AWS 管理控制台

在创建或编辑 AWS Glue 作业时,按照以下步骤使用控制台来启用连续日志记录。

创建带有连续日志记录的新 AWS Glue 作业

  1. 登录 AWS 管理控制台并通过以下网址打开 AWS Glue 控制台:https://console.amazonaws.cn/glue/

  2. 在导航窗格中,选择作业

  3. 选择添加作业

  4. 配置作业属性中,选择监控选项

  5. 连续日志记录选项卡上,选择启用

  6. 选择标准筛选条件无筛选条件

为现有 AWS Glue 作业启用连续日志记录

  1. 通过以下网址打开 AWS Glue 控制台:https://console.amazonaws.cn/glue/

  2. 在导航窗格中,选择作业

  3. 作业列表选择现有作业。

  4. 选择操作编辑作业

  5. 选择监控选项

  6. 连续日志记录选项卡上,选择启用

  7. 选择标准筛选条件无筛选条件

为所有新创建的 AWS Glue 作业启用连续日志记录

  1. 通过以下网址打开 AWS Glue 控制台:https://console.amazonaws.cn/glue/

  2. 在导航窗格中,选择作业

  3. 在右上角,选择用户首选项

  4. 选择监控选项

  5. 连续日志记录选项卡上,选择启用

  6. 选择标准筛选条件无筛选条件

这些用户首选项应用到所有新作业,除非您在创建 AWS Glue 作业时或者通过编辑现有作业(如前所述)来明确覆盖了这些首选项。

使用 AWS CLI

要启用连续日志记录,您需要将作业参数传入 AWS Glue 作业。在您希望使用标准筛选条件时,通过类似于其他 AWS Glue 作业参数的方法,传递以下特殊作业参数。有关更多信息,请参阅由 AWS Glue 使用的特殊参数

'--enable-continuous-cloudwatch-log': 'true'

在您不希望使用筛选条件时,使用以下命令。

'--enable-continuous-cloudwatch-log': 'true', '--enable-continuous-log-filter': 'false'

您可以指定自定义 AWS CloudWatch 日志组名称。如果未指定,则默认日志组名称为 /aws-glue/jobs/logs-v2/

'--continuous-log-logGroup': 'custom_log_group_name'

您可以指定自定义 AWS CloudWatch 日志流前缀。如果未指定,则默认日志流前缀为作业运行 ID。

'--continuous-log-logStreamPrefix': 'custom_log_stream_prefix'

您可以指定自定义连续日志记录转换模式。如果未指定,则默认转换模式为 %d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n。 请注意,转换模式仅适用于驱动程序日志和执行程序日志。它不会影响 AWS Glue 进度条。

'--continuous-log-conversionPattern': 'custom_log_conversion_pattern'

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

您可以使用 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]

带连续日志记录的安全配置

如果为 CloudWatch 日志启用了安全配置,AWS Glue 将为连续日志创建一个按如下方式命名的日志组:

<Log-Group-Name>-<Security-Configuration-Name>

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

  • 默认连续日志组将为 /aws-glue/jobs/logs-v2-<Security-Configuration-Name>

  • 自定义连续日志组将为<custom-log-group-name>-<Security-Configuration-Name>

如果您使用 logs:AssociateKmsKey Logs 启用安全配置,则还需要将 CloudWatch 包含在 IAM 角色权限中。如果不包含,则将禁用连续日志记录。

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