CloudWatch Logs에 Amazon EMR 로그 게시 - Amazon EMR

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

CloudWatch Logs에 Amazon EMR 로그 게시

개요

Amazon EMR on EC2는 Amazon CloudWatch Logs와의 기본 통합을 제공하므로 클러스터 로그를 CloudWatch로 직접 전송할 수 있습니다.이 기능은 로그 관리를 간소화하고 모니터링, 문제 해결 및 분석을 위해 EMR 클러스터 로그에 대한 중앙 집중식 액세스를 제공합니다.

CloudWatch 로깅을 활성화하면 EMR 클러스터에서 CloudWatch 로그 그룹으로 로그를 자동으로 캡처하고 스트리밍할 수 있습니다. 여기에는 클러스터 작업 및 애플리케이션 동작에 대한 포괄적인 가시성을 제공하는 단계 실행 로그, Spark 드라이버 로그 및 Spark 실행기 로그가 포함됩니다.

CloudWatch 로깅 기능은 Amazon EMR 릴리스 7.11.0부터 사용할 수 있으며 클러스터를 생성할 때 MonitoringConfiguration 파라미터를 통해 구성됩니다. 활성화되면 로그가 생성될 때 CloudWatch로 자동으로 스트리밍되어 CloudWatch 콘솔 또는 API를 통해 로그 데이터에 거의 실시간으로 액세스할 수 있습니다.

사전 조건

EMR 클러스터에 대해 CloudWatch 로깅을 활성화하기 전에 다음 사전 조건이 충족되는지 확인합니다.

  • Amazon EMR 릴리스: 클러스터는 Amazon EMR 릴리스 7.11.0 이상을 사용해야 합니다.

  • CloudWatch 에이전트 애플리케이션: Amazon CloudWatch 에이전트가 클러스터에 설치되어 있어야 합니다.

  • IAM 권한: 클러스터의 EC2 인스턴스 프로파일에 필요한 CloudWatch Logs 권한이 있어야 합니다.

  • VPC 엔드포인트(프라이빗 서브넷용): 클러스터가 프라이빗 서브넷에 있는 경우 CloudWatch Logs에 대한 VPC 엔드포인트를 구성해야 합니다.

권한

CloudWatch 에이전트는 로그 그룹을 생성하고, 로그 스트림을 생성하고, CloudWatch Logs에 로그 이벤트를 쓰려면 특정 AWS Identity and Access Management(IAM) 권한이 필요합니다. 이러한 권한은 EMR 클러스터에서 사용하는 Amazon EC2 인스턴스 프로파일에 연결되어야 합니다.

필수 IAM 정책

Amazon EMR용 EC2 인스턴스 프로파일에 다음 정책을 추가하여 필요한 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:PutRetentionPolicy", "logs:DescribeLogStreams", "logs:DescribeLogGroups", "logs:CreateLogStream", "logs:CreateLogGroup" ], "Resource": "*", "Sid": "AllowCWACloudWatchLogs" } ] }

정책 연결

이 정책을 EMR용 EC2 인스턴스 프로파일에 연결하려면:

  1. IAM 콘솔로 이동합니다.

  2. EMR 클러스터에서 사용하는 인스턴스 프로파일을 찾습니다. 일반적으로 입니다EMR_EC2_DefaultRole.

  3. 새 인라인 정책을 생성하거나 위의 권한을 사용하여 고객 관리형 정책을 연결합니다.

  4. 정책 변경 사항을 저장합니다.

Amazon EMR의 IAM 역할에 대한 자세한 내용은 Amazon EMR 관리 안내서의 AWS 서비스 및 리소스에 대한 Amazon EMR 권한의 IAM 역할 구성을 참조하세요.

CloudWatch 로깅 구성

AWS 관리 콘솔 AWS CLI또는SDK를 통해 새 EMR 클러스터를 생성할 때 CloudWatch 로깅을 활성화할 수 있습니다. AWS SDKs 구성은 MonitoringConfiguration 파라미터를 통해 지정됩니다.

AWS 관리 콘솔 사용

콘솔에서 CloudWatch 로깅을 사용하여 클러스터를 생성하려면:

  1. AWS EMR 콘솔로 이동합니다.

  2. 클러스터 생성을 선택합니다.

  3. 이름 및 애플리케이션에서 7.11.0 이상의 Amazon EMR 릴리스를 선택합니다.

  4. 애플리케이션 번들에서 설치할 애플리케이션을 선택하고 Amazon CloudWatch Agent가 선택 항목에 포함되어 있는지 확인합니다.

  5. 클러스터 로그에서 클러스터별 로그를 Amazon CloudWatch에 게시하는 옵션을 선택합니다.

  6. (선택 사항) 다음 설정을 구성합니다.

    • 로그 그룹 이름 - 사용자 지정 로그 그룹 이름입니다. 기본값은 /aws/emr/{cluster_id}입니다.

    • 로그 스트림 접두사 - 로그 스트림 이름의 접두사 기본값은 입니다empty.

    • CloudWatch KMS 키 - 로그 암호화를 위한 KMS 키 ARN(선택 사항).

    • 로그 유형 - 캡처할 로그 유형을 선택합니다(기본값: 단계 및 Spark 드라이버).

  7. 나머지 클러스터 구성 설정을 완료합니다.

  8. 클러스터 생성을 선택합니다.

클러스터가 생성된 후 클러스터 관리 → Amazon CloudWatch의 로그 대상 아래의 EMR 클러스터 세부 정보 페이지에서 CloudWatch Logs 링크에 액세스할 수 있습니다. Amazon CloudWatch

사용 AWS CLI

create-cluster 명령과 AWS CLI 함께를 사용하여 CloudWatch 로깅을 활성화할 수 있습니다. CloudWatch 에이전트는 --applications 파라미터에 포함되어야 하며, 로깅은 --monitoring-configuration 파라미터를 통해 구성됩니다.

예: 기본 구성

EMR은 단계 로그와 Spark 드라이버 로그만 자동으로 캡처하여 기본 로그 그룹으로 전송합니다.

aws emr create-cluster \ --name "EMR cluster with CloudWatch Logs" \ --release-label emr-7.11.0 \ --applications Name=Spark Name=AmazonCloudWatchAgent \ --instance-type m7g.2xlarge \ --instance-count 3 \ --use-default-roles \ --monitoring-configuration '{ "CloudWatchLogConfiguration": { "Enabled": true } }'

기본 구성을 사용하는 경우:

  • 로그 그룹 이름: /aws/emr/{cluster_id} (이 클러스터 ID로 자동 대체{cluster_id}됨).

  • 로그 스트림 접두사: 비어 있음(접두사 없음).

  • 로그 유형: STEP_LOGSSPARK_DRIVER 활성화됨. 각 로그 유형은 STDOUT 및를 모두 캡처합니다STDERR.

  • 암호화: 고객 관리형 키 없음(기본적으로 CloudWatch 서버 측 암호화 사용)

예: 사용자 지정 구성

이 예제에서는 특정 로그 그룹 이름, KMS 암호화 및 선택적 로그 유형을 사용한 사용자 지정 구성을 보여줍니다.

aws emr create-cluster \ --name "EMR cluster with custom CloudWatch Logs" \ --release-label emr-7.11.0 \ --applications Name=Spark Name=AmazonCloudWatchAgent \ --instance-type m7g.2xlarge \ --instance-count 3 \ --use-default-roles \ --monitoring-configuration '{ "CloudWatchLogConfiguration": { "Enabled": true, "LogGroupName": "/my-company/emr/production", "LogStreamNamePrefix": "cluster-prod", "EncryptionKeyArn": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012", "LogTypes": { "STEP_LOGS": ["STDOUT", "STDERR"], "SPARK_DRIVER": ["STDOUT", "STDERR"], "SPARK_EXECUTOR": ["STDERR", "STDOUT"] } } }'

이 구성은 다음과 같습니다.

  • 사용자 지정 로그 그룹에 로그를 생성합니다/my-company/emr/production.

  • 모든 로그 스트림 이름 앞에를 붙입니다cluster-prod.

  • 지정된 KMS 키를 사용하여 로그를 암호화합니다.

  • 단계 로그, Spark 드라이버 로그 및 Spark 실행기 로그와 같은 모든 로그 유형을 캡처합니다.

Amazon EMR AWS CLI 에서를 사용하는 방법에 대한 자세한 내용은 AWS CLI EMR에 대한 명령 참조를 참조하세요.

구성 참조

CloudWatchLogConfiguration 파라미터

CloudWatchLogConfigurationv 객체는 다음 파라미터를 지원합니다.

CloudWatchLogConfiguration 파라미터
파라미터 Type 필수 설명
Enabled 부울 CloudWatch 로깅을 활성화true하려면 로 설정합니다. 비활성화false하려면 로 설정합니다.
LogGroupName 문자열 No CloudWatch 로그 그룹 이름입니다. 기본값: /aws/emr/{cluster_id}
LogStreamNamePrefix 문자열 No 로그 스트림 이름의 접두사입니다. 기본값: 빈 문자열
EncryptionKeyArn 문자열 No 로그 암호화를 위한 KMS 키의 ARN입니다. 지정하지 않으면 CloudWatch 서버 측 암호화로 로그가 암호화됩니다.
LogTypes 객체 아니요 캡처할 로그 유형을 지정합니다. 기본값: STEP_LOGS STDOUT 및 STDERR이 있는 및 SPARK_DRIVER 유형입니다.

로그 유형

Amazon EMR은 표준 출력과 표준 오류 스트림을 모두 캡처하는 세 가지 로그 유형을 지원합니다.

지원되는 로그 유형
로그 유형 설명 사용 가능한 스트림
STEP_LOGS 단계 컨트롤러 로그를 포함한 EMR 단계 실행 로그 STDOUT, STDERR
SPARK_DRIVER Spark 애플리케이션의 Apache Spark 드라이버 로그 STDOUT, STDERR
SPARK_EXECUTOR 작업자 노드의 Apache Spark 실행기 로그 STDOUT, STDERR
기본 로그 유형 구성

LogTypes 파라미터를 지정하지 않으면 EMR은 다음과 같은 기본 구성을 사용합니다.

"LogTypes": { "STEP_LOGS": ["STDOUT", "STDERR"], "SPARK_DRIVER": ["STDOUT", "STDERR"] }
사용자 지정 로그 유형 구성

LogTypes 파라미터를 명시적으로 지정하여 캡처할 로그 유형을 사용자 지정할 수 있습니다. 예를 들어 단계 로그만 캡처하려면

"LogTypes": { "STEP_LOGS": ["STDOUT", "STDERR"] }

또는 Spark 드라이버에서 표준 오류만 캡처하려면:

"LogTypes": { "SPARK_DRIVER": ["STDERR"] }

로그 그룹 및 스트림 이름 지정

CloudWatch는 로그를 로그 그룹 및 로그 스트림으로 구성합니다.

  • 로그 그룹: 동일한 보존, 모니터링 및 액세스 제어 설정을 공유하는 로그 스트림 모음입니다.

    • 기본 이름: /aws/emr/{cluster_id}

    • 사용자 지정 이름: 지정한 유효한 CloudWatch 로그 그룹 이름입니다.

  • 로그 스트림: 단일 소스의 로그 이벤트 시퀀스:

    • 이름 지정 패턴:

      • 단계 로그: {prefix}/steps/{step_id}/{file_name}.

      • Spark 드라이버 및 실행기 로그: {prefix}/applications/{application_id}/{container_id}/{file_name}

    • 예시:

      • /steps/s-ABCDEFG123456/stdout

      • cluster-prod/steps/s-ABCDEFG123456/stderr

      • /applications/application_1234567890_0001/container_1234567890_0001_01_000001/stdout

를 사용하여 로그 암호화 AWS KMS

AWS Key Management Service (KMS)를 사용하여 CloudWatch 저장 로그를 암호화할 수 있습니다. 암호화를 활성화하려면:

  1. EMR 클러스터와 동일한 AWS 리전에서 KMS 키를 생성하거나 식별합니다.

  2. KMS 키 정책이 CloudWatch Logs 서비스가 키를 사용하도록 허용하는지 확인합니다.

  3. EncryptionKeyArn 파라미터를 추가합니다CloudWatchLogConfiguration.

CloudWatch Logs 데이터 암호화에 대한 자세한 내용은를 사용하여 CloudWatch Logs에서 로그 데이터 암호화를 참조하세요 AWS Key Management Service.

KMS 암호화를 사용한 예제

{ "CloudWatchLogConfiguration": { "Enabled": true, "EncryptionKeyArn": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } }

CloudWatch에서 로그 보기

클러스터가 CloudWatch 로깅이 활성화된 상태로 실행되면 CloudWatch 콘솔 또는 API를 통해 로그를 보고 분석할 수 있습니다.

EMR 콘솔에서 로그 액세스

클러스터 로그에 액세스하는 가장 빠른 방법은 EMR 콘솔에서 직접 액세스하는 것입니다.

  1. Amazon EMR 콘솔로 이동합니다.

  2. 클러스터 목록에서 클러스터를 선택합니다.

  3. 클러스터 세부 정보 페이지에서 클러스터 관리 섹션을 찾습니다.

  4. Amazon CloudWatch에서 로그 대상 링크를 클릭합니다.

이 링크를 클릭하면 클러스터의 로그 그룹으로 필터링된 CloudWatch Logs 콘솔로 바로 이동합니다.

CloudWatch 콘솔에서 로그 액세스

CloudWatch에서 로그로 수동으로 이동하려면:

  1. CloudWatch 콘솔을 엽니다.

  2. 탐색 창에서 로그 그룹을 선택합니다.

  3. 로그 그룹 찾기(기본값: /aws/emr/{cluster_id} 또는 사용자 지정 로그 그룹 이름)

  4. 사용 가능한 로그 스트림을 보려면 로그 그룹을 선택합니다.

  5. 로그 스트림을 선택하여 로그 이벤트를 봅니다.

CloudWatch Logs에 대한 자세한 내용은 Amazon CloudWatch Logs User Guide를 참조하세요.

고려 사항

CloudWatch 에이전트 동작

Amazon CloudWatch 에이전트는 지표와 로깅 기능을 모두 제공합니다.

  • CloudWatch 에이전트만 활성화하면( 제외MonitoringConfiguration) CloudWatch 지표만 CloudWatch에 게시됩니다. 로그가 전송되지 않습니다.

  • CloudWatch 로깅을 활성화하려면 CloudWatch Agent 애플리케이션과를 사용하는 MonitoringConfiguration 파라미터가 모두 필요합니다CloudWatchLogConfiguration. 이렇게 하면 지표와 로깅이 함께 활성화됩니다.

CloudWatch 로깅만 활성화(CloudWatch 지표 비활성화)

CloudWatch 로깅을 활성화하지만 지표 수집 기능을 비활성화하려면 지표 내보내기를 중지하도록 CloudWatch 에이전트를 구성할 수 있습니다. 클러스터 구성에 다음 분류를 추가합니다.

[ { "Classification": "emr-metrics", "Properties": {}, "Configurations": [ { "Classification": "emr-system-metrics", "Properties": {}, "Configurations": [] } ] } ]

CloudWatch 지표에 대한 자세한 내용은 Amazon CloudWatch를 사용하여 지표 모니터링을 참조하세요.

알려진 제한 사항

로그 업로드 중 지표 데이터 포인트:

CloudWatch 로깅이 활성화되면 로그 활동이 많은 기간, 특히 단계 제출 중에 CloudWatch 지표 데이터의 간헐적인 격차가 관찰될 수 있습니다. 이는 단계가 제출될 때 EMR 인스턴스 컨트롤러가 CloudWatch Agent를 다시 시작하여 새 로그 구성을 적용하여 지표 수집을 일시적으로 중단하기 때문에 발생합니다. 이는 로그 전송 또는 클러스터 기능에 영향을 주지 않습니다.

프라이빗 서브넷 요구 사항

프라이빗 서브넷의 EMR 클러스터에 대한 CloudWatch Logs에 로그를 게시하려면 CloudWatch Logs VPC 엔드포인트를 생성하고 클러스터의 VPC와 연결합니다.

CloudWatch Logs 엔드포인트에 대한 자세한 내용은 AWS 일반 참조 안내서Amazon CloudWatch Logs 엔드포인트 및 할당량을 참조하세요.

비용 고려 사항

CloudWatch Logs 요금은 다음을 기반으로 합니다.

  • 데이터 수집: CloudWatch에 수집된 로그 데이터의 볼륨

  • 스토리지: 보존 설정에 따라 저장된 로그 데이터의 양

  • 데이터 분석: CloudWatch Logs Insights를 사용하여 쿼리 실행

비용 최적화:

  • 로그 그룹에 적절한 로그 보존 기간을 설정합니다.

  • 선택적 로그 유형을 사용하여 필요한 로그만 캡처합니다.

  • 더 저렴한 비용으로 장기 로그 스토리지에 Amazon S3 로깅을 사용하는 것이 좋습니다.

현재 요금 정보는 Amazon CloudWatch 요금을 참조하세요.

추가 리소스