Docs » Splunk Distribution of the OpenTelemetry Collector の利用開始 » Collector デプロイツールとオプション » Amazon ECS EC2 でCollectorをデプロイする

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

ガイド付きセットアップを使用して、Amazon ECS EC2クラスターにデーモンサービスとしてCollectorをデプロイします。ガイド付きセットアップでは、CollectorのJSONタスク定義が提供されます。

以下のCollector 構成オプションのいずれかを選択します:

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

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

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

AWSインテグレーションのガイド付きセットアップにアクセスするには、以下の手順を実行します:

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

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

  3. Go to the Available integrations tab, or select Add Integration in the Deployed integrations tab.

  4. Select the tile for Amazon ECS EC2.

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

はじめに 🔗

以下のセクションでは、タスク定義の作成方法とCollectorの起動方法について説明します。Amazon ECSでDockerコンテナを実行するには、タスク定義が必要です。タスク定義を作成したら、Collectorを起動する必要があります。

タスク定義を作成する 🔗

注釈

ローンチタイプのEC2を使用するAmazon ECSの知識が前提となります。Amazon EC2を使用してクラシックコンソールで開始する を参照してください。

タスク定義を作成するには、Collector のリリースv0.34.1以降(イメージタグ0.34.1以降に対応)を使用する必要があります。最新のイメージをダウンロードするには、イメージリポジトリ を参照してください。

タスク定義を作成します:

  1. リポジトリ から Collector のタスク定義を探します。

  2. MY_SPLUNK_ACCESS_TOKENMY_SPLUNK_REALM を有効な値に置き換えてください。アップグレードの問題を避けるため、latest の代わりに、イメージのバージョンを特定のバージョンに固定する必要があります。

  3. EC2起動タイプのタスク定義を作成します。手順については、新しいコンソールを使ったタスク定義の作成 を参照してください。提供されるタスク定義は最小限の定義です。追加の設定オプションについては、タスク定義パラメータ を参照してください。

Collector は、デフォルトのコンフィギュレーションファイル /etc/otel/collector/ecs_ec2_config.yaml を使用するように設定されています。CollectorイメージDockerfileは Dockerfile から入手でき、デフォルトの構成ファイルの内容は ECS EC2 構成 で見ることができます。

注釈

トレースするだけであれば、デフォルト構成ファイルの smartagent/ecs-metadata メトリクスレシーバーは必要ありません。デフォルトのコンフィギュレーションを使用し、レシーバーを削除し、カスタム設定を使用する の指示に従ってカスタムコンフィギュレーションでコンフィギュレーションを使用することができます。

タスクに設定されたネットワークモードは host です。これは、smartagent/ecs-metadata レシーバーで使用されるタスクのメタデータエンドポイント・バージョン2がデフォルトでは有効になっていないことを意味します。タスクのメタデータエンドポイント・バージョン3がデフォルトで有効になっているかどうかは、タスクのメタデータエンドポイント を参照してください。このバージョンが有効になっている場合、タスク定義の環境リストに以下を追加します:

{
"name": "ECS_TASK_METADATA_ENDPOINT",
"value": "${ECS_CONTAINER_METADATA_URI}/task"
},
{
"name": "ECS_TASK_STATS_ENDPOINT",
"value": "${ECS_CONTAINER_METADATA_URI}/task/stats"
}

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

Collector の起動 🔗

Collectorは、EC2 ECSクラスターのDaemonサービスとして実行するように設計されています。Amazon ECSコンソールからCollectorサービスを作成するには、次の手順に従います:

  1. コンソールでクラスターに移動します。

  2. Services を選択します。

  3. Create を選択します。

  4. 以下のオプションを選択してください:#.起動タイプ:EC2 #.タスク定義 (ファミリー): splunk-otel-collector #.タスク定義 (リビジョン):1 (または最新) #.サービス名: splunk-otel-collector #.サービスタイプDAEMON #.他のすべてはデフォルトのままにしてください。

  5. Next step を選択します。

  6. 次のページにあるすべての項目をデフォルトのままにして、Next step を選択します。

  7. 次のページにあるすべての項目をデフォルトのままにして、Next step を選択します。

  8. Create Service を選択して、ECSクラスターの各ノードにCollectorをデプロイします。インフラとDockerのメトリクスがすぐに表示されるはずです。

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

カスタム構成ファイルを使用するには、Collectorタスク定義で SPLUNK_CONFIG 環境変数の値をカスタム構成ファイルのファイルパスに置き換えます。

あるいは、ecs_observer 設定 で説明されているように、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]

AWSパラメータストアを使用する 🔗

コンフィギュレーションYAMLを直接指定するには、 SPLUNK_CONFIG_YAML 環境変数を使用します。SPLUNK_CONFIG の代わりに SPLUNK_CONFIG_YAML を使用してください。

例えば、まず、ecs_observer 設定 のカスタム設定を AWS Systems Manager Parameter Store の splunk-otel-collector-config というパラメータに格納します。次に、次の例に示すように、valueFrom オプションを使用して、SPLUNK_CONFIG_YAML にパラメータを割り当てます:

{
         "name": "lorem-ipsum-cluster",
         "valueFrom": "^arn:aws:ecs:us-west-2:906383545488:task-definition/lorem-ipsum-task:[0-9]+$""
     }

注釈

タスクがパラメータストアへの読み取りアクセスを持つためには、タスクのロールにポリシー AmazonSSMReadOnlyAccess を追加する必要があります。詳しくは Systems manager parameter store を参照してください。

This page was last updated on 2024年05月16日.