Splunk Distribution of OpenTelemetry .NET を設定する

Splunk Distribution of OpenTelemetry .NET を、トレースとログの関連付けやカスタムサンプリングの有効化など、インストルメンテーションのニーズに合わせて設定します。

Splunk Distribution of OpenTelemetry .NET は、インストルメンテーションのニーズに合わせて設定できます。ほとんどの場合、基本設定を調整するだけで開始するには十分です。より高度な設定も利用可能です。

設定方法

Splunk Distribution of OpenTelemetry .NETの設定は、以下の方法で変更できます:

  • .NET アプリケーションでは、環境変数を設定します。Windows では、すべての .NET アプリケーションで自動インストルメンテーションをグローバルに有効にする場合を除き、プロセススコープに設定します。

  • Windowsサービスとして実行される.NET Frameworkアプリケーションでは、サポートされている場合、app.configファイルの appSettings ブロックで設定を追加するか、Windowsレジストリを使用して環境変数を設定することができます。

  • ASP.NET アプリケーションの場合は、web.config ファイルの appSettings ブロックに設定を追加します。例:

    <configuration>
       <appSettings>
          <add key="OTEL_SERVICE_NAME" value="my-service-name" />
       </appSettings>
    </configuration>

    あるいは、以下のいずれかの方法で環境変数を設定することもできます:

    • アプリケーション・プール用に、applicationHost.config<environmentVariables> 要素を追加します。

    • W3SVCWAS の環境変数を設定します。

  • ASP.NET Coreアプリケーションの場合は、web.configファイルの <aspNetCore>ブロック内に<environmentVariable> 要素を追加します。

一般設定

以下の設定は、ほとんどのインストルメンテーションシナリオで共通です:

{「keys」:「識別子」、「description」:「説明」、「instrumented_components」:「コンポーネント」、「signals」:「信号」、「env」:「環境変数」、「default」:「デフォルト」、「type」:「タイプ」}

general

カテゴリ

設定

https://raw.githubusercontent.com/splunk/o11y-gdi-metadata/main/apm/splunk-otel-js/metadata.yaml

エクスポート設定

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

{「keys」:「識別子」、「description」:「説明」、「instrumented_components」:「コンポーネント」、「signals」:「信号」、「env」:「環境変数」、「default」:「デフォルト」、「type」:「タイプ」}

exporter

カテゴリ

設定

https://raw.githubusercontent.com/splunk/o11y-gdi-metadata/main/apm/splunk-otel-js/metadata.yaml

AlwaysOn Profiling の .NET OTel 設定

以下の設定は、.NET インストルメンテーションの AlwaysOn Profiling 機能を制御します:

{「keys」:「識別子」、「description」:「説明」、「instrumented_components」:「コンポーネント」、「signals」:「信号」、「env」:「環境変数」、「default」:「デフォルト」、「type」:「タイプ」}

プロファイリング

カテゴリ

設定

https://raw.githubusercontent.com/splunk/o11y-gdi-metadata/main/apm/splunk-otel-js/metadata.yaml

注: AlwaysOn Profiling for .NET は、.NET 6.0 以降と互換性があります。AlwaysOn Profiling の詳細については、「Splunk APM の AlwaysOn Profiling の概要」を参照してください。

トレース伝播の設定

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

{「keys」:「識別子」、「description」:「説明」、「instrumented_components」:「コンポーネント」、「signals」:「信号」、「env」:「環境変数」、「default」:「デフォルト」、「type」:「タイプ」}

トレース伝播

カテゴリ

設定

https://raw.githubusercontent.com/splunk/o11y-gdi-metadata/main/apm/splunk-otel-js/metadata.yaml

サンプラーの設定

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

{「keys」:「識別子」、「description」:「説明」、「instrumented_components」:「コンポーネント」、「signals」:「信号」、「env」:「環境変数」、「default」:「デフォルト」、「type」:「タイプ」}

sampler

カテゴリ

設定

https://raw.githubusercontent.com/splunk/o11y-gdi-metadata/main/apm/splunk-otel-js/metadata.yaml

リソースディテクターの構成

リソースディテクタを使用して、アプリケーションのスパンの追加属性を取得できます。

以下の設定は、リソースディテクターを制御します:

{「keys」:「識別子」、「description」:「説明」、「instrumented_components」:「コンポーネント」、「signals」:「信号」、「env」:「環境変数」、「default」:「デフォルト」、「type」:「タイプ」}

リソースディテクタ

カテゴリ

設定

https://raw.githubusercontent.com/splunk/o11y-gdi-metadata/main/apm/splunk-otel-js/metadata.yaml

以下の資源探知機が利用できます:

{「key」:「識別子」、「description」:「説明」、「attributes」:「属性」、「id」:「ID」、「stability」:「安定性」、「support」:「サポート」、「dependencies」:「依存関係」、「name」:「名前」、「source_href」:「送信元」、「package_href」:「パッケージ URL」、「version」:「バージョン」、「stability」:「安定性」}

resource_detectors

https://raw.githubusercontent.com/splunk/o11y-gdi-metadata/main/apm/splunk-otel-js/metadata.yaml

インストルメンテーション設定

以下の設定は、インストルメンテーションとトレースの動作を制御します:

{「keys」:「識別子」、「description」:「説明」、「instrumented_components」:「コンポーネント」、「signals」:「信号」、「env」:「環境変数」、「default」:「デフォルト」、「type」:「タイプ」}

インストゥルメンテーション

カテゴリ

設定

https://raw.githubusercontent.com/splunk/o11y-gdi-metadata/main/apm/splunk-otel-js/metadata.yaml

サーバートレース情報

モバイルおよびウェブアプリケーションからの Real User Monitoring(RUM)リクエストとサーバートレースデータを接続するために、トレース レスポンス ヘッダーがデフォルトで有効になっています。インストルメンテーションは、HTTP レスポンスに以下のレスポンスヘッダーを追加します。

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

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

注: トレース・レスポンス・ヘッダーを無効にする必要がある場合は、SPLUNK_TRACE_RESPONSE_HEADER_ENABLEDfalse に設定します。

診断ロギングの設定

以下の設定は、Splunk Distribution of OpenTelemetry .NETの内部ロギングを制御します:

{「keys」:「識別子」、「description」:「説明」、「instrumented_components」:「コンポーネント」、「signals」:「信号」、「env」:「環境変数」、「default」:「デフォルト」、「type」:「タイプ」}

診断ロギング

カテゴリ

設定

https://raw.githubusercontent.com/splunk/o11y-gdi-metadata/main/apm/splunk-otel-js/metadata.yaml

デフォルトのサービス名の変更

デフォルトでは、Splunk Distribution of OpenTelemetry .NETは、成功するまで以下の手順を試してサービス名を取得します:

  1. デフォルトのサービス名は、エントリアセンブリの名前です。たとえば、.NET プロジェクトファイルの名前です。 ASP.NETアプリケーションの場合、デフォルトのサービス名は SiteName[/VirtualPath] です。

  2. エントリアセンブリが利用できない場合、インストルメンテーションは現在のプロセス名を使用しようとします。アセンブリを使用して直接起動する場合、プロセス名は dotnet にすることができます。たとえば、dotnet InstrumentedApp.dll のようになります。

すべての手順が失敗した場合、サービス名のデフォルトは unknown_service になります。

注: デフォルトのサービス名を上書きするには、OTEL_SERVICE_NAME 環境変数を設定します。

手動インストールのための環境変数

インストルメンテーションを手動でデプロイする場合、以下の環境変数を必ず設定する必要があります:

Windows (.NET)

環境変数

CORECLR_ENABLE_PROFILING

1

CORECLR_PROFILER

{918728DD-259F-4A6A-AC2B-B85E1B658318}

CORECLR_PROFILER_PATH_64

$installationLocation\win-x64\OpenTelemetry.AutoInstrumentation.Native.dll

CORECLR_PROFILER_PATH_32

$installationLocation\win-x86\OpenTelemetry.AutoInstrumentation.Native.dll

DOTNET_ADDITIONAL_DEPS

$installationLocation\AdditionalDeps

DOTNET_SHARED_STORE

$installationLocation\store

DOTNET_STARTUP_HOOKS

$installationLocation\net\OpenTelemetry.AutoInstrumentation.StartupHook.dll

OTEL_DOTNET_AUTO_HOME

$installationLocation

OTEL_DOTNET_AUTO_PLUGINS

Splunk.OpenTelemetry.AutoInstrumentation.Plugin, Splunk.OpenTelemetry.AutoInstrumentation

Windows (.NET Framework)

環境変数

COR_ENABLE_PROFILING

1

COR_PROFILER

{918728DD-259F-4A6A-AC2B-B85E1B658318}

COR_PROFILER_PATH_64

$installationLocation\win-x64\OpenTelemetry.AutoInstrumentation.Native.dll

COR_PROFILER_PATH_32

$installationLocation\win-x86\OpenTelemetry.AutoInstrumentation.Native.dll

OTEL_DOTNET_AUTO_HOME

$installationLocation

OTEL_DOTNET_AUTO_PLUGINS

Splunk.OpenTelemetry.AutoInstrumentation.Plugin, Splunk.OpenTelemetry.AutoInstrumentation

Linux (.NET)

環境変数

CORECLR_ENABLE_PROFILING

1

CORECLR_PROFILER

{918728DD-259F-4A6A-AC2B-B85E1B658318}

CORECLR_PROFILER_PATH

$INSTALL_DIR/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so (glibc) $INSTALL_DIR/linux-musl-x64/OpenTelemetry.AutoInstrumentation.Native.so (musl)

DOTNET_ADDITIONAL_DEPS

$INSTALL_DIR\AdditionalDeps

DOTNET_SHARED_STORE

$INSTALL_DIR\store

DOTNET_STARTUP_HOOKS

$INSTALL_DIR\net\OpenTelemetry.AutoInstrumentation.StartupHook.dll

OTEL_DOTNET_AUTO_HOME

$INSTALL_DIR

OTEL_DOTNET_AUTO_PLUGINS

Splunk.OpenTelemetry.AutoInstrumentation.Plugin, Splunk.OpenTelemetry.AutoInstrumentation

注: Linux でのデフォルトのインストールパスは $HOME/.otel-dotnet-auto です。