配置任务运行以使用 Amazon CloudWatch Logs - Amazon EMR

配置任务运行以使用 Amazon CloudWatch Logs

要监控任务进度并排查故障,您必须配置任务,将日志信息发送到 Amazon S3、Amazon CloudWatch Logs 或两者。本主题可帮助您在通过 Amazon EMR on EKS 启动的任务中开始使用 CloudWatch Logs。有关 CloudWatch Logs 的更多信息,请参阅《Amazon CloudWatch 用户指南》中的监控日志文件

CloudWatch Logs IAM policy

要完成将日志数据发送到 CloudWatch Logs 的任务,任务执行角色的权限策略中必须包含以下权限。以 my_log_group_namemy_log_stream_prefix 分别替换 CloudWatch 日志组名称和日志流名称。如果日志组和日志流式传输不存在,只要执行角色 ARN 具有适当的权限,则 Amazon EMR on EKS 将创建这些日志组和日志流式传输。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:my_log_group_name:log-stream:my_log_stream_prefix/*" ] } ] }
注意

Amazon EMR on EKS 还可以创建日志流。如果日志流不存在,IAM policy 应包含 "logs:CreateLogGroup" 权限。

在您为执行角色指定了合适的权限后,只要 cloudWatchMonitoringConfiguration 通过 start-job-run 请求的 monitoringConfiguration 部分,您的应用程序应将其日志数据发送到 CloudWatch Logs,如 使用 AWS CLI 管理任务运行 所示。

StartJobRun API 中,log_group_name 是 CloudWatch 的日志组名称,log_stream_prefix 则是 CloudWatch 日志流式传输的名称前缀。您可以在AWS Management Console中查看和搜索这些日志。

  • 提交者日志:logGroup/logStreamPrefix/virtual-cluster-id/jobs/job-id/containers/pod-name/(stderr/stdout)

  • 驱动程序日志 - logGroup/logStreamPrefix/virtual-cluster-id/jobs/job-id/containers/spark-application-id/spark-job-id-driver/(stderrstdout)

  • 执行程序日志 - logGroup/logStreamPrefix/virtual-cluster-id/jobs/job-id/containers/spark-application-id/executor-pod-name/(stderr/stdout)