

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定作業執行以使用 Amazon CloudWatch Logs
<a name="emr-eks-jobs-cloudwatch"></a>

若要監控作業進度並對失敗進行疑難排解，必須設定作業，以便將日誌資訊傳送到 Amazon S3、Amazon CloudWatch Logs 或兩者。本主題可協助您開始在透過 Amazon EMR on EKS 啟動的作業上使用 CloudWatch Logs。如需有關 CloudWatch Logs 的詳細資訊，請參閱《Amazon CloudWatch 使用者指南》中的[監控日誌檔案](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html)。

**CloudWatch Logs IAM 政策**

為了讓作業將日誌資料傳送到 CloudWatch Logs，必須在作業執行角色的許可政策中包含下列許可。將 {{my\_log\_group\_name}} 和 {{my\_log\_stream\_prefix}} 分別取代為 CloudWatch 日誌群組名稱和日誌串流名稱。如果日誌群組和日誌串流不存在，只要執行角色 ARN 具有適當的許可，Amazon EMR 就會建立它們。

------
#### [ JSON ]

****  

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

------

**注意**  
Amazon EMR on EKS 也可以建立日誌串流。如果日誌串流不存在，IAM 政策應包含 `"logs:CreateLogGroup"` 許可。

在為執行角色提供適當的許可之後，當在 `start-job-run` 請求的 `monitoringConfiguration` 區段中傳遞 `cloudWatchMonitoringConfiguration` 時，應用程式會將其日誌資料傳送至 CloudWatch Logs，如 [使用 管理任務執行 AWS CLI](emr-eks-jobs-CLI.md) 中所示。

在 `StartJobRun` API 中，{{log\_group\_name}} 是 CloudWatch 的日誌群組名稱，而 {{log\_stream\_prefix}} 是 CloudWatch 的日誌串流名稱字首。您可以在 AWS 管理主控台中檢視及搜尋這些日誌。
+ 提交者日誌 - {{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)