

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Terraform を使用して Amazon Managed Grafana での Amazon MWAA カスタムメトリクスの取り込みと視覚化を自動化する
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics"></a>

*Faisal Abdullah、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) を使用します。このパターンは、過去 1 時間以内に実行 DAG の合計数、1 時間あたりの合格および不合格の 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 アイデンティティセンター 用に で設定された ID ソース AWS アカウント。詳細については、IAM Identity Center ドキュメントの「[Confirm your identity sources in IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/prereq-identity-sources.html)」を参照してください。デフォルト IAM アイデンティティセンターディレクトリ、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/)」を参照してください。特定のエンドポイントについては、「[Service endpoints and quotas](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/ja_jp/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 には、1 つ以上のタスクを定義するサンプル Python コードが含まれています。7 分ごとに実行され、日付が出力されます。日付の表示後、DAG には、特定の期間の実行をスリープまたは一時停止するタスクが含まれます。
   + `other-sample-dag` – この DAG は 10 分ごとに実行され、日付を出力します。日付の表示後、DAG には、特定の期間の実行をスリープまたは一時停止するタスクが含まれます。
   + `data-extract` – この DAG は 1 時間ごとに実行され、Amazon MWAA データベースをクエリしてメトリクスを収集します。メトリクスが収集されると、この DAG はそれらを Amazon S3 バケットに書き込み、さらに処理と分析を行います。

1. データ処理を効率化するため、Lambda 関数は Amazon S3 イベントによってトリガーされたときに実行されるため、Timestream へのメトリクスのロードが容易になります。

1. Timestream は Amazon Managed Grafana 内のデータソースとして統合されており、Amazon MWAA のすべてのカスタムメトリクスが保存されます。

1. ユーザーはデータをクエリし、カスタムダッシュボードを構築することで、主要なパフォーマンス指標を視覚化し、Amazon MWAA 内のワークフローのオーケストレーションに関するインサイトを得ることができます。

## ツール
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-tools"></a>

**AWS のサービス**
+ [AWS IAM アイデンティティセンター](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) を使用すると、すべての AWS アカウント およびクラウドアプリケーションへのシングルサインオン (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 (Amazon 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) は、高速でスケーラブルなフルマネージド型の専用時系列データベースで、1 日あたり何兆もの時系列データポイントの保存と分析を容易にします。また、LiveAnalytics の Timestream は、データ収集、視覚化、機械学習に一般的に使用されるサービスと統合されます。このパターンでは、生成された Amazon MWAA カスタムメトリクスを取り込むために使用されます。

**その他のツール**
+ [HashiCorp Terraform](https://www.terraform.io/docs) は、コードを使用してクラウドインフラストラクチャとリソースを割り当てて管理するのに役立つ Infrastructure as Code (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 DAG
+ .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/ja_jp/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS 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/ja_jp/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps、データエンジニア | 
| DAG スケジュールを確認します。 | 各 DAG スケジュールを表示するには、**Airflow UI** の **[Schedule]**タブに移動します。以下の各 DAG には、Amazon MWAA 環境で実行され、カスタムメトリクスを生成する事前設定されたスケジュールがあります。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)各 DAG が正常に実行されたことを **Runs** 列で確認することもできます。 | データエンジニア、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/ja_jp/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps | 
| Amazon Timestream プラグインをインストールします。 | Amazon MWAA カスタムメトリクスは、Timestream データベースにロードされます。Timestream プラグインを使用し、Amazon Managed Grafana ダッシュボードでメトリクスを視覚化します。Timestream プラグインをインストールするには、次を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html)詳細については、Amazon Managed Grafana ドキュメントの「[Extend your workspace with plugins](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/ja_jp/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/ja_jp/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps | 
| Amazon Managed Grafana ダッシュボードをカスタマイズします。 | 今後の機能強化のためにダッシュボードをカスタマイズするには、次を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/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` ファイルで使用できます。 | AWS 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/ja_jp/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 コンソールを使用する手順に従ってください。 | AWS DevOps | 
| Terraform によって作成されたリソースを破棄します。 | Terraform によって作成されたリソースと関連するローカル Terraform 状態ファイルを破棄するには、次の手順を実行します。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics.html) | AWS DevOps | 

## トラブルシューティング
<a name="automate-ingestion-and-visualization-of-amazon-mwaa-custom-metrics-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| `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 アイデンティティセンター で を使用する](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 Managed Grafana には次の機能が含まれています。

**アラート** – 事前定義されたしきい値または条件に基づいて、Amazon Managed Grafana にアラートを設定できます。特定のメトリクスが指定されたしきい値を上回ったり下回ったりした場合に、関連するステークホルダーに警告する E メール通知を設定します。詳細については、Amazon Managed Grafana ドキュメントの「[Grafana alerting](https://docs.aws.amazon.com/grafana/latest/userguide/alerts-overview.html)」を参照してください。

**統合** – Amazon Managed Grafana を OpsGenie、PagerDuty、Slack などのさまざまなサードパーティーツールと統合し、通知機能を強化できます。例えば、Amazon Managed Grafana で生成されたアラートに基づいて、ウェブフックを設定したり API と統合したりして、これらのプラットフォームでインシデントや通知をトリガーしたりできます。さらに、このパターンは AWS リソースを作成するための [GitHub リポジトリ](https://github.com/aws-samples/visualize-amazon-mwaa-custom-metrics-grafana)を提供します。このコードをインフラストラクチャのデプロイワークフローとさらに統合できます。