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 관리형 로깅 옵션을 선택한 상태로 유지하는 것이 좋습니다. 그렇지 않으면 기본 제공 애플리케이션 UI를 사용할 수 없습니다.

관리형 로깅

기본적으로 Athena Spark 작업 그룹은 애플리케이션 로그를 최대 30일 동안 서비스 관리형 S3 버킷에 안전하게 저장합니다.

선택적으로 서비스가 관리형 로그를 암호화하는 데 사용할 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 버킷으로 로그 전송을 구성할 수 있습니다.

AWS CLI에서 S3 로그 전송을 활성화하려면 대화형 세션을 시작할 때 S3LoggingConfiguration 구성을 사용합니다.

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

선택적으로 서비스가 S3 로그를 암호화하는 데 사용할 KMS 키(키 ID, ARN, 별칭 또는 별칭 ARN)를 제공할 수 있습니다.

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 로그 그룹으로 로그 전송을 구성할 수 있습니다.

AWS CLI에서 S3 로그 전송을 활성화하려면 대화형 세션을 시작할 때 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" ] } } }'