アプリケーションメトリクスを Amazon Managed Service for Prometheus にエクスポートする - Amazon Elastic Container Service

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

アプリケーションメトリクスを Amazon Managed Service for Prometheus にエクスポートする

Amazon ECS は、タスクレベル CPU、メモリ、ネットワーク、ストレージメトリクス、カスタムアプリケーションメトリクスを Amazon Managed Service for Prometheus へエクスポートすることをサポートしています。これを行うには、タスク定義に OpenTelemetry サイドカーコンテナ用 AWS Distro を追加します。Amazon ECS コンソールでは、新しいタスク定義を作成するときにメトリクス収集を使用するオプションを追加することで、このプロセスを簡素化します。詳細については、「コンソールを使用したタスク定義の作成」を参照してください。

メトリクスは Amazon Managed Service for Prometheus にエクスポートされ、Amazon Managed Grafana ダッシュボードを使用して閲覧できます。アプリケーションは、Prometheus ライブラリまたは OpenTelemetry SDK を使用して計測する必要があります。 OpenTelemetry SDK を使用したアプリケーションの計測の詳細については、 Distro for AWS ドキュメントの「Introduction to OpenTelemetry Distro for 」を参照してください。 AWS OpenTelemetry

Prometheus ライブラリを使用する場合は、アプリケーションがメトリクスデータのスクレイプに使用する /metrics のエンドポイントを公開する必要があります。Prometheus ライブラリを使用してアプリケーションを計測する詳細については、「Prometheus ドキュメント」の「Prometheus クライアントライブラリ」を参照してください。

考慮事項

Distro for との Fargate 統合で Amazon ECS AWS を使用して Amazon Managed Service for Prometheus にアプリケーションメトリクスを送信する場合は OpenTelemetry 、以下を考慮する必要があります。

  • OpenTelemetry 統合用 AWS Distro は、Fargate でホストされている Amazon ECS ワークロードと Amazon EC2 インスタンスでホストされている Amazon ECS ワークロードでサポートされています。現在、外部インスタンスはサポートされていません。

  • デフォルトでは、Distro for AWS OpenTelemetry には、Amazon Managed Service for Prometheus にエクスポートするときに、アプリケーションメトリクスで使用できるすべてのタスクレベルのディメンションが含まれます。アプリケーションをインストルメント化して、ディメンションを追加することもできます。詳細については、 Distro for documentation の「Amazon Managed Service for Prometheus の Prometheus リモート書き込みエクスポーターの開始方法 OpenTelemetry 」を参照してください。 AWS

Amazon Managed Service for Prometheus と OpenTelemetry の統合に AWS Distro に必要な IAM アクセス許可

サイドカー用 AWS OpenTelemetry Distro を使用した Amazon ECS と Amazon Managed Service for Prometheus の統合では、タスク IAM ロールを作成し、タスク定義でロールを指定する必要があります。このタスク用の IAM ロールは、タスク定義を登録する前に、次の手順を使用して手動で作成する必要があります。

また、 OpenTelemetry サイドカー用 AWS Distro は、タスク定義でもタスク実行 IAM ロールを作成して指定する必要がある CloudWatch Logs にコンテナログをルーティングするように設定することをお勧めします。Amazon ECS コンソールがユーザーに代わってタスク実行 IAM ロールを処理しますが、タスク IAM ロールは手動で作成する必要があります。タスク実行用の IAM ロールを作成する方法の詳細については、「Amazon ECS タスク実行IAM ロール」を参照してください。

重要

Distro for AWS integration を使用してアプリケーショントレースデータも収集する場合は OpenTelemetry 、タスク IAM ロールにその統合に必要なアクセス許可も含まれていることを確認してください。詳細については、「アプリケーショントレースデータを使用して Amazon ECS 最適化の機会を特定する」を参照してください。

Elastic Container Service のサービスロールを作成するには (IAM コンソール)
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/iam/ で IAM コンソールを開きます。

  2. IAM コンソールのナビゲーションペインで、[ロール]、[ロールを作成] を選択します。

  3. 信頼できるエンティティタイプ で、AWS のサービス を選択します。

  4. サービスまたはユースケース で、Elastic Container Service を選択し、Elastic Container Service タスクのユースケースを選択します。

  5. [次へ] を選択します。

  6. アクセス許可の追加セクションで、 を検索しAmazonPrometheusRemoteWriteAccess、ポリシーを選択します。

  7. (オプション) アクセス許可の境界を設定します。このアドバンスド機能は、サービスロールで使用できますが、サービスにリンクされたロールではありません。

    1. [アクセス許可の境界の設定] セクションを開き、[アクセス許可の境界を使用してロールのアクセス許可の上限を設定する] を選択します。

      IAM には、アカウントの AWS 管理ポリシーとカスタマー管理ポリシーのリストが含まれます。

    2. アクセス許可の境界として使用するポリシーを選択します。

  8. [次へ] を選択します。

  9. このロールの目的を識別しやすいロール名またはロール名サフィックスを入力します。

    重要

    ロールに名前を付けるときは、次のことに注意してください。

    • ロール名は 内で一意である必要があり AWS アカウント、大文字と小文字を区別して一意にすることはできません。

      例えば、PRODROLEprodrole の両方の名前でロールを作成することはできません。ロール名がポリシーまたは ARN の一部として使用される場合、ロール名は大文字と小文字が区別されます。ただし、サインインプロセスなど、コンソールにロール名がユーザーに表示される場合、ロール名は大文字と小文字が区別されません。

    • 他のエンティティがロールを参照する可能性があるため、ロールを作成した後にロール名を編集することはできません。

  10. (オプション) [説明] にロールの説明を入力します。

  11. (オプション) ロールのユースケースとアクセス許可を編集するには、[ステップ 1: 信頼されたエンティティを選択] または [ステップ 2: アクセス権限を追加] のセクションで [編集] を選択します。

  12. (オプション) ロールの識別、整理、検索を簡単にするには、キーと値のペアとしてタグを追加します。IAM でのタグの使用に関する詳細については、『IAM ユーザーガイド』の「IAM リソースにタグを付ける」を参照してください。

  13. ロールを確認したら、[Create role] (ロールを作成) を選択します。

タスク定義で OpenTelemetry サイドカー用 AWS Distro を指定する

Amazon ECS コンソールでは、メトリクス収集の使用オプションを使用することで、 OpenTelemetry サイドカーコンテナ用の AWS Distro を作成する作業が簡素化されます。詳細については、「コンソールを使用したタスク定義の作成」を参照してください。

Amazon ECS コンソールを使用していない場合は、 OpenTelemetry サイドカーコンテナ用 AWS Distro をタスク定義に手動で追加できます。次のタスク定義の例は、Amazon Managed Service for Prometheus 統合の OpenTelemetry サイドカー用 AWS Distro を追加するためのコンテナ定義を示しています。

{ "family": "otel-using-cloudwatch", "taskRoleArn": "arn:aws:iam::111122223333:role/AmazonECS_OpenTelemetryCloudWatchRole", "executionRoleArn": "arn:aws:iam::111122223333:role/ecsTaskExecutionRole", "containerDefinitions": [{ "name": "aws-otel-emitter", "image": "application-image", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "true", "awslogs-group": "/ecs/aws-otel-emitter", "awslogs-region": "aws-region", "awslogs-stream-prefix": "ecs" } }, "dependsOn": [{ "containerName": "aws-otel-collector", "condition": "START" }] }, { "name": "aws-otel-collector", "image": "public.ecr.aws/aws-observability/aws-otel-collector:v0.30.0", "essential": true, "command": [ "--config=/etc/ecs/ecs-amp.yaml" ], "environment": [{ "name": "AWS_PROMETHEUS_ENDPOINT", "value": "https://aps-workspaces.aws-region.amazonaws.com/workspaces/ws-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111/api/v1/remote_write" }], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "True", "awslogs-group": "/ecs/ecs-aws-otel-sidecar-collector", "awslogs-region": "aws-region", "awslogs-stream-prefix": "ecs" } } } ], "networkMode": "awsvpc", "requiresCompatibilities": [ "FARGATE" ], "cpu": "1024", "memory": "3072" }