AWSSupport-AnalyzeEMRLogs - AWS Systems Manager 자동화 실행서 참조

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

AWSSupport-AnalyzeEMRLogs

설명

이 실행서는 Amazon EMR 클러스터에서 작업을 실행하는 동안 오류를 식별하는 데 도움이 됩니다. 실행서는 파일 시스템에 정의된 로그 목록을 분석하고 미리 정의된 키워드 목록을 찾습니다. 이러한 로그 항목은 이벤트를 기반으로 필요한 작업을 수행할 수 있도록 Amazon CloudWatch Events 이벤트를 생성하는 데 사용됩니다. 선택적으로 실행서는 선택한 Amazon CloudWatch Logs 로그 그룹에 로그 항목을 게시합니다. 이 실행서는 현재 로그 파일에서 다음과 같은 오류 및 패턴을 찾습니다.

  • container_out_of_memory – YARN 컨테이너에 메모리가 부족하여 작업을 실행하지 못할 수 있습니다.

  • yarn_nodemanager_health: CORE 또는 TASK 노드의 디스크 공간이 부족하여 작업을 실행할 수 없습니다.

  • node_state_change: CORE 또는 TASK 노드가 MASTER 노드에 연결할 수 없습니다.

  • step_failure: EMR 단계가 실패했습니다.

  • no_core_nodes_running: 현재 실행 중인 CORE 노드가 없으며 클러스터가 비정상입니다.

  • hdfs_missing_blocks: 데이터 손실로 이어질 수 있는 누락된 HDFS 블록이 있습니다.

  • hdfs_high_util: HDFS 사용률이 높아 작업 및 클러스터 상태에 영향을 미칠 수 있습니다.

  • instance_controller_restart: Instance-Controller 프로세스가 다시 시작되었습니다. 이 프로세스는 클러스터 상태를 유지하는 데 필수적입니다.

  • instance_controller_restart_legacy: Instance-Controller 프로세스가 다시 시작되었습니다. 이 프로세스는 클러스터 상태를 유지하는 데 필수적입니다.

  • high_load: High Load Average가 감지되어 노드 상태 보고에 영향을 미치거나 시간 초과 또는 속도 저하를 초래할 수 있습니다.

  • yarn_node_blacklisted: CORE 또는 TASK 노드가 실행 중인 작업YARN에서 에 의해 블랙리스트에 올랐습니다.

  • yarn_node_lost: CORE 또는 TASK 노드가 LOST로 표시되었습니다. 연결 문제가 YARN발생할 수 있습니다.

지정하는 인스턴스와 ClusterID(와)과 연결된 인스턴스는 AWS Systems Manager에 의해 관리되어야 합니다. 이 자동화를 한 번 실행하거나, 특정 시간 간격으로 실행되도록 자동화를 예약하거나, 자동화로 이전에 생성한 일정을 제거할 수 있습니다. 이 런북은 Amazon EMR 릴리스 버전 5.20~6.30을 지원합니다.

이 자동화 실행(콘솔)

문서 유형

자동화

소유자

Amazon

플랫폼

Linux,macOS, Windows

Parameters

  • AutomationAssumeRole

    유형: 문자열

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

  • ClusterID

    유형: 문자열

    설명: (필수) 분석하려는 노드 로그가 있는 클러스터의 ID입니다.

  • Operation

    유형: 문자열

    유효한 값: Run Once | Schedule | Remove Schedule

    설명: (필수) 클러스터에서 수행할 작업입니다.

  • IntervalTime

    유형: 문자열

    유효한 값: 5 minutes | 10 minutes | 15 minutes

    설명: (선택 사항) 자동화 실행 사이의 시간입니다. 이 파라미터는 Operation 파라미터에 대해 Schedule 값을 지정하는 경우에만 적용할 수 있습니다.

  • LogToCloudWatchLogs

    유형: 문자열

    유효한 값: yes | no

    설명: (선택 사항) 이 파라미터의 값에 yes 를 지정하면 자동화는 CloudWatchLogGroup 파라미터에 지정된 이름으로 CloudWatch 로그 로그 로그 그룹을 생성하여 일치하는 로그 항목을 저장합니다.

  • CloudWatchLogGroup

    유형: 문자열

    설명: (선택 사항) 일치하는 CloudWatch 로그 항목을 저장할 로그 로그 로그 그룹의 이름입니다. 이 파라미터는 LogToCloudWatchLogs 파라미터에 대해 yes 값을 지정하는 경우에만 적용할 수 있습니다.

  • CreateLogInsightsDashboard

    유형: 문자열

    유효한 값: yes | no

    설명: (선택 사항) yes 를 지정하면 CloudWatch 대시보드가 아직 존재하지 않는 경우 대시보드가 생성됩니다. 이 파라미터는 LogToCloudWatchLogs 파라미터에 대해 yes 값을 지정하는 경우에만 적용할 수 있습니다.

  • CreateMetricFilters

    유형: 문자열

    유효한 값: yes | no

    설명: (선택 사항) CloudWatch 로그 로그 그룹에 대한 지표 필터를 생성할yes지 여부를 지정합니다. 이 파라미터는 LogToCloudWatchLogs 파라미터에 대해 yes 값을 지정하는 경우에만 적용할 수 있습니다.

필수 IAM 권한

실행서를 성공적으로 사용하려면 AutomationAssumeRole 파라미터에 다음 작업이 필요합니다.

  • ssm:StartAutomationExecution

  • ssm:GetDocument

  • ssm:ListDocuments

  • ssm:DescribeAutomationExecutions

  • ssm:DescribeAutomationStepExecutions

  • ssm:GetAutomationExecution

  • ssm:DescribeInstanceInformation

  • ssm:ListCommandInvocations

  • ssm:ListCommands

  • ssm:SendCommand

  • iam:CreateRole

  • iam:DeleteRole

  • iam:GetRolePolicy

  • iam:PutRolePolicy

  • iam:DeleteRolePolicy

  • iam:passrole

  • cloudformation:DescribeStacks

  • cloudformation:DeleteStack

  • cloudformation:CreateStack

  • events:DeleteRule

  • events:RemoveTargets

  • events:PutTargets

  • events:PutRule

  • events:DescribeRule

  • logs:DescribeLogGroups

  • logs:CreateLogGroup

  • logs:PutMetricFilter

  • cloudwatch:PutDashboard

  • elasticmapreduce:ListInstances

  • elasticmapreduce:DescribeCluster

문서 단계

  • aws:executeAwsApi - ClusterID 파라미터에 지정된 Amazon EMR 클러스터에 대한 정보를 수집합니다.

  • aws:branch - 입력을 기반으로 분기합니다.

    • 제공된 작업이 Run Once 또는 Schedule인 경우:

      • aws:assertAwsResourceProperty - 클러스터를 사용할 수 있는지 확인합니다.

      • aws:executeAwsApi - 클러스터에서 실행되는 모든 인스턴스IDs의 를 수집합니다.

      • aws:assertAwsResourceProperty - SSM 에이전트가 클러스터의 모든 인스턴스에서 실행 중인지 확인합니다.

      • aws:branch - 자동화를 한 번 실행하도록 지정했는지, 또는 일정에 따라 실행하도록 지정했는지에 따라 분기합니다.

        • 제공된 작업이 Run Once인 경우:

          • aws:branch - LogToCloudWatchLogs 파라미터에서 지정된 값을 기반으로 분기합니다.

            • LogToCloudWatchLogs 값이 yes인 경우:

              • aws:executeScript - 파라미터에 지정된 이름을 가진 CloudWatch 로그 로그 그룹이 CloudWatchLogGroup 이미 존재하는지 확인합니다. 그렇지 않은 경우, 지정된 이름으로 그룹이 생성됩니다.

              • aws:branch - CreateMetricFilters 파라미터에서 지정된 값을 기반으로 분기합니다.

                • CreateMetricFilters 값이 yes인 경우:

                  • aws:executeAwsApi - 각 지표 필터에 대해 12단계가 실행됩니다.

                  • aws:branch - CreateLogInsightsDashboard 파라미터에서 지정된 값을 기반으로 분기합니다.

                    • CreateLogInsightsDashboard 값이 yes인 경우:

                      • aws:executeAwsApi - 파라미터가 아직 존재하지 않는 경우 CloudWatchLogGroup 파라미터에 지정된 것과 동일한 이름으로 대시보드를 생성합니다 CloudWatch.

                    • CreateLogInsightsDashboard 값이 no인 경우:

                      • aws:runCommand - 쉘 스크립트를 실행하여 클러스터의 각 인스턴스에서 로그 패턴을 찾습니다.

                • CreateMetricFilters 값이 no인 경우:

                  • aws:branch - CreateLogInsightsDashboard 파라미터에서 지정된 값을 기반으로 분기합니다.

                    • CreateLogInsightsDashboard 값이 yes인 경우:

                      • aws:executeAwsApi - 파라미터가 아직 존재하지 않는 경우 CloudWatchLogGroup 파라미터에 지정된 것과 동일한 이름으로 대시보드를 생성합니다 CloudWatch.

                    • CreateLogInsightsDashboard 값이 no인 경우:

                      • aws:runCommand - 쉘 스크립트를 실행하여 클러스터의 각 인스턴스에서 로그 패턴을 찾습니다.

            • LogToCloudWatchLogs 값이 no인 경우:

              • aws:executeAwsApi - 쉘 스크립트를 실행하여 클러스터의 각 인스턴스에서 로그 패턴을 찾습니다.

        • 제공된 작업이 Schedule인 경우:

          • aws:createStack - 이 런북을 대상으로 하는 Amazon EventBridge 이벤트를 생성합니다.

    • 제공된 작업이 Remove Schedule인 경우:

      • aws:executeAwsApi - 클러스터에 일정이 있는지 확인합니다.

      • aws:deleteStack - 일정을 삭제합니다.

출력

GetClusterInformation.ClusterName

GetClusterInformation.ClusterState

ListingClusterInstances.InstanceIDs

CreatingScheduleCloudFormationStack.StackStatus

RemovingScheduleByDeletingScheduleCloudFormationStack.StackStatus

CheckIfLogGroupExists.출력

FindLogPatternOnEMRNode.CommandId