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

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

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

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

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

使用 Amazon Web Services Management Console

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

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

  1. 登录Amazon Web Services Management Console,然后打开 Amazon Glue 控制台,网址为:https://console.aws.amazon.com/glue/

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

  3. 选择添加作业

  4. Configure the job properties (配置任务属性) 中,展开 Monitoring options (监控选项) 部分。

  5. 选择 Continuous logging (连续日志记录),将其用于此任务。

  6. Log filtering (日志筛选) 下面,选择 Standard filter (标准筛选条件) 或者 No filter (无筛选条件)

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

  1. 打开 Amazon Glue 控制台,地址:https://console.aws.amazon.com/glue/

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

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

  4. 选择操作编辑作业

  5. 展开 Monitoring options (监控选项) 部分。

  6. 选择 Continuous logging (连续日志记录),将其用于此任务。

  7. Log filtering (日志筛选) 下面,选择 Standard filter (标准筛选条件) 或者 No filter (无筛选条件)

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

  1. 打开 Amazon Glue 控制台,地址:https://console.aws.amazon.com/glue/

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

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

  4. 在标题 Monitoring options (监控选项) 下面,选择 Continuous logging (连续日志记录)

  5. Log filtering (日志筛选) 下面,选择 Standard filter (标准筛选条件) 或者 No filter (无筛选条件)

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

使用 Amazon CLI

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

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

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

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

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

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

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

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

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

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

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

您可以使用 Amazon 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") } }

启用进度栏以显示日志进度

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

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

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

采用连续日志记录的安全配置

如果为 CloudWatch 日志启用了安全配置,Amazon Glue 将为连续日志创建一个名称如下的日志组:

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

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

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

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

您需要将 logs:AssociateKmsKey 添加到您的 IAM 角色权限(如果您使用 CloudWatch Logs 启用了安全配置)。如果不包括该权限,连续日志记录将禁用。此外,要为 CloudWatch Logs 配置加密,请遵循《Amazon CloudWatch Logs 用户指南》中的使用 Amazon Key Management Service 加密 CloudWatch Logs 中日志数据处的说明。

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