

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

# 記錄和監控 Apache Spark 工作階段
<a name="notebooks-spark-logging-monitoring"></a>

從 Apache Spark 3.5 版之後的版本，您可以將受管、Amazon S3 或 CloudWatch 記錄指定為記錄選項。

透過 受管記錄和 S3 記錄，下表列出如果您選擇這些選項，您可以預期的日誌位置和 UI 可用性。


****  

| 選項 | 事件日誌 | 容器日誌 | 應用程式 UI | 
| --- | --- | --- | --- | 
| 受管記錄 （預設） | 存放在受管 S3 儲存貯體 | 存放在受管 S3 儲存貯體 | 支援 | 
| 受管記錄和 S3 儲存貯體 | 存放在這兩個位置 | 存放在 S3 儲存貯體 | 支援 | 
| Amazon S3 儲存貯體 | 存放在 S3 儲存貯體 | 存放在 S3 儲存貯體 | 不支援1 | 

1 建議您保持選取受管記錄選項。否則，您無法使用內建應用程式 UIs。

## 受管記錄
<a name="notebooks-spark-logging-monitoring-managed"></a>

根據預設，Athena Spark 工作群組會將應用程式日誌安全地存放在服務管理的 S3 儲存貯體中，最長可達 30 天。

您可以選擇性地提供 KMS 金鑰 （金鑰 ID、arn、別名或別名 arn)，供服務用來加密受管日誌。

```
aws athena start-session \
  --work-group "WORKGROUP" \
  --monitoring-configuration '{
    "ManagedLoggingConfiguration": {
        "Enabled": true,
        "KmsKey": "KMS_KEY"
    },
  }'
  --engine-configuration ''
```

**注意**  
如果您關閉受管記錄，則 Athena 無法代表您對工作階段進行故障診斷。範例：您將無法從 Amazon SageMaker AI Studio 筆記本或使用 `GetResourceDashboard` API 存取 Spark-UI。

若要從 關閉此選項 AWS CLI，請在啟動互動式工作階段時使用 `ManagedLoggingConfiguration`組態。

```
aws athena start-session \
  --work-group "WORKGROUP" \
  --monitoring-configuration '{
    "ManagedLoggingConfiguration": {
      "Enabled": false
    },
  }'
  --engine-configuration ''
```

### 受管記錄的必要許可
<a name="notebooks-spark-logging-monitoring-managed-permissions"></a>

如果您提供 KMS 金鑰，則需要執行角色許可政策中的下列許可。

```
{
    "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
    ],
    "Resource": "*",
    "Effect": "Allow"
}
```

## Amazon S3 記錄
<a name="notebooks-spark-logging-monitoring-s3"></a>

您可以設定日誌交付至 Amazon S3 儲存貯體。

若要從 啟用 S3 日誌交付 AWS CLI，請在啟動互動式工作階段時使用 `S3LoggingConfiguration`組態。

```
aws athena start-session \
  --work-group "WORKGROUP" \
  --monitoring-configuration '{
    "S3LoggingConfiguration": {
      "Enabled":true,
      "LogLocation": "s3://bucket/",
    },
  }'
  --engine-configuration ''
```

您可以選擇性地提供 KMS 金鑰 （金鑰 ID、arn、別名或別名 arn)，供服務用來加密 S3 日誌。

```
aws athena start-session \
  --work-group "WORKGROUP" \
  --monitoring-configuration '{
    "S3LoggingConfiguration": {
      "Enabled":true,
      "LogLocation": "s3://bucket/",
      "KmsKey": "KMS_KEY"
    },
  }'
  --engine-configuration ''
```

### 將日誌交付至 Amazon S3 所需的許可
<a name="notebooks-spark-logging-monitoring-s3-permissions"></a>

在工作階段將日誌交付至 Amazon S3 儲存貯體之前，請在執行角色的許可政策中包含下列許可。

```
{
    "Action": "s3:*",
    "Resource": "*",
    "Effect": "Allow"
}
```

如果您提供 KMS 金鑰，您也需要在執行角色的許可政策中具有下列許可。

```
{
    "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
    ],
    "Resource": "*",
    "Effect": "Allow"
}
```

如果 kms 金鑰和儲存貯體不是來自同一個帳戶，則 KMS 需要允許 S3 服務主體。

```
{
  "Effect": "Allow",
  "Principal": { "Service": "s3.amazonaws.com" },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:GenerateDataKey*"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "aws:SourceAccount": "ACCOUNT_HAVING_KMS_KEY"
    }
  }
}
```

## CloudWatch 記錄功能
<a name="notebooks-spark-logging-monitoring-cloudwatch"></a>

您可以設定將日誌交付至 CloudWatch 日誌群組。

若要從 啟用 S3 日誌交付 AWS CLI，請在啟動互動式工作階段時使用 `CloudWatchLoggingConfiguration`組態。

```
aws athena start-session \
  --work-group "WORKGROUP" \
  --monitoring-configuration '{
    "CloudWatchLoggingConfiguration": {
      "Enabled": true,
      "LogGroup": "/aws/athena/sessions/${workgroup}",
      "LogStreamNamePrefix": "session-"
    }
  }'
  --engine-configuration ''
```

根據預設，所有日誌都會交付，但您可以選擇指定要包含的日誌類型。

```
aws athena start-session \
  --work-group "WORKGROUP" \
  --monitoring-configuration '{
    "CloudWatchLoggingConfiguration": {
      "Enabled": true,
      "LogGroup": "/aws/athena/sessions/${workgroup}",
      "LogStreamNamePrefix": "session-",
      "LogTypes": {
          "SPARK_DRIVER": [
              "STDOUT",
              "STDERR"
          ],
          "SPARK_EXECUTOR": [
              "STDOUT",
              "STDERR"
          ]
       }
    }
  }'
  --engine-configuration ''
```

### 將日誌交付至 CloudWatch 所需的許可
<a name="notebooks-spark-logging-monitoring-cloudwatch-permissions"></a>

在工作階段將日誌交付至 CloudWatch 日誌群組之前，請在執行角色的許可政策中包含下列許可。

```
{
    "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams"
    ],
    "Resource": "*",
    "Effect": "Allow"
}
```

並遵循 KMS 金鑰資源政策的許可。

```
{
  "Effect": "Allow",
  "Principal": {
    "Service": "logs.<region>.amazonaws.com"
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}
```

## 在工作群組中設定記錄預設值
<a name="notebooks-spark-logging-monitoring-workgroup-defaults"></a>

您也可以在工作群組層級指定預設記錄選項。

若要從工作群組 AWS CLI 的 指定預設記錄選項，請在建立新的工作群組時使用 `monitoring-configuration`組態：

```
aws athena create-work-group \
  --region "REGION" \
  --name "WORKGROUP_NAME" \
  --monitoring-configuration '{
      "CloudWatchLoggingConfiguration": {
          "Enabled": true,
          "LogGroup": "/aws/athena/sessions/${workgroup}",
          "LogStreamNamePrefix": "session-",
          "LogTypes": {
              "SPARK_DRIVER": [
                  "STDOUT",
                  "STDERR"
              ],
              "SPARK_EXECUTOR": [
                  "STDOUT",
                  "STDERR"
              ]
          }
        },
        "ManagedLoggingConfiguration": {
            "Enabled": true,
            "KmsKey": "KMS_KEY"
        },
        "S3LoggingConfiguration": {
            "Enabled": true,
            "KmsKey": "KMS_KEY"
            "LogLocation": "s3://bucket/",
            "LogTypes": {
                "SPARK_DRIVER": [
                    "STDOUT",
                    "STDERR"
                ],
                "SPARK_EXECUTOR": [
                    "STDOUT",
                    "STDERR"
                ]
            }
        }
    }'
```

若要修改工作群組 AWS CLI 的預設記錄選項，請在更新工作群組時使用 `monitoring-configuration`組態。這些變更會套用至未來的新互動式工作階段。

```
aws athena update-work-group \
  --region "REGION" \
  --work-group "WORKGROUP_NAME" 
  --monitoring-configuration '{
      "CloudWatchLoggingConfiguration": {
          "Enabled": true,
          "LogGroup": "/aws/athena/sessions/${workgroup}",
          "LogStreamNamePrefix": "session-",
          "LogTypes": {
              "SPARK_DRIVER": [
                  "STDOUT",
                  "STDERR"
              ],
              "SPARK_EXECUTOR": [
                  "STDOUT",
                  "STDERR"
              ]
          }
        },
        "ManagedLoggingConfiguration": {
            "Enabled": true,
            "KmsKey": "KMS_KEY"
        },
        "S3LoggingConfiguration": {
            "Enabled": true,
            "KmsKey": "KMS_KEY"
            "LogLocation": "s3://bucket/",
            "LogTypes": {
                "SPARK_DRIVER": [
                    "STDOUT",
                    "STDERR"
                ],
                "SPARK_EXECUTOR": [
                    "STDOUT",
                    "STDERR"
                ]
            }
        }
    }'
```