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インテグレーションのガイド付きセットアップにアクセスするには、以下の手順を実行します:
Splunk Observability Cloud にログインします。
ナビゲーションメニューで、Data Management を選択します。
Go to the Available integrations tab, or select Add Integration in the Deployed integrations tab.
Select the tile for Amazon ECS EC2.
セットアップガイドの手順に従ってください。
はじめに 🔗
以下のセクションでは、タスク定義の作成方法とCollectorの起動方法について説明します。Amazon ECSでDockerコンテナを実行するには、タスク定義が必要です。タスク定義を作成したら、Collectorを起動する必要があります。
タスク定義を作成する 🔗
注釈
ローンチタイプのEC2を使用するAmazon ECSの知識が前提となります。Amazon EC2を使用してクラシックコンソールで開始する を参照してください。
タスク定義を作成するには、Collector のリリースv0.34.1以降(イメージタグ0.34.1以降に対応)を使用する必要があります。最新のイメージをダウンロードするには、イメージリポジトリ を参照してください。
タスク定義を作成します:
リポジトリ から Collector のタスク定義を探します。
MY_SPLUNK_ACCESS_TOKEN
とMY_SPLUNK_REALM
を有効な値に置き換えてください。アップグレードの問題を避けるため、latest
の代わりに、イメージのバージョンを特定のバージョンに固定する必要があります。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サービスを作成するには、次の手順に従います:
コンソールでクラスターに移動します。
Services を選択します。
Create を選択します。
以下のオプションを選択してください:#.起動タイプ:EC2 #.タスク定義 (ファミリー): splunk-otel-collector #.タスク定義 (リビジョン):1 (または最新) #.サービス名: splunk-otel-collector #.サービスタイプDAEMON #.他のすべてはデフォルトのままにしてください。
Next step を選択します。
次のページにあるすべての項目をデフォルトのままにして、Next step を選択します。
次のページにあるすべての項目をデフォルトのままにして、Next step を選択します。
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_token
と realm
の値は、SPLUNK_ACCESS_TOKEN
と SPLUNK_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 を参照してください。