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

Amazon ECS EC2クラスターにサイドカーとしてSplunk Observability Cloud OpenTelemetry Collectorをデプロイします。

ガイド付きセットアップを使用して、Amazon ECS EC2クラスターにサイドカーとしてCollectorをデプロイします。

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

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

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

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

  4. Amazon ECS EC2 のタイルを選択します。

  5. セットアップガイドの手順に従ってください。Collector の JSON タスク定義が記載されています。

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

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

  • ファイル:Collector 設定に使用するファイルを指定します。 「Deploy the Collector using a custom configuration」を参照してください。

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

Collectorをサイドカーとして追加する

注: このオプションを使用するには、Amazon EC2 の起動に精通している必要があります。詳しくは「Getting started with the classic console using Amazon EC2」を参照してください。

Collector サイドカーを追加する ECS タスク定義を開きます。

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

  2. Collectorの定義を既存のECSタスク定義にマージします。

  3. MY_SPLUNK_ACCESS_TOKENMY_SPLUNK_REALM を有効な値に置き換えます。自動アップグレードの問題を避けたい場合は、latest の代わりに、イメージのバージョンを特定のバージョンに固定できます。

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

備考:

  • トレースするだけであれば、デフォルト構成ファイルの awsecscontainermetrics レシーバーは必要ありません。デフォルトの設定を使用し、レシーバーを削除し、「Deploy the Collector using a custom configuration」の指示に従ってカスタム設定で設定を使用することができます。

  • メトリクスを除外するには、文字列化された配列として環境変数 METRICS_TO_EXCLUDE に割り当てます。

  • 環境変数 SPLUNK_MEMORY_LIMIT_MIB を使用して、memory_limiter プロセッサのメモリ制限を設定できます。デフォルトのメモリ制限は 512 MiB です。

カスタム設定を使用して Collector をデプロイする

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

あるいは「Amazon Elastic Container Service オブザーバーエクステンションを設定する」で説明されているように、SPLUNK_CONFIG_YAML 環境変数を使用してカスタム設定 YAML を直接指定することもできます。

Amazon Elastic Container Service オブザーバーエクステンションを設定する

カスタム設定で Amazon Elastic Container Service Observer ( ecs_observer ) エクステンションを使用すると、サービス名、タスク定義、コンテナラベルでフィルタリングされた、実行中のタスクのメトリクスターゲットを検出できます。

前提条件

以下が該当します:

  • Collector は ECS デーモンとして実行する必要があります。「ECS コンソールから Collector をデーモンとして実行する」を参照してください。

  • ECS オブザーバーは現在、Prometheus のターゲットに限定されています。

  • ECS オブザーバーには、以下の読み取り専用権限が必要です。これらの読み取り専用権限を、タスクロールにアタッチされている顧客管理ポリシーに追加します。

ecs:List*
ecs:Describe*

ECS コンソールから Collectorをデーモンとして実行する

Amazon ECSコンソールでCollectorを起動するには:

  1. コンソールでクラスターに移動し、Services を選択します。

  2. Create を選択し、以下のオプションを定義します:

    • 起動タイプ:EC2

    • タスク定義 (ファミリー): splunk-otel-collector

    • タスクの定義(リビジョン):1 (またはその場合で最新のもの)

    • サービス名:splunk-otel-collector

    • サービスタイプ:DAEMON

  3. 次のページにあるその他すべての項目をデフォルトのままにして、サービスの作成を要求されるまで、[Next step] に進みます。

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

設定例

以下の設定例では、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パラメータストアを使用して Collector をデプロイする

AWSパラメータストアを使用するには、SPLUNK_CONFIG_YAML を使用する代わりに、SPLUNK_CONFIG 環境変数で設定 YAML を直接指定することもできます。

注: タスクが Parameter Store への読み取りアクセスを持つようにするには、AmazonSSMReadOnlyAccess ポリシーをタスクロールに追加します。詳細については「Systems manager parameter store」を参照してください。

以下の手順に従ってください:

  1. Amazon Elastic Container Service オブザーバーエクステンションを設定する」のカスタム設定を AWS Systems Manager Parameter Store の splunk-otel-collector-config というパラメータに格納します。

  2. 次に、以下の例に示すように、splunk-otel-collector-config オプションを使用して、SPLUNK_CONFIG_YAMLvalueFrom パラメータを割り当てます:

{
  "valueFrom": "splunk-otel-collector-config",
  "name": "SPLUNK_CONFIG_YAML"
}
注意: AWS Parameter Storeは、設定ファイルのサイズを 4096 バイトに制限しています。