

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

# Terraform을 사용하여 Amazon Managed Grafana에서 Amazon MWAA 사용자 지정 지표의 수집 및 시각화 자동화
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics"></a>

*Faisal Abdullah and Satya Vajrapu, Amazon Web Services*

## 요약
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-summary"></a>

이 패턴에서는 Amazon Managed Grafana를 사용하여 Amazon Managed Workflows for Apache Airflow(Amazon MWAA)에서 수집하는 사용자 지정 지표를 생성하고 모니터링하는 방법을 설명합니다. Amazon MWAA는 Python으로 스크립팅된 방향성 비순환 그래프(DAG)를 사용하여 워크플로의 오케스트레이터 역할을 합니다. 이 패턴은 지난 한 시간 동안 실행된 총 DAG 수, 시간당 통과 및 실패한 DAG 수, 이러한 프로세스의 평균 기간을 비롯하여 사용자 지정 지표의 모니터링을 중점적으로 설명합니다. 이 분석은 Amazon Managed Grafana가 Amazon MWAA와 통합되어 이 환경 내 워크플로 오케스트레이션에 대한 포괄적인 모니터링 및 인사이트를 제공하는 방법을 보여줍니다.

## 사전 조건 및 제한 사항
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-prereqs"></a>

**사전 조건 **
+  AWS 서비스다음을 생성하고 관리하는 데 필요한 사용자 권한이 AWS 계정 있는 활성 :
  + AWS Identity and Access Management (IAM) 역할 및 정책
  + AWS Lambda
  + Amazon Managed Grafana
  + Amazon Managed Workflows for Apache Airflow(Amazon MWAA)
  + Amazon Simple Storage Service(Amazon S3)
  + Amazon Timestream
+ 로컬 시스템 또는 [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html)의 터미널일 수 있는 쉘 환경에 대한 액세스 권한
+ Git이 설치되고 최신 버전의 AWS Command Line Interface (AWS CLI)가 설치 및 구성된 쉘 환경입니다. 자세한 내용은 AWS CLI 설명서에서 [의 최신 버전 설치 또는 업데이트를 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 참조하세요.
+ 설치된 Terraform 버전: `required_version = ">= 1.6.1, < 2.0.0"` [tfswitch](https://tfswitch.warrensbox.com/)를 사용하여 다양한 버전의 Terraform 간에 전환할 수 있습니다.
+ 에 AWS IAM Identity Center 대해에서 구성된 자격 증명 소스입니다 AWS 계정. 자세한 내용은 IAM Identity Center 설명서의 [IAM Identity Center에서 ID 소스 확인](https://docs.aws.amazon.com/singlesignon/latest/userguide/prereq-identity-sources.html)을 참조하세요. 기본 IAM Identity Center 디렉터리, Active Directory 또는 Okta와 같은 외부 ID 제공업체(IdP) 중에서 선택할 수 있습니다. 자세한 내용은 [관련 리소스](#automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-resources) 섹션을 참조하세요.

**제한 사항 **
+ 일부 AWS 서비스 는 전혀 사용할 수 없습니다 AWS 리전. 리전 가용성은 [리전별AWS 서비스](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/) 섹션을 참조하세요. 구체적인 엔드포인트는 [서비스 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)을 참조하고 서비스 링크를 선택합니다.

**제품 버전**
+ Terraform `required_version = ">= 1.6.1, < 2.0.0"`
+ Amazon Managed Grafana 버전 9.4 이상. 이 패턴은 버전 9.4에서 테스트되었습니다.

## 아키텍처
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-architecture"></a>

다음 아키텍처 다이어그램은 솔루션에 AWS 서비스 사용되는를 강조 표시합니다.

![\[Amazon MWAA 사용자 지정 지표 수집을 자동화하는 워크플로.\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/images/pattern-img/3458d0a9-aee1-428a-bf2f-c357bb531c64/images/b43ed8d2-94ac-4438-913b-81c7eba8f3e0.png)


이전 다이어그램은 다음 워크플로를 단계별로 보여줍니다.

1. Amazon MWAA 내의 사용자 지정 지표는 환경 내에서 실행 중인 DAG에서 비롯됩니다. 지표는 CSV 파일 형식으로 Amazon S3 버킷에 업로드됩니다. 다음 DAG는 Amazon MWAA의 데이터베이스 쿼리 기능을 사용합니다.
   + `run-example-dag` - 이 DAG에는 하나 이상의 작업을 정의하는 샘플 Python 코드가 포함되어 있습니다. 이 코드는 7분마다 실행되며 날짜를 인쇄합니다. 날짜를 인쇄한 후 DAG에는 일정 기간 동안 실행을 대기하거나 일시 중지할 작업이 포함됩니다.
   + `other-sample-dag` - 이 DAG는 10분마다 실행되며 날짜를 인쇄합니다. 날짜를 인쇄한 후 DAG에는 일정 기간 동안 실행을 대기하거나 일시 중지할 작업이 포함됩니다.
   + `data-extract` - 이 DAG는 매시간 실행되며 Amazon MWAA 데이터베이스를 쿼리하고 지표를 수집합니다. 지표가 수집되면 이 DAG는 추가 처리 및 분석을 위해 Amazon S3 버킷에 기록합니다.

1. 데이터 처리를 간소화하기 위해 Amazon S3 이벤트에 의해 트리거될 때 Lambda 함수가 실행되므로 지표를 Timestream에 쉽게 로드할 수 있습니다.

1. Timestream은 Amazon MWAA의 모든 사용자 지정 지표가 저장되는 Amazon Managed Grafana 내의 데이터 소스로 통합됩니다.

1. 사용자는 데이터를 쿼리하고 사용자 지정 대시보드를 구성하여 주요 성과 지표를 시각화하고 Amazon MWAA 내 워크플로 오케스트레이션에 대한 인사이트를 얻을 수 있습니다.

## 도구
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-tools"></a>

**AWS 서비스**
+ [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)를 사용하면 모든 AWS 계정 및 클라우드 애플리케이션에 대한 Single Sign-On(SSO) 액세스를 중앙에서 관리할 수 있습니다.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행하는 데 도움이 되는 컴퓨팅 서비스입니다. 필요할 때만 코드를 실행하며 자동으로 확장이 가능하므로 사용한 컴퓨팅 시간만큼만 비용을 지불합니다. 이 패턴에서는 Amazon S3 이벤트에 대한 응답으로 Python 코드를 AWS Lambda 실행하고 컴퓨팅 리소스를 자동으로 관리합니다.
+ [Amazon Managed Grafana](https://docs.aws.amazon.com/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html)는 지표, 로그 및 트레이스를 즉시 쿼리, 상관관계 파악 및 시각화하는 데 사용할 수 있는 완전관리형 데이터 시각화 서비스입니다. 이 패턴은 Amazon Managed Grafana를 사용하여 지표 시각화 및 알림을 위한 대시보드를 생성합니다.
+ [Amazon Managed Workflows for Apache Airflow(Amazon MWAA)](https://docs.aws.amazon.com/mwaa/latest/userguide/what-is-mwaa.html)는 Apache Airflow에 대한 관리형 오케스트레이션 서비스로 클라우드에서 데이터 파이프라인을 대규모로 설정하고 운영하는 데 사용할 수 있습니다. [Apache Airflow](https://airflow.apache.org/)는 워크플로라고 하는 프로세스 및 작업 시퀀스를 프로그래밍 방식으로 작성, 예약 및 모니터링하는 데 사용되는 오픈 소스 도구입니다. 이 패턴에서는 샘플 DAG와 지표 추출기 DAG가 Amazon MWAA에 배포됩니다.
+ [Amazon Simple Storage Service(S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)는 원하는 양의 데이터를 저장, 보호 및 검색하는 데 도움이 되는 클라우드 기반 객체 스토리지 서비스입니다. 이 패턴에서 Amazon S3는 DAG, 스크립트 및 사용자 지정 지표를 CSV 형식으로 저장하는 데 사용됩니다.
+ [Amazon Timestream for LiveAnalytics](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html)는 빠르고 확장 가능한 완전 관리형 특수 목적 시계열 데이터베이스로, 매일 수조 개의 시계열 데이터 포인트를 쉽게 저장하고 분석할 수 있습니다. 또한 Timestream for LiveAnalytics는 데이터 수집, 시각화, 기계 학습에 일반적으로 사용되는 서비스와 통합됩니다. 이 패턴에서는 생성된 Amazon MWAA 사용자 지정 지표를 수집하는 데 사용됩니다.

**기타 도구**
+ [HashiCorp Terraform](https://www.terraform.io/docs)은 코드를 사용하여 클라우드 인프라 및 리소스를 프로비저닝하고 관리하는 데 도움이 되는 코드형 인프라(IaC) 도구입니다. 이 패턴은 Terraform 모듈을 사용하여 AWS에서 인프라 프로비저닝을 자동화합니다.

**코드 리포지토리**

이 패턴의 코드는 GitHub의 [visualize-amazon-mwaa-custom-metrics-grafana](https://github.com/aws-samples/visualize-amazon-mwaa-custom-metrics-grafana) 리포지토리에서 사용할 수 있습니다. `stacks/Infra` 폴더에는 다음 항목이 포함되어 있습니다.
+ 모든 AWS 리소스에 대한 Terraform 구성 파일
+ `grafana` 폴더의 Grafana 대시보드 .json 파일
+ `mwaa/dags` 폴더의 Amazon Managed Workflows for Apache Airflow DAGs
+ .csv 파일을 구문 분석하고 `src` 폴더의 Timestream 데이터베이스에 지표를 저장하는 Lambda 코드
+ `templates` 폴더의 IAM 정책 .json 파일

## 모범 사례
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-best-practices"></a>

Terraform은 실제 리소스를 구성에 매핑할 수 있도록 관리형 인프라 및 구성에 대한 상태를 저장해야 합니다. 기본적으로 Terraform은 상태를 `terraform.tfstate`라는 파일에 로컬로 저장합니다. 인프라의 현재 상태를 유지하므로 Terraform 상태 파일의 안전과 무결성을 보장하는 것이 중요합니다. 자세한 내용은 Terraform 설명서의 [Remote State](https://developer.hashicorp.com/terraform/language/state/remote)를 참조하세요.

## 에픽
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-epics"></a>

### Terraform을 사용하여 인프라 배포
<a name="deploy-the-infrastructure-using-terraform"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 인프라를 배포합니다. | 솔루션 인프라를 배포하려면 다음을 수행합니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | DevOps | 

### 배포된 인프라 리소스 검증
<a name="validate-the-deployed-infrastructure-resources"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| Amazon MWAA 환경을 검증합니다. | Amazon MWAA 환경을 검증하려면 다음을 수행합니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps, 데이터 엔지니어 | 
| DAG 일정을 확인합니다. | 각 DAG 일정을 보려면 **Airflow UI**의 **일정** 탭으로 이동합니다.다음 각 DAG에는 Amazon MWAA 환경에서 실행되고 사용자 지정 지표를 생성하는 사전 구성된 일정이 있습니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)**실행** 열에서 각 DAG의 성공적인 실행 항목을 볼 수도 있습니다. | 데이터 엔지니어, AWS DevOps | 

### Amazon Managed Grafana 환경 구성
<a name="configure-the-gra-environment"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| Amazon Managed Grafana 워크스페이스에 대한 액세스를 구성합니다. | Terraform 스크립트가 필요한 Amazon Managed Grafana 워크스페이스, 대시보드 및 지표 페이지를 생성했습니다. 이들 항목을 볼 수 있도록 액세스를 구성하려면 다음을 수행합니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | DevOps | 
| Amazon Timestream 플러그인을 설치합니다. | Amazon MWAA 사용자 지정 지표가 Timestream 데이터베이스에 로드됩니다. Timestream 플러그인을 사용하여 Amazon Managed Grafana 대시보드로 이 지표를 시각화합니다.Timestream 플러그인을 설치하려면 다음을 수행합니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)자세한 내용은 Amazon Managed Grafana 설명서의 [플러그인을 사용하여 워크스페이스 확장](https://docs.aws.amazon.com/grafana/latest/userguide/grafana-plugins.html#manage-plugins)을 참조하세요. | AWS DevOps, DevOps 엔지니어 | 

### Amazon Managed Grafana 대시보드에서 사용자 지정 지표 시각화
<a name="visualize-the-custom-metrics-in-the-gra-dashboard"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| Amazon Managed Grafana 대시보드를 봅니다. | Amazon Managed Grafana 워크스페이스에 수집된 지표를 보려면 다음을 수행합니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)대시보드에 다음 정보가 표시됩니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | DevOps | 
| Amazon Managed Grafana 대시보드를 사용자 지정합니다. | 향후 개선 사항을 적용할 수 있도록 대시보드를 사용자 지정하려면 다음을 수행합니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)또는 [GitHub 리포지토리](https://github.com/aws-samples/visualize-amazon-mwaa-custom-metrics-grafana/blob/main/stacks/infra/grafana/dashboard.json)의 `stacks/infra/grafana` 폴더에 있는 `dashboard.json` 파일에서 이 대시보드의 소스 코드를 사용할 수 있습니다. | DevOps | 

### AWS 리소스 정리
<a name="clean-up-aws-resources"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| Amazon MWAA DAG 실행을 일시 중지합니다. | DAG 실행을 일시 중지하려면 다음을 수행합니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps, 데이터 엔지니어 | 
| Amazon S3 버킷의 객체를 삭제합니다. | Amazon S3 버킷 **mwaa-events-bucket-\$1** 및 **mwaa-metrics-bucket-\$1**를 삭제하려면 Amazon S3 설명서의 [버킷 삭제](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)에서 Amazon S3 콘솔 사용 지침을 따릅니다. | DevOps | 
| Terraform이 생성한 리소스를 폐기합니다. | Terraform이 생성한 리소스와 관련 로컬 Terraform 상태 파일을 삭제하려면 다음을 수행합니다.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | DevOps | 

## 문제 해결
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-troubleshooting"></a>


| 문제 | Solution | 
| --- | --- | 
| `null_resource.plugin_mgmt (local-exec): aws: error: argument operation: Invalid choice, valid choices are:` |  AWS CLI 를 [최신 버전으로](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 업그레이드합니다. | 
| 데이터 소스 로드 오류 - `Fetch error: 404 Not Found Instantiating…` | 이 오류는 간헐적으로 발생합니다. 몇 분 기다린 다음 데이터 소스를 새로 고쳐 나열된 Timestream 데이터 소스를 확인하세요. | 

## 관련 리소스
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-resources"></a>

**AWS 설명서**
+ [대시보드 및 시각화를 위한 Amazon Managed Grafana](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/amg-dashboarding-visualization.html)
+ [Okta를 사용하도록 Amazon Managed Grafana 구성](https://docs.aws.amazon.com/grafana/latest/userguide/AMG-SAML-providers-okta.html)
+ [Amazon Managed Grafana 워크스페이스와 AWS IAM Identity Center 함께 사용](https://docs.aws.amazon.com/grafana/latest/userguide/authentication-in-AMG-SSO.html)
+ [Amazon MWAA에서 DAGs 작업](https://docs.aws.amazon.com/mwaa/latest/userguide/working-dags.html)

**AWS 비디오**
+ 다음 [비디오](https://www.youtube.com/watch?v=XX2Xcz-Ps9U)와 같이, 인증을 위해 Amazon Managed Grafana로 IAM Identity Center를 구성합니다.




[https://www.youtube-nocookie.com/embed/XX2Xcz-Ps9U?controls=0](https://www.youtube-nocookie.com/embed/XX2Xcz-Ps9U?controls=0)
+ IAM Identity Center를 사용할 수 없는 경우 다음 [비디오](https://www.youtube.com/watch?v=Z4JHxl2xpOg)와 같이 Okta와 같은 외부 ID 제공업체(IdP)를 사용하여 Amazon Managed Grafana 인증을 통합할 수도 있습니다.




[https://www.youtube-nocookie.com/embed/Z4JHxl2xpOg?controls=0](https://www.youtube-nocookie.com/embed/Z4JHxl2xpOg?controls=0)

## 추가 정보
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-additional"></a>

Amazon MWAA 환경에 대한 포괄적인 모니터링 및 알림 솔루션을 생성하여 잠재적 문제 또는 이상에 대한 사전 예방적 관리와 신속한 대응을 지원할 수 있습니다. Amazon Q에는 다음 기능이 포함됩니다.

**알림** - 사전 정의된 임계값 또는 조건을 기반으로 Amazon Managed Grafana에서 알림을 구성할 수 있습니다. 특정 지표가 지정된 임계값을 초과하거나 그 이하로 떨어질 경우 관련 이해 관계자에게 알리도록 이메일 알림을 설정합니다. 자세한 내용은 Amazon Managed Grafana 설명서에서 [Grafana 알림](https://docs.aws.amazon.com/grafana/latest/userguide/alerts-overview.html)을 참조하세요.

**통합** - 향상된 알림 기능을 위해 Amazon Managed Grafana를 OpsGenie, PagerDuty, Slack 등 다양한 서드 파티 도구와 통합할 수 있습니다. 예를 들어 웹후크를 설정하거나 API와 통합하여 Amazon Managed Grafana에서 생성된 알림을 기반으로 이러한 플랫폼에서 인시던트 및 알림을 트리거할 수 있습니다. 또한이 패턴은 AWS 리소스를 생성하기 위한 [GitHub 리포지토리](https://github.com/aws-samples/visualize-amazon-mwaa-custom-metrics-grafana)를 제공합니다. 이 코드를 인프라 배포 워크플로와 추가로 통합할 수 있습니다.