AWSSupport-DiagnoseEMRLogsWithAthena - AWS Systems Manager 자동화 런북 참조

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWSSupport-DiagnoseEMRLogsWithAthena

설명

AWSSupport-DiagnoseEMRLogsWithAthena런북은 Amazon Athena를 데이터 AWS Glue 카탈로그와 통합하여 사용하여 Amazon EMR 로그를 진단하는 데 도움이 됩니다. Amazon Athena는 특정 날짜 범위 또는 키워드 기반 검색을 위한 선택적 파라미터를 사용하여 Amazon EMR 로그 파일에서 컨테이너, 노드 로그 또는 둘 다를 쿼리하는 데 사용됩니다.

Runbook은 기존 클러스터의 Amazon EMR 로그 위치를 자동으로 검색하거나 Amazon S3 로그 위치를 지정할 수 있습니다. 로그를 분석하려면 런북을 참조하십시오.

  • AWS Glue 데이터베이스를 생성하고 Amazon Amazon EMR S3 로그 위치에서 Amazon Athena 데이터 정의 언어 DDL () 쿼리를 실행하여 클러스터 로그에 대한 테이블과 알려진 문제 목록을 생성합니다.

  • 데이터 조작 언어 (DML) 쿼리를 실행하여 Amazon EMR 로그에서 알려진 문제 패턴을 검색합니다. 쿼리는 탐지된 문제 목록, 발생 횟수, Amazon S3 파일 경로별로 일치하는 키워드 수를 반환합니다.

  • 접두사 saw_diagnose_EMR_known_issues 아래에 지정한 Amazon S3 버킷에 결과가 업로드됩니다.

  • 런북은 사전 정의된 하위 집합에서 가져온 Amazon Knowledge Center (KC) 문서에 대한 결과, 권장 사항 및 참조를 강조하여 Amazon Athena 쿼리 결과를 반환합니다.

  • 완료 또는 실패 시 Amazon S3 버킷에 업로드된 AWS Glue 데이터베이스 및 알려진 문제 파일이 삭제됩니다.

어떻게 작동하나요?

Amazon Athena를 사용하여 Amazon EMR 로그를 분석하여 오류를 탐지하고 결과, 권장 사항 및 관련 지식 센터 문서를 강조 표시합니다. AWSSupport-DiagnoseEMRLogsWithAthena

런북은 다음 단계를 수행합니다.

  • 클러스터 ID를 사용하여 Amazon EMR 클러스터 로그 위치를 가져오거나 Amazon S3 위치를 입력하여 로그 위치 및 크기를 검색합니다.

  • 로그 위치 크기를 기반으로 Athena 비용 추정치를 제공합니다.

  • Athena 쿼리를 실행하기 전에 지정된 IAM 담당자에게 승인을 요청하고 다음 단계를 계속 진행하여 진행 승인을 받으세요.

  • 알려진 문제를 지정된 Amazon S3 버킷에 업로드하고 AWS Glue 데이터베이스와 테이블을 생성합니다.

  • Amazon EMR 로그 데이터에 대해 Athena 쿼리를 실행합니다. 쿼리는 날짜 범위, 키워드 또는 두 가지 기준 모두를 기준으로 검색하거나 제공된 입력에 따라 필터 없이 실행할 수 있습니다.

  • 결과를 분석하여 결과, 권장 사항 및 관련 KC 문서를 강조하세요.

  • Amazon Athena DML 쿼리 결과를 위한 출력 링크입니다.

  • 생성된 데이터베이스, 테이블 및 업로드된 알려진 문제를 제거하여 환경을 정리합니다.

문서 유형

자동화

소유자

Amazon

플랫폼

/

런북을 성공적으로 사용하려면 AutomationAssumeRole 매개 변수에 다음 작업이 필요합니다.

  • 아테나: GetQueryExecution

  • 아테나: StartQueryExecution

  • 아테나: GetPreparedStatement

  • 아테나: CreatePreparedStatement

  • 글루: GetDatabase

  • 접착제: CreateDatabase

  • 접착제: DeleteDatabase

  • 접착제: CreateTable

  • 접착제: GetTable

  • 접착제: DeleteTable

  • 엘라스틱 맵 리듀스: DescribeCluster

  • s3: ListBucket

  • s3: GetBucketVersioning

  • s3: ListBucketVersions

  • s3: GetBucketPublicAccessBlock

  • s3: GetBucketPolicyStatus

  • s3: GetObject

  • s3: GetBucketLocation

  • 가격: GetProducts

  • 가격: GetAttributeValues

  • 가격: DescribeServices

  • 가격: ListPriceLists

중요

이 자동화에 필요한 리소스에만 액세스를 제한하려면 SSM 서비스를 신뢰하는 IAM 역할에 다음 정책을 추가하세요. 파티션, 리전, 계정을 런북이 실행되는 파티션, 리전, 계정 번호의 적절한 값으로 바꾸십시오.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "glue:GetDatabase", "athena:GetQueryExecution", "athena:StartQueryExecution", "athena:GetPreparedStatement", "athena:CreatePreparedStatement", "s3:ListBucket", "s3:GetBucketVersioning", "s3:ListBucketVersions", "s3:GetBucketPublicAccessBlock", "s3:GetBucketPolicyStatus", "s3:GetObject", "s3:GetBucketLocation", "pricing:GetProducts", "pricing:GetAttributeValues", "pricing:DescribeServices", "pricing:ListPriceLists" ], "Resource": "*" }, { "Sid": "RestrictPutObjects", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:{Partition}:s3:::*/*/results/*", "arn:{partition}:s3:::*/*/saw_diagnose_emr_known_issues/*" ] }, { "Sid": "RestrictDeleteAccess", "Effect": "Allow", "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion" ], "Resource": [ "arn:{Partition}:s3:::*/*/saw_diagnose_emr_known_issues/*" ] }, { "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:CreateDatabase", "glue:DeleteDatabase" ], "Resource": [ "arn:{Partition}:glue:{Region}:{Account}:database/saw_diagnose_emr_database_*", "arn:{Partition}:glue:{Region}:{Account}:table/saw_diagnose_emr_database_*/*", "arn:{Partition}:glue:{Region}:{Account}:userDefinedFunction/saw_diagnose_emr_database_*/*", "arn:{Partition}:glue:{Region}:{Account}:catalog" ] }, { "Effect": "Allow", "Action": [ "glue:CreateTable", "glue:GetTable", "glue:DeleteTable" ], "Resource": [ "arn:{Partition}:glue:{Region}:{Account}:table/saw_diagnose_emr_database_*/saw_diagnose_emr_known_issues", "arn:{Partition}:glue:{Region}:{Account}:table/saw_diagnose_emr_database_*/saw_diagnose_emr_logs_table", "arn:{Partition}:glue:{Region}:{Account}:table/saw_diagnose_emr_database_*/j_*", "arn:{Partition}:glue:{Region}:{Account}:database/saw_diagnose_emr_database_*", "arn:{Partition}:glue:{Region}:{Account}:catalog" ] } ] }

지침

다음 단계에 따라 자동화를 구성합니다.

  1. 문서 AWS Systems Manager 아래에서 AWSSupport-D를 iagnoseEMRLogs WithAthena 탐색하십시오.

  2. Execute automation(자동화 실행)을 선택합니다.

  3. 입력 파라미터의 경우, 다음 내용을 입력합니다.

    • AutomationAssumeRole (선택 사항):

      Systems Manager Automation이 사용자를 대신하여 작업을 수행할 수 있게 해주는 AWS Identity and Access Management (IAM) 역할의 Amazon 리소스 이름 (). ARN 역할을 지정하지 않은 경우, Systems Manager Automation에서는 이 실행서를 시작하는 사용자의 권한을 사용합니다.

    • 클러스터ID (필수):

      아마존 EMR 클러스터 ID.

    • S3 LogLocation (선택 사항):

      아마존 S3 아마존 EMR 로그 위치. 경로 스타일의 URL Amazon S3 위치를 입력합니다 (예:). s3://amzn-s3-demo-bucket/myfolder/j-1K48XXXXXXHCB/ Amazon EMR 클러스터가 종료된 지 30 며칠 이상인 경우 이 파라미터를 제공하십시오.

    • S3 BucketName (필수):

      알려진 문제의 목록과 Amazon Athena 쿼리의 출력을 업로드하기 위한 Amazon S3 버킷 이름입니다. 버킷에는 퍼블릭 액세스 차단이 활성화되어 있어야 하며 Amazon EMR 클러스터와 동일한 AWS 리전 및 계정에 있어야 합니다.

    • 승인자 (필수):

      작업을 승인하거나 거부할 수 있는 AWS 인증된 주도자 목록. 사용자 이름, 사용자ARN, 역할 또는 역할 수임 형식 중 하나를 사용하여 주도자를 지정할 수 있습니다. IAM ARN IAM ARN 최대 승인자자 수는 10명입니다.

    • FetchNodeLogsOnly (선택 사항):

      true 설정하면 자동화가 Amazon EMR 애플리케이션 컨테이너 로그를 진단합니다. 기본값은 false입니다.

    • FetchContainersLogsOnly(선택 사항):

      true 설정하면 자동화가 Amazon EMR 컨테이너 로그를 진단합니다. 기본값은 false입니다.

    • EndSearchDate (선택 사항):

      로그 검색 종료일. 제공된 경우 자동화는 YYYY -MM-DD 형식으로 지정된 날짜까지 생성된 로그만 검색합니다 (예:). 2024-12-30

    • DaysToCheck (선택 사항):

      이 매개 변수가 제공되는 경우 지정된 로그를 소급하여 검색할 일수를 결정하는 데 이 매개 변수가 필요합니다. EndSearchDate EndSearchDate 최대값은 30 일수입니다. 기본값은 1입니다.

    • SearchKeywords (선택 사항):

      로그에서 검색할 키워드 목록 (쉼표로 구분됨). 키워드에는 작은따옴표나 큰따옴표를 포함할 수 없습니다.

  4. 실행을 선택합니다.

  5. 자동화가 시작됩니다.

  6. 문서는 다음 단계를 수행합니다.

    • getLogLocation:

      지정된 Amazon 클러스터 ID를 쿼리하여 Amazon S3 로그 위치를 검색합니다. EMR 자동화가 Amazon EMR 클러스터 ID에서 로그 위치를 쿼리할 수 없는 경우, Runbook은 S3LogLocation 입력 파라미터를 사용합니다.

    • branchOnValid로그:

      Amazon EMR 로그 위치를 확인합니다. 위치가 유효하다면 Amazon 로그에서 쿼리를 실행할 때 Amazon Athena의 잠재적 비용을 추정해 보십시오. EMR

    • estimateAthenaCosts:

      Amazon EMR 로그의 크기를 결정하고 로그 데이터세트에서 Athena 스캔을 실행하는 데 드는 예상 비용을 제공합니다. 비상업 지역 (AWS 비파티션) 의 경우 이 단계에서는 비용을 추정하지 않고 로그 크기만 제공합니다. 비용은 지정된 지역의 Athena 가격 책정 설명서를 사용하여 계산할 수 있습니다.

    • approveAutomation:

      지정된 담당자의 승인을 IAM 기다려 자동화의 다음 단계를 진행합니다. 승인 알림에는 Amazon 로그의 EMR Amazon Athena 스캔 예상 비용과 자동화를 통해 프로비저닝되는 리소스에 대한 세부 정보가 포함됩니다.

    • uploadKnownIssuesExecuteAthenaQueries:

      미리 정의된 알려진 문제를 파라미터에 지정된 Amazon S3 버킷에 S3BucketName 업로드합니다. AWS Glue 데이터베이스와 테이블을 생성합니다. 입력 파라미터를 기반으로 데이터베이스에서 Amazon Athena 쿼리를 실행합니다. AWS Glue

    • getQueryExecution상태:

      Amazon Athena 쿼리 실행 상태가 SUCCEEDED 될 때까지 기다립니다. Amazon Athena DML 쿼리는 Amazon EMR 클러스터 로그에서 오류와 예외를 검색합니다.

    • analyzeAthenaResults:

      Amazon Athena 결과를 분석하여 사전 정의된 매핑 세트에서 가져온 결과, 권장 사항 및 KC (지식 센터) 문서를 제공합니다.

    • getAnalyzeResults쿼리 ExecutionStatus 1:

      쿼리 실행 상태가 될 때까지 기다립니다. SUCCEEDED Amazon Athena DML 쿼리는 이전 DML 쿼리의 결과를 분석합니다. 이 분석 쿼리는 해결 방법 및 KC 문서와 일치하는 예외를 반환합니다.

    • getAnalyzeResults쿼리 2ExecutionStatus:

      쿼리 실행 상태가 될 때까지 기다립니다. SUCCEEDED Amazon Athena DML 쿼리는 이전 DML 쿼리의 결과를 분석합니다. 이 분석 쿼리는 각 Amazon S3 로그 경로에서 감지된 예외/오류 목록을 반환합니다.

    • printAthenaQueries메시지:

      Amazon Athena DML 쿼리 결과에 대한 링크를 인쇄합니다.

    • cleanupResources:

      생성된 AWS Glue 데이터베이스를 삭제하여 리소스를 정리하고 Amazon EMR logs 버킷에 생성된 알려진 문제 파일을 삭제합니다.

  7. 완료 후에는 Outputs 섹션에서 실행의 세부 결과를 검토하십시오.

    출력은 Athena 쿼리 결과에 대한 세 개의 링크를 제공합니다.

    • Amazon EMR 클러스터 로그에서 발견된 모든 오류 및 자주 발생하는 예외를 해당 로그 위치 (Amazon S3 접두사) 와 함께 나열합니다.

    • 문제 해결에 도움이 되는 권장 해결 방법 및 KC 문서와 함께 Amazon EMR 로그에 일치하는 알려진 고유한 예외 요약을 제공합니다.

    • Amazon S3 로그 경로에서 특정 오류 및 예외가 나타나는 위치에 대한 세부 정보를 제공하여 추가 진단을 지원합니다.

참조

Systems Manager Automation

AWS 서비스 설명서