Docs » Splunk Observability Cloud でサポートされているインテグレーション » バックエンドアプリケーションをインストルメンテーションして、スパンを Splunk APM に送信する » Splunk Observability Cloud に Node.js アプリケーションをインストルメンテーションする » Splunk Observability Cloud 用の Splunk Distribution of OTel JS を設定する

Splunk Observability Cloud 用の Splunk Distribution of OTel JS を設定する 🔗

Splunk Distribution of OpenTelemetry JS は、インストルメンテーションのニーズに合わせて設定することができます。ほとんどの場合、基本的な設定を変更するだけで十分です。

以下のセクションでは、Splunk Distribution of OpenTelemetry JS 独自の新機能を有効にするためのオプションを含め、Node.js 用 OpenTelemetry を設定するために利用可能なすべての設定について説明します。

設定方法 🔗

Splunk Distribution of OpenTelemetry JS を設定するには、環境変数と start() 関数に渡す引数を組み合わせて使用します:

  • 環境変数

    例: export OTEL_SERVICE_NAME='test-service'

  • start() 関数に渡される引数

    例: start({ serviceName: 'my-node-service', });

メトリクススやトレースなど、サポートされている各データ・タイプのコンフィギュレーションは、コンフィギュレーション・オブジェクトの追加プロパティを使用して設定します:

start({
   // general options like `serviceName` and `endpoint`
   metrics: {
      // configuration passed to metrics signal
   },
   profiling: {
      // configuration passed to profiling signal
   },
   tracing: {
      // configuration passed to tracing signal
   },
});

オブジェクトの代わりにブーリアン値を渡すことで、特定のデータ型の収集をアクティブにすることもできます。例:

start({
   // general options like `serviceName` and `endpoint`
   metrics: true, // turn metrics on with default options
   profiling: true, // turn profiling on with default options
});

注釈

関数の引数は、対応する環境変数よりも優先されます。

一般設定 🔗

以下の設定は、Splunk Distribution of OpenTelemetry JS 固有のものです:

インストルメンテーション構成 🔗

以下の設定は、どのインストルメンテーションをアクティブにするかを制御します:

たとえば、デフォルトのインストルメンテーションをすべてオフにし、bunyan インストルメンテーションだけをオンにするには、以下の環境変数を設定します:

export OTEL_INSTRUMENTATION_COMMON_DEFAULT_ENABLED=false
export OTEL_INSTRUMENTATION_BUNYAN_ENABLED=true

これまでの設定は、デフォルトで Splunk Distribution of OpenTelemetry JS によってロードされるインストルメンテーションにのみ適用されます。プログラム API を使ってユーザーが指定したインストルメンテーションのリストを提供する場合、これらの設定は何の効果もありません。

トレース設定 🔗

以下の設定は、トレースの制限と属性を制御します:

環境変数

Argument to start()

説明

OTEL_TRACE_ENABLED

該当なし

トレーサーの作成と自動インストルメンテーションを有効にします。デフォルト値は true です。

OTEL_SERVICE_NAME

serviceName

インストルメンテーションするサービスまたはアプリケーションの名前。OTEL_RESOURCE_ATTRIBUTES 変数で定義されたサービス名よりも優先されます。

OTEL_RESOURCE_ATTRIBUTES

該当なし

報告されたスパンごとに追加されるリソース属性のカンマ区切りリスト。例えば、key1=val1,key2=val2 です。

OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT

該当なし

スパンごとの属性の最大数。デフォルト値は無制限です。

OTEL_SPAN_EVENT_COUNT_LIMIT

該当なし

1スパンあたりの最大イベント数。デフォルト値は無制限です。

OTEL_SPAN_LINK_COUNT_LIMIT

該当なし

スパンあたりの最大リンク数。デフォルト値は 1000 です。

OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT

該当なし

属性値の文字列の最大長。制限値より大きな値は切り捨てられます。デフォルト値は 1200 です。空の値は無限大として扱われます。

サンプラーの設定 🔗

以下の設定はトレースサンプリングをコントロールします:

環境変数

説明

OTEL_TRACES_SAMPLER

使用するサンプラー。デフォルト値は parentbased_always_on です。指定可能な値は以下のとおり: always_onalways_offparentbased_always_onparentbased_always_offtraceidratioparentbased_traceidratio。詳細については、OpenTelemetry 公式ドキュメントの Built-in samplers を参照してください。

OTEL_TRACES_SAMPLER_ARG

rules サンプラーのルールをセミコロンで区切ったリスト。例えば、サンプラーを parentbased_traceidratio に設定する場合、0から1の範囲の数字を使って比率を設定することができます:

OTEL_TRACES_SAMPLER_ARG=0.25

エクスポーターの設定 🔗

以下の設定は、トレースエクスポーターとそのエンドポイントをコントロールします:

Jaeger エクスポーター 🔗

Jaeger エクスポーターを使うには、以下の例のように @opentelemetry/exporter-jaeger パッケージを追加します:

const { start } = require('@splunk/otel');
const { JaegerExporter } = require('@opentelemetry/exporter-jaeger');
start({
   serviceName: 'my-node-service',
   tracing: {
      spanExporterFactory: (options) => {
      return new JaegerExporter({
         serviceName: options.serviceName,
         // Additional config
      })
      }
   },
});

注釈

Splunk Observability Cloud に直接データを送信するには、Splunk Observability Cloud に直接データを送信する を参照してください。

プロパゲータの構成 🔗

以下の設定はトレース伝搬をコントロールします:

SignalFx Tracing Library for Node.jsとの後方互換性のために、b3multiトレースプロパゲータを使用してください:

export OTEL_PROPAGATORS=b3multi

AlwaysOn Profilingの Node.js 設定 🔗

以下の設定は、Node.js エージェントの AlwaysOn Profiling機能を制御します:

プログラムで AlwaysOn Profilingを設定するには、次の例のように start 関数に引数を渡します:

start({
   serviceName: '<service-name>',
   profiling: true,
   tracing: {
      // configuration passed to tracing signal
   },
});

注釈

AlwaysOn Profilingの詳細については、Splunk APMのAlwaysOn Profilingの概要 を参照してください。

メトリクスの設定 🔗

以下の設定は、ランタイム・メトリクスの収集を有効にします:

注釈

引数として設定を渡すには、start() 関数を使用します。

既存のメトリクス・クライアントを設定してカスタムメトリクスを送信する 🔗

カスタムメトリクスの送信には、新しいクライアントを作成して設定する代わりに、既存のSignalFxクライアントを使用できます。

既存のクライアントを設定するには、start() 関数に以下のデータを渡します:

  • signalfx:オプションで clientdimensions フィールドを持つ JavaScript オブジェクト。 dimensions オブジェクトは、各データポイントに定義済みのディメンションを追加します。 dimensions のフォーマットは {key: value, ...} です。

以下は、デフォルトで追加されるディメンションのリストです:

  • service: トレース設定serviceName を参照してください。

  • metric_source: splunk-otel-js

  • node_version: process.versions.node 例えば 16.10.0

サーバートレース情報 🔗

モバイルおよび Web アプリケーションからのリアルユーザーモニタリング(RUM) リクエストをサーバーのトレースデータに接続するには、以下の環境変数を設定して Splunk のトレース・レスポンス・ヘッダーを有効にします:

export SPLUNK_TRACE_RESPONSE_HEADER_ENABLED=true

この環境変数を設定すると、アプリケーション・インストルメンテーションはHTTPレスポンスに以下のレスポンス・ヘッダーを追加します。

Access-Control-Expose-Headers: Server-Timing
Server-Timing: traceparent;desc="00-<serverTraceId>-<serverSpanId>-01"

Server-Timing ヘッダーには、traceIdspanIdtraceparent 形式で含まれています。詳しくは、W3CウェブサイトのServer-Timingとtraceparentのドキュメントを参照してください。

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