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

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

AWSSupport-AnalyzeEMRLogs

설명

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

  • container_out_of_memory – YARN 컨테이너의 메모리가 부족하여 실행 중인 작업이 실패할 수 있습니다.

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

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

  • 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: YARN이 실행 중인 작업에서 CORE 또는 TASK 노드를 블랙리스트에 올렸습니다.

  • yarn_node_lost: CORE 또는 TASK 노드가 YARN에 의해 손실된 것으로 표시되었습니다.연결 문제가 있을 수 있습니다.

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

이 자동화 실행(콘솔)

문서 유형

자동화

소유자

Amazon

플랫폼

Linux, macOS, Windows

Parameters

  • AutomationAssumeRole

    타입: 문자열

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

  • ClusterID

    타입: 문자열

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

  • Operation

    타입: 문자열

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

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

  • IntervalTime

    타입: 문자열

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

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

  • LogToCloudWatch로그

    타입: 문자열

    유효한 값: yes | no

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

  • CloudWatchLogGroup

    타입: 문자열

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

  • CreateLogInsightsDashboard

    타입: 문자열

    유효한 값: yes | no

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

  • CreateMetric필터

    타입: 문자열

    유효한 값: 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 - 클러스터에서 실행 중인 모든 인스턴스의 ID를 수집합니다.

      • 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 - 일정을 삭제합니다.

출력

GetCluster정보. ClusterName

GetCluster정보. ClusterState

ListingCluster인스턴스. 인스턴스 ID

CreatingScheduleCloudFormation스택. StackStatus

RemovingScheduleByDeletingScheduleCloudFormationStack.StackStatus

CheckIfLogGroup존재. 출력

FindLogPatternOn메르 노드. CommandId