

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

# CloudWatch メトリクスと Amazon Managed Service for Prometheus の統合
<a name="integrating-cw-firehose"></a>

すべてのメトリクスを 1 か所にまとめると便利です。Amazon Managed Service for Prometheus は、Amazon CloudWatch メトリクスを自動的には取り込みません。ただし、Amazon Data Firehose と AWS Lambda を使用すると、CloudWatch メトリクスを Amazon Managed Service for Prometheus にプッシュできます。

このセクションでは、[Amazon CloudWatch メトリクスストリーム](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Metric-Streams.html)をインストルメント化し、[Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) と [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) を使用して Amazon Managed Service for Prometheus にメトリクスを取り込む方法について説明します。

シナリオ全体をデモンストレーションするために、[AWS Cloud Development Kit (CDK)](https://aws.amazon.com/cdk/) を使用してスタックをセットアップし、Firehose 配信ストリーム、Lambda、Amazon S3 バケットを作成します。

## インフラストラクチャ
<a name="integ-cw-fh-infrastructure"></a>

まず、このレシピのインフラストラクチャをセットアップする必要があります。

CloudWatch メトリクスストリームを使用すると、ストリーミングメトリクスデータを HTTP エンドポイントまたは [Amazon S3 バケット](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)に転送できます。

インフラストラクチャのセットアップは、次の 4 つのステップで構成されます。
+ 前提条件を構成する
+ Amazon Managed Service for Prometheus ワークスペースを作成する
+ 依存関係をインストールする
+ スタックをデプロイする

**前提条件 ** 
+ AWS CLI が環境に[インストール](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)され、[構成](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)されている。
+ [AWS CDK TypeScript](https://docs.aws.amazon.com/cdk/latest/guide/work-with-cdk-typescript.html) が環境にインストールされている。
+ Node.js と Go が環境にインストールされている。
+ [AWS オブザーバビリティ CloudWatch メトリクスエクスポーターの github リポジトリ](https://github.com/aws-observability/observability-best-practices/tree/main/sandbox/CWMetricStreamExporter) (`CWMetricsStreamExporter`) がローカルマシンに複製されている。

**Amazon Managed Service for Prometheus ワークスペースを作成するには**

1. このレシピのデモアプリケーションは、Amazon Managed Service for Prometheus 上で実行されます。次のコマンドを使用して、Amazon Managed Service for Prometheus Workspace ワークスペースを作成します。

   ```
   aws amp create-workspace --alias prometheus-demo-recipe
   ```

1. 次のコマンドを使用して、ワークスペースが作成されたことを確認します。

   ```
   aws amp list-workspaces
   ```

   Amazon Managed Service for Prometheus の詳細については、「[Amazon Managed Service for Prometheus ユーザーガイド](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-getting-started.html)」を参照してください。

**依存関係をインストールするには**

1. **依存関係のインストール**

   `aws-o11y-recipes` リポジトリのルートから、次のコマンドを使用してディレクトリを `CWMetricStreamExporter` に変更します。

   ```
   cd sandbox/CWMetricStreamExporter
   ```

   以降では、このディレクトリをリポジトリのルートと見なします。

1. 次のコマンドを実行して、ディレクトリを `/cdk` に変更します。

   ```
   cd cdk
   ```

1. 次のコマンドを実行して、CDK の依存関係をインストールします。

   ```
   npm install
   ```

1. ディレクトリをリポジトリのルートに戻してから、次のコマンドを使用してディレクトリを `/lambda` に変更します。

   ```
   cd lambda
   ```

1. `/lambda` フォルダに移動したら、次のコマンドを使用して Go の依存関係をインストールします。

   ```
   go get
   ```

   これですべての依存関係がインストールされました。

**スタックをデプロイするには**

1. リポジトリのルートで `config.yaml` を開き、Amazon Managed Service for Prometheus ワークスペース URL を変更して、`{workspace}` を新しく作成したワークスペース ID に置き換えます。さらに、リージョンを変更して、Amazon Managed Service for Prometheus ワークスペースのあるリージョンを指定します。

   例えば、以下の部分を変更します。

   ```
   AMP: 
       remote_write_url: "https://aps-workspaces.us-east-2.amazonaws.com/workspaces/{workspaceId}/api/v1/remote_write" 
       region: us-east-2
   ```

   Firehose 配信ストリームと Amazon S3 バケットの名前を好みに合わせて変更します。

1. リポジトリのルートで次のコマンドを実行して、AWS CDK と Lambda コードをビルドします。

   ```
   npm run build
   ```

   このビルドステップにより、Go Lambda バイナリがビルドされ、CDK が CloudFormation にデプロイされます。

1. スタックに必要とされる IAM の変更を確認して承認し、デプロイを完了します。

1. (オプション) 次のコマンドを実行すると、スタックが作成されたことを確認できます。

   ```
   aws cloudformation list-stacks
   ```

   リストに `CDK Stack` という名前のスタックが表示されます。

## Amazon CloudWatch ストリームの作成
<a name="integ-cw-fh-stream"></a>

これでメトリクスを処理する Lambda 関数が設定されたので、Amazon CloudWatch からメトリクスストリームを作成できます。

**CloudWatch メトリクスストリームを作成するには**

1. CloudWatch コンソール ([https://console.aws.amazon.com/cloudwatch/home\$1metric-streams:streamsList](https://console.aws.amazon.com/cloudwatch/home#metric-streams:streamsList)) に移動し、**[メトリクスストリームの作成]** を選択します。

1. 必要なメトリクスを選択します。すべてのメトリクスを選択することも、特定の名前空間からのメトリクスのみを選択することもできます。

1. `Configuration` で、**[アカウントが所有している既存の Firehose を選択]** を選択します。

1. CDK によって以前に作成された Firehose を使用します。**[Kinesis Data Firehose ストリームを選択]** ドロップダウンで、以前に作成したストリームを選択します。これは `CdkStack-KinesisFirehoseStream123456AB-sample1234` のような名前になります。

1. 出力形式を **[JSON]** に変更します。

1. メトリクスストリームにわかりやすい名前を付けます。

1. **[メトリクスストリームの作成]** を選択します。

1. (オプション) Lambda 関数の呼び出しを検証するには、[Lambda コンソール](https://console.aws.amazon.com/lambda/home)に移動して `KinesisMessageHandler` 関数を選択します。**[モニタリング]** タブと **[ログ]** サブタブを選択すると、**[最近の呼び出し]** に、トリガーされている Lambda 関数のエントリが表示されます。
**注記**  
呼び出しが **[モニタリング]** タブに表示されるようになるまでに、最大で 5 分ほどかかることがあります。

これで、Amazon CloudWatch から Amazon Managed Service for Prometheus にメトリクスがストリーミングされるようになりました。

## クリーンアップ
<a name="integ-cw-fh-cleanup"></a>

この例で使用したリソースのクリーンアップが必要になる場合があります。以下の手順では、その方法を説明します。これにより、作成したメトリクスストリームが停止します。

**リソースをクリーンアップするには**

1. まず、次のコマンドを使用して CloudFormation スタックを削除します。

   ```
   cd cdk
   cdk destroy
   ```

1. Amazon Managed Service for Prometheus ワークスペースを削除します。

   ```
   aws amp delete-workspace --workspace-id \
       `aws amp list-workspaces --alias prometheus-sample-app --query 'workspaces[0].workspaceId' --output text`
   ```

1. 最後に、[Amazon CloudWatch コンソール](https://console.aws.amazon.com/cloudwatch/home#metric-streams:streamsList)を使用して Amazon CloudWatch メトリクスストリームを削除します。