AWS 기술 블로그

새로운 작업 관측성 지표를 사용하여 AWS Glue 작업에 대한 모니터링 및 디버깅 강화

이 글은 AWS Big Data Blog에 게시된 Enhance monitoring and debugging for AWS Glue jobs using new job observability metrics by Noritaka Sekiyama를 한국어 번역 및 편집하였습니다.

현대의 데이터 중심 기업에서는 원활한 데이터 통합 파이프라인을 갖추는 것이 중요합니다. 이러한 파이프라인은 다양한 소스에서 데이터를 가져와 변환하고 분석 및 보고를 위해 대상 시스템에 적재합니다. 제대로 실행되면 시기적절하고 신뢰할 수 있는 정보를 제공합니다. 그러나 조심하지 않으면 다양한 데이터 볼륨, 특성 및 애플리케이션 동작으로 인해 데이터 파이프라인이 비효율적이고 문제가 발생할 수 있습니다. 성능이 저하되거나 파이프라인이 불안정해질 수 있습니다. 감지되지 않은 오류는 잘못된 데이터를 초래하고 다운스트림 분석에 영향을 미칩니다. 그렇기 때문에 다음 네 가지 영역에 대하여 강력한 모니터링과 문제 해결이 필수적입니다.

  • 안정성
  • 성능
  • 처리량
  • 자원 활용량

모니터링의 이러한 네 가지 측면은 데이터 파이프라인과 해당 운영에 대한 엔드 투 엔드 가시성과 제어를 제공합니다.

오늘 우리는 Apache Spark 작업을 위한 AWS Glue를 기반으로 구축된 파이프라인을 통해 보고되는 새로운 클래스의 Amazon CloudWatch 지표를 발표하게 된 것을 기쁘게 생각합니다. 새로운 지표는 작업 실행 및 처리 중인 데이터의 상태와 운영에 대한 종합적이고 세분화된 통찰력을 제공합니다. 통찰력 있는 대시보드를 제공하는 것 외에도 메트릭은 성능 병목 현상의 근본 원인 분석 및 오류 진단에 도움이 되는 오류 분류를 제공합니다. 이 분석을 통해 작업 및 파이프라인 설계에 권장되는 수정 사항과 모범 사례를 평가하고 적용할 수 있습니다. 결과적으로 Apache Spark 워크로드를 위한 AWS Glue에 대해 더 높은 가용성, 더 나은 성능 및 더 낮은 비용이라는 이점을 얻을 수 있습니다.

이 게시물에서는 새롭게 향상된 지표가 AWS Glue 작업을 모니터링하고 디버깅하는 데 어떻게 도움이 되는지 보여줍니다.

게시물을 읽고 계시다면 다음 사항에도 관심이 있으실 것입니다.

새 지표 활성화

새 지표는 enable-observability-metrics 작업 매개변수를 통해 구성할 수 있습니다.

새로운 지표는 AWS Glue Studio 콘솔에서 기본적으로 활성화됩니다. AWS Glue Studio 콘솔에서 지표를 구성하려면 다음 단계를 완료하십시오.

  1. AWS Glue 콘솔의 탐색 창에서 ETL jobs을 선택합니다.
  2. Your jobs에서 job을 선택합니다.
  3. Job details 탭에서 Advanced properties을 확장합니다.

Job observability metrics에서 Enable the creation of additional observability CloudWatch metrics when this job runs를 선택합니다.

AWS Glue CreateJob 및 StartJobRun API에서 새 지표를 활성화하려면 DefaultArguments 속성에서 다음 매개변수를 설정합니다.

  • Key – --enable-observability-metrics
  • Value – true

AWS 명령줄 인터페이스(AWS CLI)에서 새 지표를 활성화 하려면 --default-arguments 인수에 동일한 작업 매개변수를 설정합니다.

사용 사례

Apache Spark을 위한 AWS Glue 작업의 일반적인 워크로드는 SQL 기반 변환을 통해 관계형 데이터베이스에서 데이터 레이크로 데이터를 로드하는 것입니다. 다음은 작업자 수가 10인 작업 예시를 시각적으로 표현한 것입니다.

예시 작업이 실행되었을 때 workerUtilization 측정항목은 다음과 같은 추세를 보였습니다.

workerUtilization은 전체 기간 동안 0.20(20%)에서 0.40(40%) 사이의 값을 나타냈습니다. 이는 일반적으로 작업 용량이 과도하게 프로비저닝되고 많은 Spark 실행자가 유휴 상태여서 불필요한 비용이 발생하는 경우에 발생합니다. 리소스 활용 효율성을 높이려면 AWS Glue Auto Scaling을 활성화하는 것이 좋습니다. 다음 스크린샷은 동일한 작업에 대해 AWS Glue Auto Scaling이 활성화된 경우 동일한 workerUtilization 지표 그래프를 보여줍니다.

workerUtilization은 AWS Glue Auto Scaling으로 인해 처음에는 1.0을 표시했으며 워크로드 요구 사항을 기준으로 0.75(75%)에서 1.0(100%) 사이의 추세를 보였습니다.

CloudWatch에서 지표 쿼리 및 시각화

CloudWatch 콘솔에서 지표를 쿼리하고 시각화하려면 다음 단계를 완료하십시오.

  1. CloudWatch 콘솔의 탐색 창에서 All metrics를 선택합니다.
  2. Custom namespaces에서 Glue를 선택합니다.
  3. Observability Metrics(Observability Metrics Per Source 또는 Observability Metrics Per Sink)를 선택합니다.
  4. 특정 지표 이름, 작업 이름, 작업 실행 ID 및 관측성 그룹을 검색하고 선택합니다.
  5. Graphed metrics 탭에서 원하는 통계, 기간 등을 구성합니다.

AWS CLI를 사용하여 지표 쿼리

AWS CLI를 사용하여 쿼리하려면 다음 단계를 완료하십시오(이 예에서는 작업자 사용률 지표를 쿼리합니다).

  1. 지표 정의 JSON 파일을 생성합니다(AWS Glue 작업 이름 및 작업 실행 ID 제공):
    $ cat multiplequeries.json
    [
      {
        "Id": "avgWorkerUtil_0",
        "MetricStat" : {
          "Metric" : {
            "Namespace": "Glue",
            "MetricName": "glue.driver.workerUtilization",
            "Dimensions": [
              {
                  "Name": "JobName",
                  "Value": "<your-Glue-job-name-A>"
              },
              {
                "Name": "JobRunId",
                "Value": "<your-Glue-job-run-id-A>"
              },
              {
                "Name": "Type",
                "Value": "gauge"
              },
              {
                "Name": "ObservabilityGroup",
                "Value": "resource_utilization"
              }
            ]
          },
          "Period": 1800,
          "Stat": "Minimum",
          "Unit": "None"
        }
      },
      {
          "Id": "avgWorkerUtil_1",
          "MetricStat" : {
          "Metric" : {
            "Namespace": "Glue",
            "MetricName": "glue.driver.workerUtilization",
            "Dimensions": [
               {
                 "Name": "JobName",
                 "Value": "<your-Glue-job-name-B>"
               },
               {
                 "Name": "JobRunId",
                 "Value": "<your-Glue-job-run-id-B>"
               },
               {
                 "Name": "Type",
                 "Value": "gauge"
               },
               {
                 "Name": "ObservabilityGroup",
                 "Value": "resource_utilization"
               }
            ]
          },
          "Period": 1800,
          "Stat": "Minimum",
          "Unit": "None"
        }
      }
    ]
  2. get-metric-data명령을 실행합니다.
    $ aws cloudwatch get-metric-data --metric-data-queries file://multiplequeries.json \
         --start-time '2023-10-28T18:20' \
         --end-time '2023-10-28T19:10'  \
         --region us-east-1
    {
        "MetricDataResults": [
          {
             "Id": "avgWorkerUtil_0",
             "Label": "<your label A>",
             "Timestamps": [
                   "2023-10-28T18:20:00+00:00"
             ], 
             "Values": [
                   0.06718750000000001
             ],
             "StatusCode": "Complete"
          },
          {
             "Id": "avgWorkerUtil_1",
             "Label": "<your label B>",
             "Timestamps": [
                  "2023-10-28T18:20:00+00:00"
              ],
              "Values": [
                  0.5959183673469387
              ],
              "StatusCode": "Complete"
           }
        ],
        "Messages": []
    }

CloudWatch 경보 생성

다양한 지표에 대해 정적 임계값 기반 경보를 생성할 수 있습니다. 지침은 정적 임계값을 기반으로 CloudWatch 경보 생성을 참조하십시오.

예를 들어 왜곡도의 경우 임계값이 1.0인 skewness.stage와 임계값이 0.5인 skewness.job에 대한 경보를 설정할 수 있습니다. 이 임계값은 권장 사항일 뿐입니다. 특정 사용 사례에 따라 임계값을 조정할 수 있습니다(예를 들어 일부 작업은 왜곡될 것으로 예상되지만 경고할 문제는 아닙니다). 비정상적인 값을 한정하고 경보 임계값을 구성하기 전에 일정 시간 동안 작업 실행의 지표 값을 평가하는 것이 좋습니다.

기타 향상된 지표

AWS Glue 작업에서 사용할 수 있는 기타 향상된 지표의 전체 목록은 AWS Glue 관측성 지표로 모니터링을 참조하세요. 이러한 측정항목을 사용하면 리소스 활용도(메모리 및 디스크), 일반화된 오류 클래스(예: 컴파일 및 구문), 사용자 또는 서비스 오류, 각 소스 또는 싱크(레코드, 파일, 파티션, 읽거나 쓴 바이트)에 대한 처리량과 같은 작업의 운영 통찰력을 얻을 수 있습니다.

작업 관측성 대시보드

Amazon Managed Grafana를 사용하여 실시간 모니터링을 지원하고 추세 시각화 및 분석을 지원하는 통찰력 지표용 대시보드를 사용하여 AWS Glue 작업에 대한 관측성을 더욱 단순화할 수 있습니다. Amazon QuickSight를 사용하세요.

결론

이 게시물에서는 새롭게 향상된 CloudWatch 지표가 AWS Glue 작업을 모니터링하고 디버깅하는 데 어떻게 도움이 되는지 보여주었습니다. 이러한 향상된 측정항목을 사용하면 문제를 실시간으로 더욱 쉽게 식별하고 해결할 수 있습니다. 그 결과 가동 시간이 늘어나고 처리 속도가 빨라지며 비용이 절감되는 AWS Glue 작업이 가능해집니다. 최종 이점은 Apache Spark 워크로드용 AWS Glue가 더욱 더 효과적이고 최적화된다는 것입니다. 지표는 모든 AWS Glue 지원 리전에서 사용할 수 있습니다.

Lyunsik Hyun

Lyunsik Hyun

현륜식 솔루션즈 아키텍트는 삼성전자에서의 글로벌 대규모 서비스 및 플랫폼 설계/구축/운영 경험을 바탕으로 AWS, Google에서 디지털 네이티브 고객 및 게임 고객을 대상으로 클라우드 서비스 설계 및 아키텍트 역할을 수행하였습니다. 현재는 삼성전자를 포함한 엔터프라이즈 비지니스 고객을 대상으로 안전하고 확장 가능하며 복원력/가용성이 높으면서 비용 효율적인 AWS 아키텍쳐 구축/운영에 도움을 드리고 있습니다.