本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
記錄和監控 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" ] } } }'