

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

# 使用監控組態來監控 Spark Kubernetes 運算子和 Spark 任務
<a name="spark-operator-monitoring-configuration"></a>

監控組態可讓您輕鬆地將 Spark 應用程式和運算子日誌的日誌封存設定到 Amazon S3 或 Amazon CloudWatch。您可以選擇其中一個或兩者。這樣做會將日誌代理程式附屬項目新增至您的 Spark 運算子 Pod、驅動程式和執行器 Pod，然後將這些元件的日誌轉送到您設定的接收器。

## 先決條件
<a name="spark-operator-monitoring-configuration-prereqs"></a>

設定監控之前，請務必完成下列設定任務：

1. （選用） 如果您先前已安裝較舊版本的 Spark 運算子，請刪除 *SparkApplication/ScheduledSparkApplication* CRD。

   ```
   kubectl delete crd scheduledsparkapplications.sparkoperator.k8s.io
   kubectl delete crd sparkapplications.sparkoperator.k8s.io
   ```

1. 如果您還沒有運算子/任務執行角色，請在 IAM 中建立該角色。

1. 執行下列命令來更新您剛建立之運算子/任務執行角色的信任政策：

   ```
   aws emr-containers update-role-trust-policy \ 
   --cluster-name {{cluster}} \
   --namespace {{namespace}} \
   --role-name {{iam_role_name_for_operator/job_execution_role}}
   ```

1. 將運算子/任務執行角色的 IAM 角色信任政策編輯如下：

   ```
   {
       "Effect": "Allow",
       "Principal": {
           "Federated": "${OIDC-provider}"
       },
       "Action": "sts:AssumeRoleWithWebIdentity",
       "Condition": {
           "StringLike": {
               "OIDC_PROVIDER:sub": "system:serviceaccount:${Namespace}:emr-containers-sa-*"
           }
       }
   }
   ```

1. 在具有下列許可的 IAM 中建立 *monitoringConfiguration* 政策：

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "logs:DescribeLogStreams",
           "logs:CreateLogStream",
           "logs:CreateLogGroup",
           "logs:PutLogEvents"
         ],
         "Resource": [
           "arn:aws:logs:*:*:log-group:{{log_group_name}}",
           "arn:aws:logs:*:*:log-group:{{log_group_name}}:*"
         ],
         "Sid": "AllowLOGSDescribelogstreams"
       },
       {
         "Effect": "Allow",
         "Action": [
           "logs:DescribeLogGroups"
         ],
         "Resource": [
           "*"
         ],
         "Sid": "AllowLOGSDescribeloggroups"
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:PutObject",
           "s3:GetObject",
           "s3:ListBucket"
         ],
         "Resource": [
           "arn:aws:s3:::{{bucket_name}}",
           "arn:aws:s3:::{{bucket_name}}/*"
         ],
         "Sid": "AllowS3Putobject"
       }
     ]
   }
   ```

------

1. 將上述政策連接至您的運算子/任務執行角色。