View a markdown version of this page

記錄和監控 Apache Spark 工作階段 - Amazon Athena

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

記錄和監控 Apache Spark 工作階段

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

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

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

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

受管記錄

根據預設,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 ''

受管記錄的必要許可

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

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

Amazon S3 記錄

您可以設定日誌交付至 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 所需的許可

在工作階段將日誌交付至 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 記錄功能

您可以設定將日誌交付至 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 所需的許可

在工作階段將日誌交付至 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": "*" }

在工作群組中設定記錄預設值

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

若要從工作群組 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" ] } } }'