AWS 기술 블로그
새로운 작업 관측성 지표를 사용하여 AWS Glue 작업에 대한 모니터링 및 디버깅 강화, 3부: Amazon QuickSight를 사용한 시각화 및 추세 분석
이 글은 AWS Big Data Blog에 게시된 Enhance monitoring and debugging for AWS Glue jobs using new job observability metrics, Part 3: Visualization and trend analysis using Amazon QuickSight by Noritaka Sekiyama를 한국어 번역 및 편집하였습니다.
이 시리즈의 2부에서는 AWS Glue 작업 관측성 지표를 활성화하고 실시간 모니터링을 위해 Grafana와 통합하는 방법을 논의했습니다. Grafana는 파이프라인 상태를 볼 수 있는 강력한 사용자 정의 대시보드를 제공합니다. 그러나 시간 경과에 따른 추세를 분석하고, 다양한 차원에서 집계하고, 조직 전반에 걸쳐 통찰력을 공유하려면 Amazon QuickSight와 같은 특수 목적의 비즈니스 인텔리전스(BI) 도구가 비즈니스에 더 효과적일 수 있습니다. QuickSight를 사용하면 비즈니스 사용자가 대화형 대시보드 및 보고서에서 데이터를 쉽게 시각화 할 수 있습니다.
이 게시물에서는 QuickSight를 Amazon CloudWatch 지표에 연결하고 그래프를 작성하여 AWS Glue 작업 관찰 지표의 추세를 파악하는 방법을 살펴봅니다. 기록 패턴을 분석하면 성능을 최적화하고 문제를 사전에 식별하며 계획을 개선할 수 있습니다. CloudWatch 지표 스트림과 QuickSight SPICE를 사용하여 CloudWatch 지표를 QuickSight에 수집하는 방법을 안내합니다. 이 통합을 통해 선 차트, 막대 차트 및 기타 그래프 유형을 사용하여 일별, 주별 및 월별 패턴을 확인할 수 있습니다. QuickSight를 사용하면 더 심층적인 분석을 위해 지표에 대한 집계 계산을 수행할 수 있습니다. 작업 이름과 같은 다양한 차원으로 데이터를 분할하고, 이상 현상을 확인하고, 보고서를 조직 전체에 안전하게 공유할 수 있습니다. 이러한 통찰력을 통해 팀은 데이터 통합 파이프라인을 보다 효율적으로 만들 수 있는 가시성을 갖게 됩니다.
게시물을 읽고 계시다면 다음 사항에도 관심이 있으실 것입니다. |
솔루션 개요
다음 아키텍처 다이어그램은 솔루션을 구현하는 워크플로를 보여줍니다.
워크플로우에는 다음 단계가 포함됩니다.
- AWS Glue 작업은 관측성 지표를 CloudWatch 지표로 내보냅니다.
- CloudWatch는 지표 스트림(metric steam)을 통해 지표 데이터를 Amazon Data Firehose로 스트리밍합니다.
- Data Firehose는 AWS Lambda 함수를 사용하여 데이터를 변환하고 변환된 레코드를 Amazon Simple Storage Service(Amazon S3) 버킷으로 수집합니다.
- AWS Glue 크롤러는 S3 버킷의 데이터를 스캔하고 AWS Glue 데이터 카탈로그에 테이블 메타데이터를 채웁니다.
- QuickSight는 주기적으로 Amazon Athena 쿼리를 실행하여 쿼리 결과를 SPICE에 로드한 다음 최신 지표 데이터를 시각화합니다.
모든 리소스는 샘플 AWS Cloud Development Kit(AWS CDK) 템플릿에 정의되어 있습니다. 관측 가능성 지표의 추세를 시각화하고 분석하기 위해 엔드투엔드 솔루션을 배포할 수 있습니다.
샘플AWS CDK 템플릿
이 게시물은 AWS Glue 관측성 지표를 사용하는 대시보드용 샘플 AWS CDK 템플릿을 제공합니다.
일반적으로 데이터 파이프라인의 리소스를 관리하고 실행하기 위한 여러 계정이 있습니다.
이 템플릿에서는 다음 계정을 가정합니다.
- 모니터링 계정 – 중앙 S3 버킷, 중앙 데이터 카탈로그 및 QuickSight 관련 리소스를 호스팅합니다.
- 소스 계정 – AWS Glue의 개별 데이터 파이프라인 리소스와 모니터링 계정으로 지표를 보내는 리소스를 호스팅합니다.
이 템플릿은 모니터링 계정과 원본 계정이 동일한 경우에도 작동합니다.
이 샘플 템플릿은 4개의 스택으로 구성됩니다.
- Amazon S3 스택– S3 버킷을 프로비저닝합니다.
- 데이터 카탈로그 스택 – AWS Glue 데이터베이스, 테이블 및 크롤러를 프로비저닝합니다.
- QuickSight 스택 – QuickSight 데이터 소스, 데이터 세트 및 분석을 프로비저닝합니다.
- 지표 발신자 스택– CloudWatch 지표 스트림, Firehose 스트림 및 변환을 위한 Lambda 함수를 프로비저닝합니다.
전제 조건
다음과 같은 전제 조건이 있어야 합니다.
- Python 3.9 이상
- 모니터링 계정과 소스 계정을 위한 AWS 계정
- 모니터링 계정 및 원본 계정에 대한 AWS 프로파일
- AWS CDK Toolkit 버전 2.87.0 이상
CDK 프로젝트 초기화
프로젝트를 초기화하려면 다음 단계를 완료하세요.
- CDK 템플릿을 workplace에 복제합니다.
$ git clone git@github.com:aws-samples/aws-glue-cdk-baseline.git $ cd aws-glue-cdk-baseline.git
- 클라이언트 머신의 프로젝트와 관련된 Python 가상 환경 을 생성합니다.
$ python3 -m venv .venv
우리는 이 프로젝트의 Python 환경을 격리하고 설치하지 않기 위해 가상 환경을 사용합니다.
- OS에 따라 가상 환경을 활성화합니다.
-
- MacOS 및 Linux에서는 다음 코드를 사용합니다.
$ source .venv/bin/activate
- MacOS 및 Linux에서는 다음 코드를 사용합니다.
-
- Windows 플랫폼에서는 다음 코드를 사용합니다.
% .venv\Scripts\activate.bat
- Windows 플랫폼에서는 다음 코드를 사용합니다.
이 단계 후에 후속 단계는 클라이언트 머신의 가상 환경 범위 내에서 실행되고 필요에 따라 AWS 계정과 상호 작용합니다.
- requirements.txt에 가상 환경에 설치합니다.
$ pip install -r requirements.txt
- 환경에 따라default-config.yaml 구성 파일을 편집합니다(각 계정 ID를 자신의 ID로 바꿉니다).
create_s3_stack: false create_metrics_sender_stack: false create_catalog_stack: false create_quicksight_stack: true s3_bucket_name: glue-observability-demo-dashboard firehose_log_group_name: /aws/kinesisfirehose/observability-demo-metric-stream firehose_lambda_buffer_size_mb: 2 firehose_lambda_buffer_interval_seconds: 60 firehose_s3_buffer_size_mb: 128 firehose_s3_buffer_interval_seconds: 300 glue_database_name: observability_demo_db glue_table_name: metric_data glue_crawler_name: observability_demo_crawler glue_crawler_cron_schedule: "cron(42 * * * ? *)" athena_workgroup_name: primary
AWS 환경을 부트스트랩
AWS 환경을 부트스트랩하기 위해 다음 명령을 실행합니다.
- 모니터링 계정에서 모니터링 계정 번호, AWS 리전 및 모니터링 계정 프로필을 제공합니다.
$ cdk bootstrap aws://<MONITORING-ACCOUNT-NUMBER>/<REGION> --profile <MONITORING-PROFILE> \ --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess
- 원본 계정에서 원본 계정 번호, AWS 리전 및 원본 계정 프로필을 제공합니다.
$ cdk bootstrap aws://<SOURCE-ACCOUNT-NUMBER>/<REGION> --profile <SOURCE-PROFILE> \ --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess
모든 환경에 하나의 계정만 사용하는 경우 cdk bootstrap명령을 한 번만 실행할 수 있습니다.
AWS 리소스 배포
다음 명령을 실행하여 AWS 리소스를 배포합니다.
- AWS CDK 템플릿에 정의된 리소스를 배포하기 위해 모니터링 계정을 사용하여 다음 명령을 실행합니다.
$ cdk deploy '*' --profile <MONITORING-PROFILE>
- AWS CDK 템플릿에 정의된 리소스를 배포하기 위해 소스 계정을 사용하여 다음 명령을 실행합니다.
$ cdk deploy MetricSenderStack --profile <SOURCE-PROFILE>
QuickSight 권한 설정
처음에는 QuickSight 권한이 없기 때문에 AWS CDK 템플릿에서 생성된 데이터 세트 및 분석을 포함한 새로운 QuickSight 리소스가 표시되지 않습니다.
데이터세트와 분석을 표시하려면 다음 단계를 완료하세요.
- QuickSight 콘솔에서 사용자 메뉴로 이동하여 QuickSight 관리를 선택합니다.
- 탐색 창에서 자산 관리를 선택합니다.
- 자산 검색에서 분석을 선택합니다.
- GlueObservabilityAnalysis를 검색하여 선택합니다.
- 공유를 선택하세요.
- 사용자 또는 그룹의 경우 사용자를 선택한 다음 공유(1)를 선택합니다.
- 공유가 완료될 때까지 기다린 후 완료를 선택합니다.
- 자산 관리 페이지에서 데이터 세트를 선택합니다.
- metrics_data를 검색하여 선택합니다.
- 공유를 선택하세요.
- 사용자 또는 그룹의 경우 사용자를 선택한 다음 공유(1)를 선택합니다.
- 공유가 완료될 때까지 기다린 후 완료를 선택합니다.
기본QuickSight 분석 살펴보기
이제 QuickSight 분석 및 데이터 세트가 보여집니다. QuickSight 콘솔로 돌아가서 분석 아래에서 GlueObservabilityAnalysis를 선택합니다. 다음 스크린샷은 대시보드입니다.
샘플 분석에는 Monitoring과 Insights이라는 두 가지 탭이 있습니다. 기본적으로 Monitoring 탭에는 다음 차트가 있습니다.
- [Reliability] Job Run Errors Breakdown
- [Reliability] Job Run Errors (Total)
- [Performance] Skewness Job
- [Performance] Skewness Job per Job
- [Resource Utilization] Worker Utilization
- [Resource Utilization] Worker Utilization per Job
- [Throughput] BytesRead, RecordsRead, FilesRead, PartitionRead (Avg)
- [Throughput] BytesWritten, RecordsWritten, FilesWritten (Avg)
- [Resource Utilization Disk Available GB (Min)
- [Resource Utilization Max Disk Used % (Max)
- [Driver OOM] OOM Error Count
- [Driver OOM] Max Heap Memory Used % (Max)
- [Executor OOM] OOM Error Count
- [Executor OOM] Max Heap Memory Used % (Max)
기본적으로 Insights 탭에는 다음과 같은 insights가 있습니다.
- Bottom Ranked Worker Utilization
- Top Ranked Skewness Job
- Forecast Worker Utilization
- Top Mover readBytes
요구 사항에 따라 관측성 지표를 사용하여 새로운 그래프 차트나 insights를 추가할 수 있습니다..
QuickSight 대시보드 게시
분석이 준비되면 다음 단계를 완료하여 대시보드를 게시하세요.
- 게시를 선택합니다.
- Publish new dashboard as(대시보드를 다른 이름으로 게시)를 선택하고 GlueObservabilityDashboard를 입력합니다.
- Publish dashboard(대시보드 게시)를 선택합니다.
그런 다음 대시보드를 보거나 공유할 수 있습니다.
AWS Glue 작업 관측성 지표를 사용하여 시각화 및 분석
대시보드를 사용하여AWS Glue 사용을 더욱 성능이 좋게 향상시켜 보겠습니다.
작업당 작업 왜곡도(skewness, 데이터 분포의 비대칭 정도) 시각화를 보면 2023년 11월 1일에 스파이크가 발생했습니다. 작업 multistage-demo의 왜곡도 측정항목은 9.53으로 다른 항목보다 상당히 높은 것으로 나타났습니다.
세부 사항을 자세히 살펴보겠습니다. 제어를 선택하고 날짜 시간, 지역, AWS 계정 ID, AWS Glue 작업 이름, 작업 실행 ID, 데이터 저장소의 소스 및 싱크를 기준으로 필터 조건을 변경할 수 있습니다. 지금은 multistage-demo라는 작업 이름으로 필터링하겠습니다.
필터링된 작업별 작업자 활용도 시각화는 0.5로 표시되며 최소값은 0.16입니다. 자원 활용도 측면에서는 개선의 여지가 있는 것 같습니다. 이 관찰을 통해 이 작업에 대해 auto scaling을 활성화하여 작업자 활용도를 높일 수 있습니다.
정리
다음 명령을 실행하여 AWS 리소스를 정리하십시오.
- 모니터링 계정을 사용하여 다음 명령을 실행하여 리소스를 정리합니다.
$ cdk destroy '*' --profile <MONITORING-PROFILE>
소스 계정을 사용하여 다음 명령을 실행하여 리소스를 정리합니다.
$ cdk destroy MetricSenderStack --profile <SOURCE-PROFILE>
고려사항
QuickSight 통합은 분석과 더 나은 유연성을 위해 설계되었습니다. 모든 필드를 기반으로 지표를 집계할 수 있습니다. 한 번에 많은 작업을 처리할 때 QuickSight 통찰력은 문제가 있는 작업을 식별하는 데 도움이 됩니다.
QuickSight 통합은 귀하의 환경에서 더 많은 리소스를 통해 달성됩니다. 모니터링 계정에는 AWS Glue 데이터베이스, 테이블, 크롤러 및 S3 버킷이 필요하며 Athena 쿼리를 실행하여 QuickSight에서 지표를 시각화할 수 있는 기능이 필요합니다. 각 소스 계정에는 지표 스트림 하나와 Firehose 전송 스트림 하나가 있어야 합니다. 이로 인해 추가 비용이 발생할 수 있습니다.
모든 리소스는 AWS CDK에 템플릿화 되어 있습니다.
결론
이 게시물에서는 CloudWatch 지표 스트림과 SPICE를 사용하여 QuickSight에서 AWS Glue 작업 관측성 지표를 시각화하고 분석하는 방법을 살펴보았습니다. QuickSight 대시보드를 연동하기 위해 새로운 관측성 지표를 연결하면 일별, 주별, 월별 패턴을 파악하여 AWS Glue 작업 사용을 최적화할 수 있습니다. QuickSight의 풍부한 시각화 기능을 사용하면 작업자 활용도, 오류 범주, 처리량 등과 같은 지표의 추세를 분석할 수 있습니다. 지표를 집계하고 작업 이름과 같은 다양한 차원별로 데이터를 분할하면 더 깊은 통찰력을 얻을 수 있습니다.
샘플 대시보드에는 시간 경과에 따른 측정항목, 주요 오류 및 비교 작업 분석이 표시되었습니다. 이러한 시각화 및 보고서는 조직 전체의 팀과 안전하게 공유될 수 있습니다. AWS Glue 관측성 지표에 대한 데이터 기반 통찰력을 통해 성능 병목 현상, 일반적인 오류 등에 대한 더 깊은 통찰력을 얻을 수 있습니다.