Chefを使用してCollector for Linuxをデプロイする

Chef を使用して OpenTelemetry Collector をインストールおよび設定し、Linux および Windows マシンからメトリクス、トレース、ログを収集し、Splunk Observability Cloud にデータを送信します。

Chef は、物理マシンや仮想マシン上のインフラを管理するために使われる構成管理技術です。Chef は Cookbook を使ってシナリオを定義します。

Cookbook は Chef の基本作業単位で、作業単位に関連するすべての詳細から構成され、Chef インフラストラクチャ上でノードとして構成されたシステムの設定や状態を変更する機能を持ちます。Cookbook は複数のタスクを実行できます。

前提条件

Chefを使うには以下のリソースが必要です:

Linux

Collector は以下のLinuxディストリビューションとバージョンをサポートしています:

  • Amazon Linux: 2、2023

  • CentOS: 7、8、9

  • Red Hat: 7、8、9

  • Oracle: 8、9

  • Debian: 11、12

  • SUSE:バージョン 0.34.0 以降の場合は 12、15

  • Ubuntu:16.04、18.04、20.04、22.04、24.04

  • Rocky Linux:8, 9

ChefでCollectorをインストールして使う

コミュニティの Cookbook のサイトである Chef Supermarket から Chef Cookbook をダウンロードしてください。

Collector をインストールするには、splunk_otel_collector::default レシピを run_list に含め、ノードの run_state で属性を設定します。以下は、必須属性である splunk_access_token 属性と、いくつかの任意属性を設定する方法を示したサンプル構成です。

{
    "splunk-otel-collector": {
        "splunk_access_token": "<SPLUNK_ACCESS_TOKEN>",
        "splunk_realm": "<SPLUNK_REALM>",
    }
}

Linux 対応の属性

Linuxの場合、Cookbook は以下の表に示す属性を受け入れます:

Name

説明

デフォルト値

collector_version

インストールする Collector パッケージのバージョンです。0.25.0 などを使用します。バージョン番号は、先頭の v を除いた GitHub Releases と一致している必要があります。Linuxでは、このパラメータが指定されていない場合、最新の Collector バージョンがインストールされます。

なし

gomemlimit

Collector バージョン 0.97.0 以降で、splunk_ballast_size_mib に置き換わります。GO ランタイムでのメモリ使用量を制限できるようにし、ガベージコレクションの効率を向上させ、メモリ不足の状況を防ぐのに役立ちます。詳細については、「how to update memory ballast in your configuration」を参照してください。

splunk_total_mem_mib の90%

splunk_access_token

リクエストを認証するためのSplunkアクセストークン。属性は必須です。

なし

splunk_realm

データを送信するレルムを指定します(us0 など)。Splunk の取り込みと API のURL は、この値によって指定されます。SPLUNK_REALM 環境変数は、Collector サービス用にこの値で設定されます。属性は必須です。Splunk レルムを見つけるには、「Note about realms」を参照してください。

なし

splunk_ingest_url

$splunk_realm パラメータによって指定された URL の代わりに、Splunk の取り込み URL を明示的に設定します。SPLUNK_INGEST_URL 環境変数は、Collector サービス用にこの値で設定されます。

https://ingest.${splunk_realm}.signalfx.com

splunk_api_url

$splunk_realm パラメータによって推定される URL の代わりに、Splunk API の URL を明示的に設定します。SPLUNK_API_URL 環境変数は、Collector サービス用にこの値で設定されます。

https://api.${splunk_realm}.signalfx.com

splunk_trace_url

$splunk_ingest_url パラメータによって推定される URL の代わりに、Splunk トレースエンドポイントの URL を明示的に設定します。SPLUNK_TRACE_URL 環境変数は、Collector サービス用にこの値で設定されます。

${splunk_ingest_url}/v2/trace

splunk_bundle_dir

Smart Agent バンドルディレクトリのパスです。デフォルトのパスは、Collector パッケージによって提供されます。指定するパスがデフォルト値から変更されている場合、パスはノード上の既存のディレクトリにする必要があります。Collector サービスでは、SPLUNK_BUNDLE_DIR 環境変数がこの値に設定されます。

/usr/lib/splunk-otel-collector/agent-bundle

splunk_collectd_dir

Smart Agent バンドル用の collectd 設定ディレクトリへのパスです。デフォルトのパスは、Collector パッケージによって提供されます。指定するパスがデフォルト値から変更されている場合、パスはノード上の既存のディレクトリにする必要があります。Collector サービスでは、SPLUNK_COLLECTD_DIR 環境変数がこの値に設定されます。

${splunk_bundle_dir}/run/collectd

splunk_memory_total_mib

Collector に割り当てる合計メモリ(MIB 単位)です。バラストサイズは自動的に計算されます。Collector サービスでは、SPLUNK_MEMORY_TOTAL_MIB 環境変数がこの値に設定されます。

512

splunk_ballast_size_mib

splunk_ballast_size_mib は Collector バージョン 0.97.0 以降では廃止されています。この変数を使用している場合は「設定の更新方法」を参照してください。

"

collector_config_source

Collector 設定 YAML ファイルへのソースパス。このファイルは、ノードの $collector_config_dest パスにコピーされます。サポートされている値の種類については、ファイルリソースの「source 属性」を参照してください。デフォルトのソースファイルは、Collector パッケージによって提供されます。

/etc/otel/collector/agent_config.yaml

collector_config_dest

ノード上の Collector 構成ファイルの保存先パス。SPLUNK_CONFIG 環境変数は、Collector サービス用にこの値で設定されます。

/etc/otel/collector/agent_config.yaml

node['splunk_otel_collector']['collector_config']

Collector 設定オブジェクト。このオブジェクトの下にあるものはすべて直接 YAML に変換され、Collector 設定ファイルになります。このオプションを使用することで collector_config_source 機能を処理します。

{}

service_user および $service_group

Collector サービスのユーザーまたはグループの所有権を設定します。ユーザーまたはグループが存在しない場合は作成されます。

splunk-otel-collector

package_stage

使用する Collector パッケージリポジトリのステージ。にはrelease、、betaまたはtest、 を指定できます。

release

バックエンドアプリケーションの自動ディスカバリーを設定する(Linuxのみ)

自動検出を使用して、Collector のインストールとともにバックエンドアプリケーションを自動的にインストルメンテーションできます。自動検出機能により、OpenTelemetry エージェントを個別にインストールおよび設定する必要がなくなります。詳細については、「アプリとサービスの自動検出」を参照してください。自動検出を有効にするには、インストールまたは設定の変更後に、ノードでインストルメンテーションされるアプリケーションを個別に起動または再起動する必要があります。

次の表はこの Chef Cookbook で設定できる変数を示しています:

Name

説明

デフォルト値

with_auto_instrumentation

バックエンドアプリケーションの自動検出をインストールまたは管理するかどうかを決定します。true に設定すると、splunk-otel-auto-instrumentation deb/rpm パッケージが Collector リポジトリからダウンロードおよびインストールされます。詳しくは「Linux でのバックエンドアプリケーションのゼロコードインストルメンテーション」を参照してください。

false

with_auto_instrumentation_sdks

インストールしてアクティブ化する自動検出 SDK です。注: dotnet は現在、x86_64/amd64 でのみサポートされています。

%w(java nodejs dotnet)

auto_instrumentation_version

インストールする splunk-otel-auto-instrumentation パッケージのバージョンです。0.50.0 などを使用します。サポートされる最小バージョンは Javaの場合は 0.48、Node.jsの場合は 0.87.0、.NETの場合は 0.99.0 です。

latest

auto_instrumentation_systemd

systemd サービスに対してのみ自動検出をアクティブ化し、設定するかどうかを決定します。 true に設定すると、自動検出環境変数が /usr/lib/systemd/system.conf.d/00-splunk-otel-auto-instrumentation.conf に追加されます。

false

auto_instrumentation_ld_so_preload

デフォルトでは、ノード上の /etc/ld.so.preload ファイルは splunk-otel-auto-instrumentation パッケージが提供する /usr/lib/splunk-instrumentation/libsplunk.so 共有オブジェクトライブラリ用に設定されており、システム全体の自動検出に必要となります。この変数を設定して、/path/to/my.library.so などの追加ライブラリパスを含めることができます。

''

auto_instrumentation_resource_attributes

OpenTelemetryインストルメンテーションリソースの属性を設定します。例: deployment.environment=prd,my.key=my.value(カンマ区切りの key=value ペア文字列)。指定したリソース属性は、ノード上の /etc/splunk/zeroconfig/node.conf 構成ファイル、または systemd インストール方法を使用している場合は /usr/lib/systemd/system.conf.d/00-splunk-otel-auto-instrumentation.conf 構成ファイルに追加されます。

''

auto_instrumentation_service_name

ノード上でインストルメンテーションされたすべてのアプリケーションサービス名を明示的に設定します(my.service など)。デフォルトでは、インストルメンテーションされた各アプリケーションのサービス名が自動的に導出されます。ただし、この変数が空でない値に設定されている場合、導出されたサービス名がこの値で上書きされます。

''

auto_instrumentation_enable_profiler

AlwaysOn CPU プロファイリングを有効または無効にします。「AlwaysOn Profiling の Node.js 設定」を参照してください。

false

auto_instrumentation_enable_profiler_memory

AlwaysOn Memory Profiling を有効または無効にします。「AlwaysOn Profiling の Node.js 設定」を参照してください。

false

auto_instrumentation_enable_metrics

インストルメンテーションメトリクスのエクスポートを有効または無効にします。

false

auto_instrumentation_otlp_endpoint

あらゆる有効 SDK が収集したメトリクス、トレース、ログに OTLP エンドポイントを設定します。 auto_instrumentation_versionlatest または 0.87.0 以上の場合にのみ適用されます。

'' で、それぞれのアクティブにれたSDKについてデフォルトに延期します。

auto_instrumentation_otlp_endpoint_protocol

grpchttp/protobuf など、あらゆる有効 SDK が収集したメトリクス、トレース、ログに OTLP エンドポイントプロトコルを設定します。 auto_instrumentation_versionlatest または 0.104.0 以上の場合にのみ適用されます。

'' で、それぞれのアクティブにれたSDKについてデフォルトに延期します。

auto_instrumentation_metrics_exporter

すべてのアクティブ化された SDK によって収集されたメトリクスのエクスポータのカンマ区切りリスト( otlp,prometheusなど)。メトリクスの収集とエクスポートを停止するには、値を none に設定します。 auto_instrumentation_versionlatest または 0.104.0 以上の場合にのみ適用されます。

'' で、それぞれのアクティブにれたSDKについてデフォルトに延期します。

auto_instrumentation_logs_exporter

あらゆる有効 SDK が収集したログにエクスポータを設定します(otlp など)。ログの収集とエクスポートを停止するには、値を none に設定します。 auto_instrumentation_versionlatest または 0.108.0 以上の場合にのみ適用されます。

'' で、それぞれのアクティブにれたSDKについてデフォルトに延期します。

auto_instrumentation_java_agent_path

Splunk OpenTelemetry Java エージェントへのパスです。デフォルトのパスは、splunk-otel-auto-instrumentation パッケージによって提供されます。パスがデフォルト値から変更されている場合は、ノードの既存のファイルに設定する必要があります。

/usr/lib/splunk-instrumentation/splunk-otel-javaagent.jar

auto_instrumentation_npm_path

プリインストールされている npm コマンドへのパス、例: /my/custom/path/to/npm

npm

次のステップ