Distro for Open Telemetry AWS ECSを使用して Amazon からのメトリクスの取り込みを設定する - Amazon Managed Service for Prometheus

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

Distro for Open Telemetry AWS ECSを使用して Amazon からのメトリクスの取り込みを設定する

このセクションでは、 Distro for Open Telemetry (ECS) を使用して Amazon Elastic Container Service (Amazon ) からメトリクスを収集し、Amazon Managed Service for Prometheus AWS に取り込む方法について説明しますADOT。また、Amazon Managed Grafana でメトリクスを視覚化する方法についても説明します。

前提条件

重要

開始する前に、デフォルト設定の クラスター、 AWS Fargate Amazon Managed Service for Prometheus ワークスペース、および Amazon Managed Grafana ワークスペースを持つ Amazon ECS環境が必要です。ユーザーがコンテナのワークロード、Amazon Managed Service for Prometheus、Amazon Managed Grafana に精通していることを前提としています。

詳細については、以下のリンクを参照してください。

  • デフォルト設定で Fargate クラスターに Amazon ECS環境を作成する方法については、「Amazon デベロッパーガイド」の「クラスターの作成ECS」を参照してください。

  • Amazon Managed Service for Prometheus ワークスペースを作成する方法については、「Amazon Managed Service for Prometheus ユーザーガイド」の「ワークスペースの作成」を参照してください。

  • Amazon Managed Grafana ワークスペースを作成する方法については、「Amazon Managed Grafana User Guide」の「Creating a workspace」を参照してください。

ステップ 1: カスタムADOTコレクターコンテナイメージを定義する

次の設定ファイルをテンプレートとして使用して、独自のADOTコレクターコンテナイメージを定義します。置換 my-remote-URL また、my-region endpointregionの値を使用します。設定を adot-config.yaml というファイルに保存します。

注記

この設定では、sigv4auth 拡張機能を使用して Amazon Managed Service for Prometheus への呼び出しを認証します。の設定の詳細についてはsigv4auth、 の「Authenticator - Sigv4」を参照してください GitHub。

receivers: prometheus: config: global: scrape_interval: 15s scrape_timeout: 10s scrape_configs: - job_name: "prometheus" static_configs: - targets: [ 0.0.0.0:9090 ] awsecscontainermetrics: collection_interval: 10s processors: filter: metrics: include: match_type: strict metric_names: - ecs.task.memory.utilized - ecs.task.memory.reserved - ecs.task.cpu.utilized - ecs.task.cpu.reserved - ecs.task.network.rate.rx - ecs.task.network.rate.tx - ecs.task.storage.read_bytes - ecs.task.storage.write_bytes exporters: prometheusremotewrite: endpoint: my-remote-URL auth: authenticator: sigv4auth logging: loglevel: info extensions: health_check: pprof: endpoint: :1888 zpages: endpoint: :55679 sigv4auth: region: my-region service: aps service: extensions: [pprof, zpages, health_check, sigv4auth] pipelines: metrics: receivers: [prometheus] exporters: [logging, prometheusremotewrite] metrics/ecs: receivers: [awsecscontainermetrics] processors: [filter] exporters: [logging, prometheusremotewrite]

ステップ 2: ADOTコレクターコンテナイメージを Amazon ECRリポジトリにプッシュする

Dockerfile を使用してコンテナイメージを作成し、Amazon Elastic Container Registry (ECR) リポジトリにプッシュします。

  1. Dockerfile を構築してコンテナイメージをコピーし、Docker OTEL イメージに追加します。

    FROM public.ecr.aws/aws-observability/aws-otel-collector:latest COPY adot-config.yaml /etc/ecs/otel-config.yaml CMD ["--config=/etc/ecs/otel-config.yaml"]
  2. Amazon ECRリポジトリを作成します。

    # create repo: COLLECTOR_REPOSITORY=$(aws ecr create-repository --repository aws-otel-collector \ --query repository.repositoryUri --output text)
  3. コンテナイメージを作成します。

    # build ADOT collector image: docker build -t $COLLECTOR_REPOSITORY:ecs .
    注記

    コンテナのビルドは、そのコンテナが実行される環境と同じ環境で行うことを前提としています。そうでない場合、イメージのビルド時に --platform パラメータの使用が必要になることがあります。

  4. Amazon ECRリポジトリにサインインします。置換 my-region を自分のregion値で指定します。

    # sign in to repo: aws ecr get-login-password --region my-region | \ docker login --username AWS --password-stdin $COLLECTOR_REPOSITORY
  5. コンテナイメージをプッシュします。

    # push ADOT collector image: docker push $COLLECTOR_REPOSITORY:ecs

ステップ 3: Amazon Managed Service for Prometheus をスクレイプする Amazon ECSタスク定義を作成する

Amazon Managed Service for Prometheus をスクレイプする Amazon ECSタスク定義を作成します。タスク定義には、adot-collector という名前のコンテナと、prometheus という名前のコンテナを含める必要があります。prometheus はメトリクスを生成し、adot-collectorprometheus をスクレイピングします。

注記

Amazon Managed Service for Prometheus はサービスとして実行され、コンテナからメトリクスを収集します。この場合のコンテナは、Prometheus をエージェントモードでローカルで実行し、ローカルのメトリクスを Amazon Managed Service for Prometheus に送信します。

例: タスク定義

以下の例は、タスク定義がどのようなものかを示しています。この例をテンプレートとして使用して、独自のタスク定義を作成できます。のimage値をリポジトリURLとイメージタグ () adot-collectorに置き換えます$COLLECTOR_REPOSITORY:ecsadot-collectorprometheusregion の値は、使用中の region の値に置き換えます。

{ "family": "adot-prom", "networkMode": "awsvpc", "containerDefinitions": [ { "name": "adot-collector", "image": "account_id.dkr.ecr.region.amazonaws.com/image-tag", "essential": true, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/ecs-adot-collector", "awslogs-region": "my-region", "awslogs-stream-prefix": "ecs", "awslogs-create-group": "True" } } }, { "name": "prometheus", "image": "prom/prometheus:main", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/ecs-prom", "awslogs-region": "my-region", "awslogs-stream-prefix": "ecs", "awslogs-create-group": "True" } } } ], "requiresCompatibilities": [ "FARGATE" ], "cpu": "1024" }

ステップ 4: Amazon Managed Service for Prometheus にアクセスするためのアクセス許可をタスクに付与する

スクレイピングされたメトリクスを Amazon Managed Service for Prometheus に送信するには、Amazon ECSタスクに オペレーションを AWS API呼び出すための正しいアクセス許可が必要です。タスクの IAMロールを作成し、AmazonPrometheusRemoteWriteAccessポリシーをアタッチする必要があります。このロールの作成とポリシーのアタッチの詳細については、「タスク用の IAMロールとポリシーの作成」を参照してください。

IAM ロールAmazonPrometheusRemoteWriteAccessに をアタッチし、そのロールをタスクに使用すると、Amazon ECSはスクレイピングされたメトリクスを Amazon Managed Service for Prometheus に送信できます。

ステップ 5: Amazon Managed Grafana でメトリクスを視覚化する

重要

開始する前に、Amazon タスク定義で Fargate ECSタスクを実行する必要があります。そうしないと、Amazon Managed Service for Prometheus でメトリクスを使用することができません。

  1. Amazon Managed Grafana ワークスペースのナビゲーションペインで、 AWS アイコンの下にあるデータソースを選択します。

  2. [データソース] タブの [サービス] で、[Amazon Managed Service for Prometheus] を選択し、[デフォルトのリージョン] を選択します。

  3. [データソースを追加する] を選択する。

  4. ecs および prometheus プレフィックスを使用して、メトリクスのクエリと表示を行います。