Amazon CloudWatch 지표를 사용하여 AWS Glue 모니터링 - AWS Glue

Amazon CloudWatch 지표를 사용하여 AWS Glue 모니터링

AWS Glue 작업 프로파일러를 사용하여 AWS Glue 작업을 프로파일링하고 모니터링할 수 있습니다. AWS Glue 작업에서 원시 데이터를 수집한 후 Amazon CloudWatch에 저장된 판독이 가능한 지표로 실시간에 가깝게 처리합니다. 이러한 통계는 CloudWatch에서 보관 및 집계되므로 기록 정보에 액세스하여 애플리케이션이 어떻게 실행되고 있는지 전체적으로 더 잘 파악할 수 있습니다.

참고

작업 지표를 활성화하고 CloudWatch 사용자 지정 지표를 생성하면 추가 요금이 발생할 수 있습니다. 자세한 내용은 Amazon CloudWatch 요금을 참조하세요.

AWS Glue 지표 개요

AWS Glue는 사용자와 상호 작용할 때 지표를 CloudWatch로 전송합니다. AWS Glue 콘솔(기본 방법), CloudWatch 콘솔 대시보드 또는 AWS Command Line Interface(AWS CLI)를 사용하여 이러한 지표를 볼 수 있습니다.

AWS Glue 콘솔 대시보드를 사용하여 지표를 보려면

작업에 대한 요약이나 세부 그래프, 또는 작업 실행에 대한 세부 그래프를 볼 수 있습니다. AWS Glue 콘솔 대시보드에서 액세스할 수 있는 그래프 및 지표에 대한 자세한 내용은 AWS Glue 콘솔 작업 관련 작업 단원을 참조하십시오.

  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/glue/에서 AWS Glue 콘솔을 엽니다.

  2. 탐색 창에서 작업을 선택합니다.

  3. 작업 목록에서 작업을 선택합니다.

  4. 지표 탭을 선택합니다.

  5. 더 많은 세부 지표를 보려면 View Additional Metrics(추가 지표 보기)를 선택합니다.

CloudWatch 콘솔 대시보드를 사용하여 지표를 보려면

지표는 먼저 서비스 네임스페이스별로 그룹화된 다음, 각 네임스페이스 내에서 다양한 차원 조합별로 그룹화됩니다.

  1. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

  2. 탐색 창에서 지표(Metrics)를 선택합니다.

  3. Glue 네임스페이스를 선택합니다.

AWS CLI를 사용하여 지표 보기
  • 명령 프롬프트에서 다음 명령을 사용합니다.

    aws cloudwatch list-metrics --namespace Glue

AWS Glue는 30초마다 CloudWatch에 지표를 보고하며, CloudWatch 지표 대시보드는 1분마다 이러한 지표를 표시하도록 구성되어 있습니다. AWS Glue 지표는 이전에 보고한 값의 델타 값을 나타냅니다. 해당하는 경우 지표 대시보드는 전체 마지막 분에 대한 값을 구하기 위해 30초 값을 집계(합계)합니다. AWS Glue 지표는 스크립트에서 GlueContext를 초기화할 때 활성화되고 대개 Apache Spark 작업이 끝날 때에만 업데이트됩니다. 이러한 지표는 지금까지 완료된 모든 Spark 작업의 집계 값을 나타냅니다.

그러나 AWS Glue가 CloudWatch로 전달하는 Spark 지표는 일반적으로 보고되는 시점의 현재 상태를 나타내는 절대 값입니다. AWS Glue는 이 지표를 30초마다 CloudWatch로 보고하며, 일반적으로 지표 대시보드에는 마지막 1분 동안 받은 데이터 포인트의 평균이 표시됩니다.

AWS Glue 지표 이름은 모두 다음 접두사 유형 중 하나로 시작합니다.

  • glue.driver. – 이 접두사로 시작하는 이름의 지표는 Spark 드라이버의 모든 실행기에서 집계된 AWS Glue 지표 또는 Spark 드라이버에 해당하는 Spark 지표를 나타냅니다.

  • glue.executorId.executorId는 특정 Spark 실행기의 번호입니다. 이는 로그에 나열된 실행기에 해당됩니다.

  • glue.ALL. – 이름이 이 접두사로 시작하는 지표는 모든 Spark 실행기의 값을 집계합니다.

AWS Glue 지표

AWS Glue는 30초 간격으로 다음 지표를 프로파일링하여 CloudWatch로 전송하며, AWS Glue 지표 대시보드는 1분마다 이들 지표를 보고합니다.

지표 설명

glue.driver.aggregate.bytesRead

모든 실행기에서 실행되는 모든 완료된 Spark 태스크가 모든 데이터 원본에서 읽은 바이트 수.

유효 차원: JobName(AWS Glue 작업 이름), JobRunId(JobRun ID. 또는 ALL), Type(개수).

유효 통계: SUM. 이 지표는 마지막으로 보고된 값의 델타 값입니다. 그러므로 AWS Glue 지표 대시보드에서 SUM 통계가 집계에 사용됩니다.

단위: 바이트

다음을 모니터링하는 데 사용:

  • 읽은 바이트 수.

  • 작업 진행 상황.

  • JDBC 데이터 원본.

  • 작업 북마크 문제.

  • 작업 실행 간 편차.

이 지표는 glue.ALL.s3.filesystem.read_bytes 지표와 동일한 방식으로 사용할 수 있으며(차이는 이 지표가 Spark 작업 종료 시 업데이트된다는 것) 비 S3 데이터 원본도 캡처합니다.

glue.driver.aggregate.elapsedTime

밀리초 단위의 ETL 경과 시간(작업 부트스트랩 시간은 포함하지 않음).

유효 차원: JobName(AWS Glue 작업 이름), JobRunId(JobRun ID. 또는 ALL), Type(개수).

유효 통계: SUM. 이 지표는 마지막으로 보고된 값의 델타 값입니다. 그러므로 AWS Glue 지표 대시보드에서 SUM 통계가 집계에 사용됩니다.

단위: 밀리초

작업 실행이 평균적으로 얼마나 오래 실행되는지 측정하는 데 사용할 수 있습니다.

이 데이터는 다음과 같이 사용할 수 있습니다.

  • 스트래글러에 경보를 설정합니다.

  • 작업 실행 간 편차를 측정합니다.

glue.driver.aggregate.numCompletedStages

작업에서 완료된 단계 수.

유효 차원: JobName(AWS Glue 작업 이름), JobRunId(JobRun ID. 또는 ALL), Type(개수).

유효 통계: SUM. 이 지표는 마지막으로 보고된 값의 델타 값입니다. 그러므로 AWS Glue 지표 대시보드에서 SUM 통계가 집계에 사용됩니다.

단위: 수

다음을 모니터링하는 데 사용:

  • 작업 진행 상황.

  • 다른 지표와 상관관계가 계산되는 경우, 작업 실행의 단계별 타임라인.

이 데이터는 다음과 같이 사용할 수 있습니다.

  • 작업 실행에서 가장 까다로운 단계를 식별합니다.

  • 여러 작업 실행에서 상관관계가 있는 스파이크(까다로운 단계)에 대해 경보를 설정합니다.

glue.driver.aggregate.numCompletedTasks

작업에서 상관관계가 있는 태스크 수.

유효 차원: JobName(AWS Glue 작업 이름), JobRunId(JobRun ID. 또는 ALL), Type(개수).

유효 통계: SUM. 이 지표는 마지막으로 보고된 값의 델타 값입니다. 그러므로 AWS Glue 지표 대시보드에서 SUM 통계가 집계에 사용됩니다.

단위: 수

다음을 모니터링하는 데 사용:

  • 작업 진행 상황.

  • 특정 단계 내 병렬화.

glue.driver.aggregate.numFailedTasks

실패한 태스크 수.

유효 차원: JobName(AWS Glue 작업 이름), JobRunId(JobRun ID. 또는 ALL), Type(개수).

유효 통계: SUM. 이 지표는 마지막으로 보고된 값의 델타 값입니다. 그러므로 AWS Glue 지표 대시보드에서 SUM 통계가 집계에 사용됩니다.

단위: 수

다음을 모니터링하는 데 사용:

  • 작업 태스크가 실패한 원인인 데이터 이상 현상.

  • 작업 태스크가 실패한 원인인 클러스터 이상 현상.

  • 작업 태스크가 실패한 원인인 스크립트 이상 현상.

이 데이터를 사용하여 데이터, 클러스터 또는 스크립트 이상을 암시하는 실패 증가에 대해 경보를 설정할 수 있습니다.

glue.driver.aggregate.numKilledTasks

중지된 태스크 수.

유효 차원: JobName(AWS Glue 작업 이름), JobRunId(JobRun ID. 또는 ALL), Type(개수).

유효 통계: SUM. 이 지표는 마지막으로 보고된 값의 델타 값입니다. 그러므로 AWS Glue 지표 대시보드에서 SUM 통계가 집계에 사용됩니다.

단위: 수

다음을 모니터링하는 데 사용:

  • 태스크가 중지된 예외(OOM)가 발생한 데이터 스큐 이상 현상.

  • 태스크가 중지된 예외(OOM)가 발생한 스크립트 이상 현상.

이 데이터는 다음과 같이 사용할 수 있습니다.

  • 데이터 이상 현상을 나타내는 실패 증가에 대한 경보를 설정합니다.

  • 클러스터 이상 현상을 나타내는 실패 증가에 대한 경보를 설정합니다.

  • 스크립트 이상 현상을 나타내는 실패 증가에 대한 경보를 설정합니다.

glue.driver.aggregate.recordsRead

모든 실행기에서 실행되는 모든 완료된 Spark 작업이 모든 데이터 원본에서 읽은 레코드 수.

유효 차원: JobName(AWS Glue 작업 이름), JobRunId(JobRun ID. 또는 ALL), Type(개수).

유효 통계: SUM. 이 지표는 마지막으로 보고된 값의 델타 값입니다. 그러므로 AWS Glue 지표 대시보드에서 SUM 통계가 집계에 사용됩니다.

단위: 수

다음을 모니터링하는 데 사용:

  • 읽은 레코드 수.

  • 작업 진행 상황.

  • JDBC 데이터 원본.

  • 작업 북마크 문제.

  • 며칠에 걸친 작업 실행의 스큐.

이 지표는 glue.ALL.s3.filesystem.read_bytes 지표와 동일한 방식으로 사용할 수 있으며, 차이는 이 지표가 Spark 작업 종료 시 업데이트된다는 것입니다.

glue.driver.aggregate.shuffleBytesWritten

이전 보고 이후 데이터 셔플을 위해 모든 실행기가 기록한 바이트 수(AWS Glue 지표 대시보드가 이 목적으로 이전 1분 동안 기록된 바이트 수로 집계).

유효 차원: JobName(AWS Glue 작업 이름), JobRunId(JobRun ID. 또는 ALL), Type(개수).

유효 통계: SUM. 이 지표는 마지막으로 보고된 값의 델타 값입니다. 그러므로 AWS Glue 지표 대시보드에서 SUM 통계가 집계에 사용됩니다.

단위: 바이트

다음을 모니터링하는 데 사용: 작업(대규모 joins, groupBy, repartition, coalesce) 내 데이터 셔플.

이 데이터는 다음과 같이 사용할 수 있습니다.

  • 대규모 입력 파일을 추가 처리 전에 재파티셔닝 또는 압축 해제합니다.

  • 데이터를 보다 균일하게 다시 파티셔닝하여 핫 키를 방지합니다.

  • joins 또는 groupBy 작업 전에 데이터를 사전 필터링합니다.

glue.driver.aggregate.shuffleLocalBytesRead

이전 보고 이후 데이터 셔플을 위해 모든 실행기가 읽은 바이트 수(AWS Glue 지표 대시보드가 이 목적으로 이전 1분 동안 읽은 바이트 수로 집계).

유효 차원: JobName(AWS Glue 작업 이름), JobRunId(JobRun ID. 또는 ALL), Type(개수).

유효 통계: SUM. 이 지표는 마지막으로 보고된 값의 델타 값입니다. 그러므로 AWS Glue 지표 대시보드에서 SUM 통계가 집계에 사용됩니다.

단위: 바이트

다음을 모니터링하는 데 사용: 작업(대규모 joins, groupBy, repartition, coalesce) 내 데이터 셔플.

이 데이터는 다음과 같이 사용할 수 있습니다.

  • 대규모 입력 파일을 추가 처리 전에 재파티셔닝 또는 압축 해제합니다.

  • 핫 키를 사용하여 데이터를 보다 균일하게 다시 파티셔닝합니다.

  • joins 또는 groupBy 작업 전에 데이터를 사전 필터링합니다.

glue.driver.BlockManager.disk.diskSpaceUsed_MB

모든 실행기에서 사용된 디스크 공간의 메가바이트 수.

유효 차원: JobName(AWS Glue 작업 이름), JobRunId(JobRun ID. 또는 ALL), Type(게이지).

유효 통계: Average. 이 Spark 지표는 절대값으로 보고됩니다.

단위: 메가바이트

다음을 모니터링하는 데 사용:

  • 캐싱된 RDD 파티션을 나타내는 블록에 사용된 디스크 공간.

  • 중간 셔플 출력을 나타내는 블록에 사용된 디스크 공간.

  • 브로드캐스트를 나타내는 블록에 사용된 디스크 공간.

이 데이터는 다음과 같이 사용할 수 있습니다.

  • 디스크 사용량 증가로 인한 작업 실패를 식별합니다.

  • 분산 또는 셔플이 발생하는 대규모 파티션을 식별합니다.

  • 이 문제를 해결하려면 프로비저닝된 DPU 용량을 증가시킵니다.

glue.driver.ExecutorAllocationManager.executors.numberAllExecutors

능동적으로 실행 중인 실행기 수.

유효 차원: JobName(AWS Glue 작업 이름), JobRunId(JobRun ID. 또는 ALL), Type(게이지).

유효 통계: Average. 이 Spark 지표는 절대값으로 보고됩니다.

단위: 수

다음을 모니터링하는 데 사용:

  • 작업 활동.

  • 스트래글링 실행기(몇 개의 실행기만 실행 중)

  • 현재의 실행기 수준 병렬화.

이 데이터는 다음과 같이 사용할 수 있습니다.

  • 클러스터 활용도가 저하되기 전에 대규모 입력 파일을 재파티셔닝 또는 압축 해제합니다.

  • 스트래글러 시나리오로 인한 단계 또는 작업 예외 지연을 식별합니다.

  • • 추가 DPU를 프로비저닝해야 하는 백로그를 이해하기 위해 numberMaxNeededExecutors와 비교합니다.

glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors

현재 로드를 충족하는 데 필요한 최대 작업 (능동 실행 및 보류) 실행기 수.

유효 차원: JobName(AWS Glue 작업 이름), JobRunId(JobRun ID. 또는 ALL), Type(게이지).

유효한 통계: Maximum. 이 Spark 지표는 절대값으로 보고됩니다.

단위: 수

다음을 모니터링하는 데 사용:

  • 작업 활동.

  • DPU 용량 또는 중지/실패한 실행기로 인해 가용 실행기가 없어 아직 예약되지 않은 보류 태스크의 현재 실행기 수준 병렬화 및 백로그.

이 데이터는 다음과 같이 사용할 수 있습니다.

  • 예약 대기열의 보류/백로그를 식별합니다.

  • 스트래글러 시나리오로 인한 단계 또는 작업 예외 지연을 식별합니다.

  • 추가 DPU를 프로비저닝해야 하는 백로그를 이해하기 위해 numberAllExecutors와 비교합니다.

  • 보류 실행기 백로그를 교정하려면 프로비저닝된 DPU 용량을 증가시킵니다.

glue.driver.jvm.heap.usage

glue.executorId.jvm.heap.usage

glue.ALL.jvm.heap.usage

드라이버, executorId로 식별되는 실행기 또는 모든 실행기에 대해 이 드라이버용 JVM 힙이 사용하는 메모리 부분(규모: 0-1).

유효 차원: JobName(AWS Glue 작업 이름), JobRunId(JobRun ID. 또는 ALL), Type(게이지).

유효 통계: Average. 이 Spark 지표는 절대값으로 보고됩니다.

단위: 퍼센트

다음을 모니터링하는 데 사용:

  • glue.driver.jvm.heap.usage를 사용하여 드라이버 메모리 부족 상태(OOM).

  • glue.ALL.jvm.heap.usage를 사용하여 실행기 메모리 부족 상태(OOM).

이 데이터는 다음과 같이 사용할 수 있습니다.

  • 메모리 사용 실행기 ID 및 단계를 식별합니다.

  • 스트래글링 실행기 ID 및 단계를 식별합니다.

  • 드라이버 메모리 부족(OOM) 상태를 식별합니다.

  • 실행기 메모리 부족(OOM) 상태를 식별하고 실행기 로그에서 스택 트레이스를 가져올 수 있도록 해당 실행기 ID를 확인합니다.

  • 스트래글러 또는 메모리 부족 상태(OOM)가 발생하는 데이터 스큐를 가질 수 있는 파일 또는 파티션을 식별합니다.

glue.driver.jvm.heap.used

glue.executorId.jvm.heap.used

glue.ALL.jvm.heap.used

드라이버, executorId로 식별되는 실행기 또는 모든 실행기에 대해 JVM 힙이 사용하는 메모리 바이트 수.

유효 차원: JobName(AWS Glue 작업 이름), JobRunId(JobRun ID. 또는 ALL), Type(게이지).

유효 통계: Average. 이 Spark 지표는 절대값으로 보고됩니다.

단위: 바이트

다음을 모니터링하는 데 사용:

  • 드라이버 메모리 부족 상태(OOM).

  • 실행기 메모리 부족 상태(OOM).

이 데이터는 다음과 같이 사용할 수 있습니다.

  • 메모리 사용 실행기 ID 및 단계를 식별합니다.

  • 스트래글링 실행기 ID 및 단계를 식별합니다.

  • 드라이버 메모리 부족(OOM) 상태를 식별합니다.

  • 실행기 메모리 부족(OOM) 상태를 식별하고 실행기 로그에서 스택 트레이스를 가져올 수 있도록 해당 실행기 ID를 확인합니다.

  • 스트래글러 또는 메모리 부족 상태(OOM)가 발생하는 데이터 스큐를 가질 수 있는 파일 또는 파티션을 식별합니다.

glue.driver.s3.filesystem.read_bytes

glue.executorId.s3.filesystem.read_bytes

glue.ALL.s3.filesystem.read_bytes

이전 보고 이후 드라이버, executorId로 식별되는 실행기 또는 모든 실행기가 Amazon S3에서 읽은 바이트 수(AWS Glue 지표 대시보드가 이 목적으로 이전 1분 동안 읽은 바이트 수로 집계).

유효 차원: JobName, JobRunId, Type(게이지).

유효 통계: SUM. 이 지표는 마지막으로 보고된 값의 델타 값입니다. 그러므로 AWS Glue 지표 대시보드에서 SUM 통계가 집계에 사용됩니다. AWS Glue 지표 대시보드에서 곡선 아래 영역은 두 작업 실행이 읽은 바이트 수를 시각적으로 비교하는 데 사용할 수 있습니다.

단위: 바이트

다음을 모니터링하는 데 사용:

  • ETL 데이터 이동.

  • 작업 진행 상황.

  • 작업 북마크 문제(처리, 재처리 및 건너뛴 데이터).

  • 외부 데이터 원본으로부터 수집 속도와 읽기를 비교.

  • 작업 실행 간 편차.

결과 데이터는 다음 용도로 사용할 수 있습니다.

  • DPU 용량 계획.

  • 작업 실행 및 작업 단계를 위해 읽은 데이터의 대규모 스파이크 또는 딥에 대한 경보를 설정.

glue.driver.s3.filesystem.write_bytes

glue.executorId.s3.filesystem.write_bytes

glue.ALL.s3.filesystem.write_bytes

이전 보고 이후 드라이버, executorId로 식별되는 실행기 또는 모든 실행기가 Amazon S3에 쓴 바이트 수(AWS Glue 지표 대시보드가 이 목적으로 이전 1분 동안 기록된 바이트 수로 집계).

유효 차원: JobName, JobRunId, Type(게이지).

유효 통계: SUM. 이 지표는 마지막으로 보고된 값의 델타 값입니다. 그러므로 AWS Glue 지표 대시보드에서 SUM 통계가 집계에 사용됩니다. AWS Glue 지표 대시보드에서 곡선 아래 영역은 두 작업 실행이 기록한 바이트 수를 시각적으로 비교하는 데 사용할 수 있습니다.

단위: 바이트

다음을 모니터링하는 데 사용:

  • ETL 데이터 이동.

  • 작업 진행 상황.

  • 작업 북마크 문제(처리, 재처리 및 건너뛴 데이터).

  • 외부 데이터 원본으로부터 수집 속도와 읽기를 비교.

  • 작업 실행 간 편차.

이 데이터는 다음과 같이 사용할 수 있습니다.

  • DPU 용량 계획.

  • 작업 실행 및 작업 단계를 위해 읽은 데이터의 대규모 스파이크 또는 딥에 대한 경보를 설정.

glue.driver.streaming.numRecords

마이크로 배치로 수신된 레코드 수입니다. 이 지표는 AWS Glue 버전 2.0 이상의 AWS Glue 스트리밍 작업에만 사용할 수 있습니다.

유효 차원: JobName(AWS Glue 작업 이름), JobRunId(JobRun ID. 또는 ALL), Type(개수).

유효 통계: Sum, Maximum, Minimum, Average, Percentile

단위: 수

다음을 모니터링하는 데 사용:

  • 읽은 레코드 수.

  • 작업 진행 상황.

glue.driver.streaming.batchProcessingTimeInMs

배치를 처리하는 데 걸리는 시간(밀리초)입니다. 이 지표는 AWS Glue 버전 2.0 이상의 AWS Glue 스트리밍 작업에만 사용할 수 있습니다.

유효 차원: JobName(AWS Glue 작업 이름), JobRunId(JobRun ID. 또는 ALL), Type(개수).

유효 통계: Sum, Maximum, Minimum, Average, Percentile

단위: 수

다음을 모니터링하는 데 사용:

  • 작업 진행 상황.

  • 스크립트 성능입니다.

glue.driver.system.cpuSystemLoad

glue.executorId.system.cpuSystemLoad

glue.ALL.system.cpuSystemLoad

드라이버, executorId로 식별되는 실행기 또는 모든 실행기가 사용한 CPU 시스템 부하 부분(규모: 0-1).

유효 차원: JobName(AWS Glue 작업 이름), JobRunId(JobRun ID. 또는 ALL), Type(게이지).

유효 통계: Average. 이 지표는 절대값으로 보고됩니다.

단위: 퍼센트

다음을 모니터링하는 데 사용:

  • 드라이버 CPU 부하.

  • 실행기 CPU 로드.

  • 작업에서 CPU 바운드 또는 IO 바운드 실행기를 탐지.

이 데이터는 다음과 같이 사용할 수 있습니다.

  • IO 지표(읽은 바이트/셔플 바이트, 태스크 병렬화) 및 최대 필요 실행기 지표와 함께 DPU 용량 계획.

  • CPU/IO 바운드 비율을 식별합니다. 이를 통해 CPU 사용률이 저조한, 분리 가능 데이터 세트의 장기 실행 작업을 위해 프로비저닝된 용량을 재파티셔닝 및 증가할 수 있습니다.

AWS Glue 지표의 차원

AWS Glue 지표는 AWS Glue 네임스페이스를 사용하며 다음 차원의 지표를 제공합니다.

측정기준 설명

JobName

이 차원은 특정 AWS Glue 작업 내 모든 작업 실행의 지표를 필터링합니다.

JobRunId

이 차원은 JobRun ID에 의해 실행되는 특정 AWS Glue 작업 또는 ALL의 지표를 필터링합니다.

Type

이 차원은 count(집계 값) 또는 gauge(특정 시점 값) 기준 지표를 필터링합니다.

자세한 정보는 Amazon CloudWatch 사용 설명서를 참조하세요.