

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

# 使用监控配置监控 Spark Kubernetes Operator 和 Spark 作业
<a name="spark-operator-monitoring-configuration"></a>

监控配置使您可以轻松地设置将 Spark 应用程序和 Operator 日志归档到 Amazon S3 或 Amazon CloudWatch。您可以选择其中一项或两项。这样做会将日志代理 sidecar 添加到 Spark Operator 容器组、驱动程序和执行程序容器组，随后将这些组件的日志转发到您配置的接收器。

## 先决条件
<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. 如果您还没有 operator/job 执行角色，请在 IAM 中创建执行角色。

1. 运行以下命令更新您刚刚创建的 operator/job 执行角色的信任策略：

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

1. 将您的 operator/job 执行角色的 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. 将上述策略附加到您的 operator/job 执行角色中。