View a markdown version of this page

Terraform を使用して Amazon Managed Grafana での Amazon MWAA カスタムメトリクスの取り込みと視覚化を自動化する - AWS 規範ガイダンス

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

Terraform を使用して Amazon Managed Grafana での Amazon MWAA カスタムメトリクスの取り込みと視覚化を自動化する

Faisal Abdullah、Satya Vajrapu (Amazon Web Services)

概要

このパターンでは、Amazon Managed Grafana を使用して、Amazon Managed Workflows for Apache Airflow (Amazon MWAA) によって取り込まれるカスタムメトリクスを作成およびモニタリングする方法を説明します。Amazon MWAA はワークフローのオーケストレーターとして機能し、Python でスクリプト化された有向非巡回グラフ (DAG) を使用します。このパターンは、過去 1 時間以内に実行 DAG の合計数、1 時間あたりの合格および不合格の DAG の数、これらのプロセスの平均期間など、カスタムメトリクスのモニタリングに焦点を当てています。この分析は、Amazon Managed Grafana を Amazon MWAA と統合して、この環境内のワークフローのオーケストレーションに関する包括的なモニタリングとインサイトを実現する方法を示しています。

前提条件と制限

前提条件

  • 以下を作成および管理するために必要なユーザーアクセス許可 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 のターミナルであるシェル環境へのアクセス。

  • Git がインストールされ、最新バージョンの AWS Command Line Interface (AWS CLI) がインストールされ、設定されているシェル環境。詳細については、 AWS CLI ドキュメントの「 の最新バージョンのインストールまたは更新 AWS CLI」を参照してください。

  • Terraform required_version = ">= 1.6.1, < 2.0.0" バージョンがインストール済み。tfswitch を使用して、Terraform の異なるバージョンを切り替えることができます。

  • AWS IAM アイデンティティセンター 用に で設定された ID ソース AWS アカウント。詳細については、IAM Identity Center ドキュメントの「Confirm your identity sources in IAM Identity Center」を参照してください。デフォルト IAM アイデンティティセンターディレクトリ、Active Directory、または Okta などの外部 ID プロバイダー (IdP) から選択できます。詳細については、「関連リソース」を参照してください。

制限事項

  • 一部の AWS のサービス は では使用できません AWS リージョン。利用可能なリージョンについては、「AWS のサービス (リージョン別)」を参照してください。特定のエンドポイントについては、「Service endpoints and quotas」で、サービスのリンクを選択してご確認ください。

製品バージョン

  • Terraform required_version = ">= 1.6.1, < 2.0.0"

  • Amazon Managed Grafana バージョン 9.4 以降。このパターンはバージョン 9.4 でテストされました。

アーキテクチャ

次のアーキテクチャ図は、ソリューション AWS のサービス で使用される を示しています。

Amazon MWAA カスタムメトリクスの取り込みを自動化するワークフロー。

前の図は、次のワークフローを段階的に示しています。

  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 バケットに書き込み、さらに処理と分析を行います。

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

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

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

ツール

AWS のサービス

  • AWS IAM アイデンティティセンター を使用すると、すべての AWS アカウント およびクラウドアプリケーションへのシングルサインオン (SSO) アクセスを一元管理できます。

  • AWS Lambda は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。このパターンでは、 は Amazon S3 イベントに応答して Python コード AWS Lambda を実行し、コンピューティングリソースを自動的に管理します。

  • Amazon Managed Grafana は、フルマネージド型データ可視化サービスであり、メトリクス、ログ、トレースを照会、関連付け、視覚化できます。このパターンでは、Amazon Managed Grafana を使用し、メトリクスの視覚化とアラートのためのダッシュボードを作成します。

  • Amazon Managed Workflows for Apache Airflow (Amazon MWAA) は、Apache Airflow 用のマネージドオーケストレーションサービスで、クラウド上でデータパイプラインを大規模に設定、運用するために使用できます。Apache Airflow は、ワークフローと呼ばれる一連のプロセスとタスクをプログラムで作成、スケジュール、監視するために使用されるオープンソースのツールです。このパターンでは、サンプル DAG とメトリクスエクストラクタ DAG が Amazon MWAA にデプロイされます。

  • Amazon Simple Storage Service (Amazon S3) は、あらゆる量のデータを保存、保護、取得できるクラウドベースのオブジェクトストレージサービスです。このパターンでは、Amazon S3 を使用して DAG、スクリプト、カスタムメトリクスを CSV 形式で保存します。

  • Amazon Timestream for LiveAnalytics は、高速でスケーラブルなフルマネージド型の専用時系列データベースで、1 日あたり何兆もの時系列データポイントの保存と分析を容易にします。また、LiveAnalytics の Timestream は、データ収集、視覚化、機械学習に一般的に使用されるサービスと統合されます。このパターンでは、生成された Amazon MWAA カスタムメトリクスを取り込むために使用されます。

その他のツール

  • HashiCorp Terraform は、コードを使用してクラウドインフラストラクチャとリソースを割り当てて管理するのに役立つ Infrastructure as Code (IaC) ツールです。このパターンでは、Terraform モジュールを使用して AWSでのインフラストラクチャのプロビジョニングを自動化します。

コードリポジトリ

このパターンのコードは、GitHub の 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 ファイル

ベストプラクティス

Terraform は、実際のリソースを設定にマッピングできるよう、マネージドインフラストラクチャと設定に関する状態を保存する必要があります。デフォルトでは、Terraform は terraform.tfstate という名前のファイルに状態をローカルに保存します。インフラストラクチャの現在の状態が維持されるため、Terraform 状態ファイルの安全性と整合性を確保することが重要です。詳細については、Terraform ドキュメントの「Remote State」を参照してください。

エピック

タスク説明必要なスキル

インフラストラクチャを準備します。

ソリューションインフラストラクチャをデプロイするには、次を実行します。

  1. ローカルコンピュータで、または を使用して、ターミナルまたはコマンドプロンプトを開きます AWS CloudShell。

  2. リポジトリのクローンを作成するディレクトリに移動します。

  3. リポジトリのクローンを作成するには、次のコマンドを実行します。

    git clone https://github.com/aws-samples/visualize-amazon-mwaa-custom-metrics-grafana
  4. クローン作成プロセスが完了したら、次のコマンドを実行し、クローンされたリポジトリディレクトリに移動します。

    cd visualize-amazon-mwaa-custom-metrics-grafana/stacks/infra
  5. 必要なプロバイダーをダウンロードして初期化するには、次のコマンドを実行します。

    terraform init
  6. Terraform が作成するすべてのリソースの包括的なビューを取得するには、次のコマンドを実行します。

    terraform plan

    Terraform は次のリソースをプロビジョニングします。

    • Amazon Virtual Private Cloud (Amazon VPC) と関連するネットワークコンポーネント

    • Amazon S3 のリソース

    • AWS Lambda 関数

    • Amazon Managed Grafana リソース (ワークスペース、ダッシュボード、データソース)

    • サポートする IAM リソース (ロールとポリシー)

  7. プラン出力から AWS リソースを作成するには、次のコマンドを実行します。

    terraform apply -auto-approve

    インフラストラクチャのプロビジョニングは約 20 分で完了します。

  8. Terraform ファイルで定義された設定に従って指定された AWS リソースを作成するには、次のコマンドを実行します。

    terraform apply
AWS DevOps
タスク説明必要なスキル

Amazon MWAA 環境を検証する

Amazon MWAA 環境を検証するには、次を実行します。

  1. にサインインし AWS マネジメントコンソール、Amazon MWAA ダッシュボードコンソールに移動し、Open Airflow UI を選択します。

  2. Active ステータスの次の 3 つの DAG が表示されます。

    • data-extract

    • run-example-dag

    • other-sample-dag

  3. DAG がアクティブでない場合は、DAG 名の横にあるトグルスイッチを有効にすることでアクティブにできます。

AWS DevOps、データエンジニア

DAG スケジュールを確認します。

各 DAG スケジュールを表示するには、Airflow UI[Schedule]タブに移動します。

以下の各 DAG には、Amazon MWAA 環境で実行され、カスタムメトリクスを生成する事前設定されたスケジュールがあります。

  • run-example-dag – 7 分ごとに実行されます

  • other-sample-dag – 10 分ごとに実行されます

  • data-extract – 1 時間ごとに実行されます

各 DAG が正常に実行されたことを Runs 列で確認することもできます。

データエンジニア、AWS DevOps
タスク説明必要なスキル

Amazon Managed Grafana ワークスペースへのアクセスを設定します。

Terraform スクリプトが、必要な Amazon Managed Grafana ワークスペース、ダッシュボード、メトリクスページを作成しました。アクセスを表示できるように設定するには、以下を実行します。

  1. Amazon Managed Grafana コンソールを開きます。

  2. [ワークスペース] でワークスペース grafana-ws-dev を選択し、下のペインの [認証] タブに移動します。

  3. [新しいユーザーまたはグループの割り当て] ボタンを選択します。

  4. [グループ] タブにグループを追加するか、[ユーザー] タブにユーザーを追加し、[Assign user and groups] ボタンを選択します。

  5. ユーザー (またはグループ) を追加したら、このユーザー (またはグループ) を管理者にします。[割り当てられたユーザーグループ] タブの [Assigned users or group] からユーザーを選択し、ドロップダウンメニューから [管理者を作る] を選択します。詳細については、Amazon Managed Grafana ドキュメントの「Amazon Managed Grafana ワークスペース AWS IAM アイデンティティセンター で使用する」を参照してください。

  6. [ワークスペース] に移動し、[Grafana ワークスペース URL] を選択します。管理者として Amazon Managed Grafana にサインインするには、「サインイン AWS IAM アイデンティティセンター」を選択します。

AWS DevOps

Amazon Timestream プラグインをインストールします。

Amazon MWAA カスタムメトリクスは、Timestream データベースにロードされます。Timestream プラグインを使用し、Amazon Managed Grafana ダッシュボードでメトリクスを視覚化します。

Timestream プラグインをインストールするには、次を実行します。

  1. Amazon Managed Grafana コンソールで、左側のナビゲーションペインのメニューを展開し、[Administration, Plugins] に移動します。

  2. Amazon Timestream プラグインの最新バージョンを検索してインストールします。

  3. プラグインをインストールしたら、[管理][データソース] に移動して Timestream データソースを確認します。データソースが表示されない場合は、ページを更新します。

詳細については、Amazon Managed Grafana ドキュメントの「Extend your workspace with plugins」を参照してください。

AWS DevOps、DevOps エンジニア
タスク説明必要なスキル

Amazon Managed Grafana ダッシュボードを表示します。

Amazon Managed Grafana ワークスペースに取り込まれたメトリクスを表示するには次の手順を実行します。

  1. Amazon Managed Grafana コンソールで、左側のナビゲーションペインの [ダッシュボード] を選択します。

  2. メトリクスを表示するには、[MWAA events dashboards] を選択し、[mwaa_metrics] を選択します。

ダッシュボードのメトリクスページには、次の情報が表示されます。

  • 過去 1 時間の合計 DAG 実行数

  • 過去 1 時間以内に成功、失敗、実行中の DAG 実行の合計数

  • すべての DAG 実行、成功した DAG 実行、失敗した DAG 実行の平均期間

AWS DevOps

Amazon Managed Grafana ダッシュボードをカスタマイズします。

今後の機能強化のためにダッシュボードをカスタマイズするには、次を実行します。

  1. Amazon Managed Grafana ダッシュボードの mwaa_metrics ページで、ダッシュボード設定アイコンを選択します。

  2. ダッシュボードを定義するデータ構造を表示するには、[JSON model] を選択します。ダッシュボードをカスタマイズするには、この JSON モデルをコンソールで直接編集します。

または、このダッシュボードのソースコードは、GitHub リポジトリstacks/infra/grafana フォルダの dashboard.json ファイルで使用できます。

AWS DevOps
タスク説明必要なスキル

Amazon MWAA DAG の実行を一時停止します。

DAG 実行を一時停止するには、次を実行します。

  1. Amazon MWAA コンソールで、[Airflow 環境] に移動し、[Airflow UI を開く] を選択します。

  2. DAG を一時停止するには、各 DAG の横にあるトグルスイッチを使用します。

  3. [Airflow UI] ページを更新し、[一時停止] セクションに 3 つの DAG を一覧表示します。

AWS DevOps、データエンジニア

Amazon S3 バケットのオブジェクトを削除します。

Amazon S3 バケットの mwaa-events-bucket-* および mwaa-metrics-bucket-* を削除するには、Amazon S3 ドキュメントの「汎用バケットの削除」で Amazon S3 コンソールを使用する手順に従ってください。

AWS DevOps

Terraform によって作成されたリソースを破棄します。

Terraform によって作成されたリソースと関連するローカル Terraform 状態ファイルを破棄するには、次の手順を実行します。

  1. (オプション) リソースを削除する前に Terraform が行う変更をプレビューできます。プランを生成するには、次のコマンドを実行します。

    terraform plan -destroy

    コマンド出力は、destroyコマンドが以前に作成されたすべての AWS リソースを削除することを示しています。

  2. terraform destroy -auto-approve

    このコマンドは、インフラストラクチャを破棄するのに約 20 分かかります。

    注記

    Terraform によって管理されるすべてのリソースを破棄するには、次のコマンドを実行します。: -auto-approve タグは、ユーザーの確認があるまでリソースの破棄の開始を待機しません。

  3. ローカル Terraform 状態ファイルを削除するには次のコマンドを実行します。

    rm .terraform.lock.hcl rm -rf .terraform rm terraform.tfstate*
AWS DevOps

トラブルシューティング

問題ソリューション

null_resource.plugin_mgmt (local-exec): aws: error: argument operation: Invalid choice, valid choices are:

AWS CLI を最新バージョンにアップグレードします。

データソースのロードエラー:

Fetch error: 404 Not Found Instantiating…

エラーは断続的です。数分待ってからデータソースを更新して、リストされた Timestream データソースを表示します。

関連リソース

AWS ドキュメント

AWS ビデオ

  • 次のビデオに示されているように、認証用に Amazon Managed Grafana で IAM Identity Center を設定します。

https://www.youtube-nocookie.com/embed/XX2Xcz-Ps9U?controls=0

  • IAM Identity Center が利用できない場合は、次の動画に示されているように、Okta などの外部 ID プロバイダー (IdP) を使用して Amazon Managed Grafana 認証を統合することもできます。

https://www.youtube-nocookie.com/embed/Z4JHxl2xpOg?controls=0

追加情報

Amazon MWAA 環境の包括的なモニタリングおよびアラートソリューションを作成し、事前対応型の管理と潜在的な問題や異常への迅速な対応を可能にします。Amazon Managed Grafana には次の機能が含まれています。

アラート – 事前定義されたしきい値または条件に基づいて、Amazon Managed Grafana にアラートを設定できます。特定のメトリクスが指定されたしきい値を上回ったり下回ったりした場合に、関連するステークホルダーに警告する E メール通知を設定します。詳細については、Amazon Managed Grafana ドキュメントの「Grafana alerting」を参照してください。

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