Docs » Splunk Distribution of the OpenTelemetry Collector の利用開始 » Other Collector deployment tools and options: ECS/EC2, Fargate, Nomad, PCF » Amazon ECS Fargate でCollectorをデプロイする

Amazon ECS Fargate でCollectorをデプロイする 🔗

Splunk Distribution of the OpenTelemetry Collector を、AWS Fargate を使用して Amazon ECS にデーモンサービスとしてデプロイします。特に断りのない限り、Collector は ECS タスクのサイドカー (追加コンテナ) としてデプロイされます。AWS Fargateはコンテナとして分類され、Fargateメトリクスはコンテナメトリクスとして分類されます。

ECS Fargate環境でCollectorを使用してJavaアプリケーションを監視する方法の例については、シナリオ:ECS FargateのOpenTelemetryでJavaサービスを監視する を参照してください。

要件 🔗

先に進む前に、AWS Fargate(Fargate)の予備知識が必要です。詳細については、公式の AWS Fargate ユーザーガイド を参照してください。

このデプロイメントには、Collectorリリースv0.33.0以上(イメージタグ 0.33.0 以上に対応)が必要です。最新のイメージをダウンロードするには、イメージリポジトリ を参照してください。

ガイド付きセットアップを使用する 🔗

ガイド付きセットアップを使用して、CollectorをECSタスクのサイドカーとしてデプロイします。次のCollector 設定オプションのいずれかを選択します:

  • デフォルト: Collector イメージの /etc/otel/collector/fargate_config.yaml ファイルが Collector 構成に使用されます。

  • File: Collector 設定に使用するファイルを指定します。ecs_observer 設定 を参照してください。

  • AWSパラメータストア: Collector構成に使用するAWSパラメータストアのキーまたはARNを指定します。ecs_observer 設定 を参照してください。

セットアップガイドにアクセスする 🔗

Open the Amazon Fargate guided setup .

オプションで、ガイド付きセットアップに自分で移動することもできます:

  1. Splunk Observability Cloud にログインします。

  2. ナビゲーションメニューで、Data Management を選択します。

  3. Available integrations タブにアクセスするか、Deployed integrations タブで Add Integration を選択します。

  4. Select the tile for Amazon Fargate.

  5. セットアップガイドの手順に従ってください。

はじめに 🔗

例で示したデフォルトの Collector コンテナ定義をコピーし、以下の変更を加えます:

  • MY_SPLUNK_ACCESS_TOKENMY_SPLUNK_REALM を有効な値に置き換えます。

  • 画像タグを最新バージョンに更新します。

  • タスク定義の containerDefinitions セクションに設定を追加します。

{
"environment": [
  {
    "name": "SPLUNK_ACCESS_TOKEN",
    "value": "MY_SPLUNK_ACCESS_TOKEN"
  },
  {
    "name": "SPLUNK_REALM",
    "value": "MY_SPLUNK_REALM"
  },
  {
    "name": "SPLUNK_CONFIG",
    "value": "/etc/otel/collector/fargate_config.yaml"
  },
  {
    "name": "ECS_METADATA_EXCLUDED_IMAGES",
    "value": "[\"quay.io/signalfx/splunk-otel-collector*\"]"
  }
],
"image": "quay.io/signalfx/splunk-otel-collector:0.33.0",
"essential": true,
"name": "splunk_otel_collector"
}

このコンテナ定義の例では、Collector はデフォルトの構成ファイル /etc/otel/collector/fargate_config.yaml を使用するように構成されています。CollectorイメージのDockerfileは Dockerfile で、デフォルトの設定ファイルの内容は Fargate設定 で確認できます。smartagent/ecs-metadata レシーバーはデフォルトで有効になっています。

要約すると、デフォルトのCollectorコンテナ定義では以下のことが行われます:

  • Collector イメージを指定します。

  • 環境変数 SPLUNK_ACCESS_TOKEN を使ってアクセストークンを設定します。

  • 環境変数 SPLUNK_REALM を使ってレルムを設定します。

  • 環境変数 SPLUNK_CONFIG を使って、デフォルトの設定ファイルパスを設定します。

  • 環境変数 ECS_METADATA_EXCLUDED_IMAGES を使用して、Collector イメージから ecs-metadata メトリクスを除外します。

除外したいメトリクスの文字列化された配列を環境変数 METRICS_TO_EXCLUDE に代入します。環境変数 SPLUNK_MEMORY_LIMIT_MIB を使用して、memory_limiter プロセッサーのメモリ制限を設定できます。デフォルトのメモリ制限は512MiBです。

カスタム設定を使用する 🔗

次の例は、カスタム設定を使用するように設定されたCollectorのコンテナ定義の抜粋を示しています。/path/to/custom/config/file は実際のカスタム設定ファイルパスのプレースホルダ値で、0.33.0 は現在の最新のイメージタグです。カスタム設定ファイルは、タスクにアタッチされたボリュームに存在する必要があります。

{
"environment": [
  {
    "name": "SPLUNK_CONFIG",
    "value": "/path/to/custom/config/file"
  }
],
"image": "quay.io/signalfx/splunk-otel-collector:0.33.0",
"essential": true,
"name": "splunk_otel_collector"
}

カスタム Collector コンテナの定義:

  • Collector イメージを指定します。

  • 環境変数 SPLUNK_CONFIG にカスタム設定ファイルのパスを設定します。

あるいは、Configure the Amazon Elastic Container Service Observer extension で説明されているように、SPLUNK_CONFIG_YAML 環境変数を使用してカスタムコンフィギュレーション YAML を直接指定することもできます。

ecs_observer 設定 🔗

カスタム設定で拡張 Amazon Elastic Container Service Observer ( ecs_observer ) を使用すると、サービス名、タスク定義、コンテナ・ラベルでフィルターリングされた、実行中のタスクのメトリクスターゲットを検出できます。 ecs_observer は現在 Prometheus ターゲットに限定されており、以下の読み取り専用アクセス許可が必要です。このアクセス許可は、タスクロールにアタッチされたカスタマ管理ポリシーに追加することで、タスクロールに追加できます。

ecs:List*
ecs:Describe*

以下のカスタム設定例では、lorem-ipsum-cluster クラスターと us-west-2 地域で Prometheus ターゲットを検索するように設定された ecs_observer を示しており、タスク ARN パターンは ^arn:aws:ecs:us-west-2:906383545488:task-definition/lorem-ipsum-task:[0-9]+$ です。

結果は/etc/ecs_sd_targets.yamlに書き込まれます。prometheus レシーバーは、結果ファイルからターゲットを読み込むように設定されています。access_tokenrealm の値は SPLUNK_ACCESS_TOKENSPLUNK_REALM 環境変数から読み込まれます。

extensions:
  ecs_observer:
    refresh_interval: 10s
    cluster_name: 'lorem-ipsum-cluster'
    cluster_region: 'us-west-2'
    result_file: '/etc/ecs_sd_targets.yaml'
    task_definitions:
      - arn_pattern: "^arn:aws:ecs:us-west-2:906383545488:task-definition/lorem-ipsum-task:[0-9]+$"
       metrics_ports: [9113]
       metrics_path: /metrics
receivers:
  prometheus:
    config:
      scrape_configs:
        - job_name: 'lorem-ipsum-nginx'
          scrape_interval: 10s
          file_sd_configs:
            - files:
                - '/etc/ecs_sd_targets.yaml'
processors:
  batch:
  resourcedetection:
    detectors: [ecs]
    override: false
exporters:
  signalfx:
    access_token: ${SPLUNK_ACCESS_TOKEN}
    realm: ${SPLUNK_REALM}
service:
  extensions: [ecs_observer]
  pipelines:
    metrics:
      receivers: [prometheus]
      processors: [batch, resourcedetection]
      exporters: [signalfx]

ecs_observer 設定に ARN パターンを設定します。 🔗

このタスクARNパターンを使用すると、ecs_observer 、タスク lorem-ipsum-task の実行中のリビジョンでターゲットを検出するようになります。つまり、タスク lorem-ipsum-task の複数のリビジョンが実行されている場合、ecs_observer は Collector サイドカーコンテナが実行されているタスクの外でターゲットを検出します。サイドカーデプロイメントでは、Collectorと監視対象コンテナは同じタスク内にあるため、メトリクスターゲットはタスク内になければなりません。

この問題を解決するには、以下のように完全なタスクARNを使用します。タスクのリビジョンに合わせて、タスクARNパターンを更新する必要があります。

...
- arn_pattern: "^arn:aws:ecs:us-west-2:906383545488:task-definition/lorem-ipsum-task:3$"
...

直接コンフィギュレーションを使用する 🔗

Fargateではファイルシステムがすぐに利用できないので、SPLUNK_CONFIG_YAML 環境変数を使って設定YAMLを直接指定する必要があります。

たとえば、AWS Systems Manager Parameter Store の splunk-otel-collector-config というパラメータにカスタム構成の YAML を格納できます。Collector コンテナの定義で、valueFrom を使用して、パラメータを SPLUNK_CONFIG_YAML 環境変数に割り当てます。次の例では、MY_SPLUNK_ACCESS_TOKENMY_SPLUNK_REALM はプレースホルダ値で、0.33.0 は画像タグです。

{
"environment": [
  {
    "name": "SPLUNK_ACCESS_TOKEN",
    "value": "MY_SPLUNK_ACCESS_TOKEN"
  },
  {
    "name": "SPLUNK_REALM",
    "value": "MY_SPLUNK_REALM"
  }
],
"secrets": [
  {
    "valueFrom": "splunk-otel-collector-config",
    "name": "SPLUNK_CONFIG_YAML"
  }
],
"image": "quay.io/signalfx/splunk-otel-collector:0.33.0",
"essential": true,
"name": "splunk_otel_collector"
}

注釈

タスクがパラメータ ストアへの読み取りアクセスを持つようにするには、AmazonSSMReadOnlyAccess ポリシーをタスク ロールに追加します。

スタンドアロン・タスク 🔗

ecs_observer 拡張機能では、クラスター全体のターゲットをスキャンできます。スキャンを使用すると、監視対象のアプリケーションを含むタスクとは別のタスクにCollectorをデプロイすることで、テレメトリデータを収集できます。これは、Collectorコンテナと監視対象アプリケーションコンテナが同じタスクにあるサイドカー・デプロイメントとは対照的です。

スタンドアロン・タスク用にECS resourcedetection プロセッサーを構成しないでください。スタンドアロンCollectorタスク自体のリソースが検出され、監視対象のアプリケーションを含むタスクのリソースが検出されなくなるためです。

AWS Graviton2 🔗

AWS Graviton2はデフォルトのFargate構成でサポートされています。CollectorのDockerイメージは、AMD64とARM64の両方のアーキテクチャーで実行できます。

このページは 2024年05月08日 に最終更新されました。