構成と設定

.NET の自動計装の構成と設定

構成方法

以下の方法で構成設定を適用または編集できます。 環境変数は App.configWeb.config ファイルよりも優先されます。

  1. 環境変数

    環境変数は設定を構成する主な方法です。

  2. App.config または Web.config ファイル

    .NET Framework 上で動作するアプリケーションの場合、Web 構成ファイル(web.config)やアプリケーション構成ファイル(app.config)を使用して OTEL_* 設定を構成できます。

    ⚠️ App.configWeb.config を使用して設定できるのは、OTEL_ で始まる設定のみです。 ただし、以下の設定はサポートされていません。

    • OTEL_DOTNET_AUTO_HOME
    • OTEL_DOTNET_AUTO_EXCLUDE_PROCESSES
    • OTEL_DOTNET_AUTO_FAIL_FAST_ENABLED
    • OTEL_DOTNET_AUTO_[TRACES|METRICS|LOGS]_INSTRUMENTATION_ENABLED
    • OTEL_DOTNET_AUTO_[TRACES|METRICS|LOGS]_{INSTRUMENTATION_ID}_INSTRUMENTATION_ENABLED
    • OTEL_DOTNET_AUTO_LOG_DIRECTORY
    • OTEL_LOG_LEVEL
    • OTEL_DOTNET_AUTO_NETFX_REDIRECT_ENABLED(非推奨)
    • OTEL_DOTNET_AUTO_REDIRECT_ENABLED
    • OTEL_DOTNET_AUTO_SQLCLIENT_NETFX_ILREWRITE_ENABLED

    OTEL_SERVICE_NAME の設定例:

    <configuration>
    <appSettings>
        <add key="OTEL_SERVICE_NAME" value="my-service-name" />
    </appSettings>
    </configuration>
    
  3. サービス名の自動検出

    サービス名が明示的に構成されていない場合、自動的に生成されます。 これはいくつかの状況で役立ちます。

    • アプリケーションが .NET Framework の IIS 上でホストされている場合、SiteName\VirtualPath(例: MySite\MyApp)になります。
    • それ以外の場合は、アプリケーションの Entry Assembly の名前が使用されます。

デフォルトでは、構成に環境変数を使用することを推奨します。 ただし、特定の設定がサポートしている場合は次のようにします。

  • ASP.NET アプリケーション(.NET Framework)の構成には Web.config を使用します。
  • Windows サービス(.NET Framework)の構成には App.config を使用します。

グローバル設定

環境変数説明デフォルト値ステータス
OTEL_DOTNET_AUTO_HOMEインストール場所。Experimental
OTEL_DOTNET_AUTO_EXCLUDE_PROCESSESプロファイラーが計装できない実行ファイルの名前。カンマ区切りで複数の値をサポートします(例: ReservedProcess.exe,powershell.exe)。未設定の場合、プロファイラーはデフォルトですべてのプロセスにアタッチします。[1][2]Experimental
OTEL_DOTNET_AUTO_FAIL_FAST_ENABLED自動計装が実行できない場合にプロセスをフェイルさせる機能を有効にします。デバッグ目的で設計されています。本番環境では使用しないでください。[1]falseExperimental

[1] OTEL_DOTNET_AUTO_FAIL_FAST_ENABLEDtrue に設定されている場合、OTEL_DOTNET_AUTO_EXCLUDE_PROCESSES によって計装から除外されたプロセスは、サイレントに続行するかわりにフェイルします。

[2] dotnet MyApp.dll で起動されたアプリケーションのプロセス名は dotnet または dotnet.exe であることに注意してください。

リソース

リソースは、テレメトリーを生成しているエンティティの不変の表現です。 詳細については、リソースのセマンティック規約を参照してください。

リソース属性

環境変数説明デフォルト値ステータス
OTEL_RESOURCE_ATTRIBUTESリソース属性として使用されるキーバリューペア。詳細については、Resource SDK を参照してください。詳細については、リソースのセマンティック規約を参照してください。Stable
OTEL_SERVICE_NAMEservice.name リソース属性の値を設定します。OTEL_RESOURCE_ATTRIBUTESservice.name が指定されている場合、OTEL_SERVICE_NAME の値が優先されます。「構成方法」セクションのサービス名の自動検出を参照してください。Stable

リソースディテクター

環境変数説明デフォルト値ステータス
OTEL_DOTNET_AUTO_RESOURCE_DETECTOR_ENABLEDすべてのリソースディテクターを有効にします。trueExperimental
OTEL_DOTNET_AUTO_{0}_RESOURCE_DETECTOR_ENABLED特定のリソースディテクターを有効にするための構成パターン。{0} は有効にしたいリソースディテクターの大文字の ID です。OTEL_DOTNET_AUTO_RESOURCE_DETECTOR_ENABLED をオーバーライドします。trueExperimental

以下のリソースディテクターがデフォルトで組み込まれ、有効になっています。

ID説明ドキュメントステータス
AZUREAPPSERVICEAzure App Service ディテクターAzure リソースディテクターのドキュメントExperimental
CONTAINERContainer ディテクターContainer リソースディテクターのドキュメント .NET Framework ではサポートされていませんExperimental
HOSTHost ディテクターHost リソースディテクターのドキュメントExperimental
OPERATINGSYSTEMOperating System ディテクターOperating System リソースディテクターのドキュメントExperimental
PROCESSProcess ディテクターProcess リソースディテクターのドキュメントExperimental
PROCESSRUNTIMEProcess Runtime ディテクターProcess Runtime リソースディテクターのドキュメントExperimental

プロパゲーター

プロパゲーターはアプリケーション間でコンテキストを共有できるようにします。 詳細については、OpenTelemetry 仕様を参照してください。

環境変数説明デフォルト値
OTEL_PROPAGATORSカンマ区切りのプロパゲーターのリスト。サポートされるオプション: tracecontextbaggageb3multib3。詳細については、OpenTelemetry 仕様を参照してください。tracecontext,baggage

サンプラー

サンプラーを使用すると、収集およびエクスポートするトレースを選択することで、OpenTelemetry の計装によって発生する潜在的なノイズやオーバーヘッドを制御できます。 詳細については、OpenTelemetry 仕様を参照してください。

環境変数説明デフォルト値ステータス
OTEL_TRACES_SAMPLERトレースに使用するサンプラー [1]parentbased_always_onStable
OTEL_TRACES_SAMPLER_ARGサンプラーの引数として使用する文字列値 [2]Stable

[1]: サポートされる値:

  • always_on
  • always_off
  • traceidratio
  • parentbased_always_on
  • parentbased_always_off
  • parentbased_traceidratio

[2]: traceidratio および parentbased_traceidratio サンプラーの場合: サンプリング確率。[0..1] の範囲の数値です(例: “0.25”)。 デフォルトは 1.0 です。

エクスポーター

エクスポーターはテレメトリーを出力します。

環境変数説明デフォルト値ステータス
OTEL_TRACES_EXPORTERカンマ区切りのエクスポーターのリスト。サポートされるオプション: otlpzipkin [1]、consolenoneotlpStable
OTEL_METRICS_EXPORTERカンマ区切りのエクスポーターのリスト。サポートされるオプション: otlpprometheusconsolenoneotlpStable
OTEL_LOGS_EXPORTERカンマ区切りのエクスポーターのリスト。サポートされるオプション: otlpconsolenoneotlpStable

[1]: zipkin は非推奨であり、今後のリリースで削除されます。

トレースエクスポーター

環境変数説明デフォルト値ステータス
OTEL_BSP_SCHEDULE_DELAY2 回の連続エクスポート間の遅延間隔(ミリ秒)。5000Stable
OTEL_BSP_EXPORT_TIMEOUTデータのエクスポートに許可される最大時間(ミリ秒)。30000Stable
OTEL_BSP_MAX_QUEUE_SIZE最大キューサイズ。2048Stable
OTEL_BSP_MAX_EXPORT_BATCH_SIZE最大バッチサイズ。OTEL_BSP_MAX_QUEUE_SIZE 以下である必要があります。512Stable

メトリクスエクスポーター

環境変数説明デフォルト値ステータス
OTEL_METRIC_EXPORT_INTERVAL2 回のエクスポート試行の開始間の時間間隔(ミリ秒)。OTLP エクスポーターの場合 60000、console エクスポーターの場合 10000Stable
OTEL_METRIC_EXPORT_TIMEOUTデータのエクスポートに許可される最大時間(ミリ秒)。OTLP エクスポーターの場合 30000、console エクスポーターの場合なしStable

ログエクスポーター

環境変数説明デフォルト値ステータス
OTEL_DOTNET_AUTO_LOGS_INCLUDE_FORMATTED_MESSAGEフォーマットされたログメッセージを設定するかどうか。falseExperimental

OTLP

ステータス: Stable

OTLP エクスポーターを有効にするには、OTEL_TRACES_EXPORTER/OTEL_METRICS_EXPORTER/OTEL_LOGS_EXPORTER 環境変数を otlp に設定します。

環境変数を使用して OTLP エクスポーターをカスタマイズするには、OTLP エクスポーターのドキュメントを参照してください。 重要な環境変数は以下の通りです。

環境変数説明デフォルト値ステータス
OTEL_EXPORTER_OTLP_ENDPOINTOTLP エクスポーターのターゲットエンドポイント。詳細については、OpenTelemetry 仕様を参照してください。http/protobuf: http://localhost:4318grpc: http://localhost:4317Stable
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTOTEL_EXPORTER_OTLP_ENDPOINT と同等ですが、トレースにのみ適用されます。http/protobuf: http://localhost:4318/v1/tracesgrpc: http://localhost:4317Stable
OTEL_EXPORTER_OTLP_METRICS_ENDPOINTOTEL_EXPORTER_OTLP_ENDPOINT と同等ですが、メトリクスにのみ適用されます。http/protobuf: http://localhost:4318/v1/metricsgrpc: http://localhost:4317Stable
OTEL_EXPORTER_OTLP_LOGS_ENDPOINTOTEL_EXPORTER_OTLP_ENDPOINT と同等ですが、ログにのみ適用されます。http/protobuf: http://localhost:4318/v1/logsgrpc: http://localhost:4317Stable
OTEL_EXPORTER_OTLP_PROTOCOLOTLP エクスポーターのトランスポートプロトコル。サポートされる値: grpchttp/protobuf。[1]http/protobufStable
OTEL_EXPORTER_OTLP_TRACES_PROTOCOLOTEL_EXPORTER_OTLP_PROTOCOL と同等ですが、トレースにのみ適用されます。http/protobufStable
OTEL_EXPORTER_OTLP_METRICS_PROTOCOLOTEL_EXPORTER_OTLP_PROTOCOL と同等ですが、メトリクスにのみ適用されます。http/protobufStable
OTEL_EXPORTER_OTLP_LOGS_PROTOCOLOTEL_EXPORTER_OTLP_PROTOCOL と同等ですが、ログにのみ適用されます。http/protobufStable
OTEL_EXPORTER_OTLP_TIMEOUTバックエンドが各バッチを処理するための最大待機時間(ミリ秒)。10000(10 秒)Stable
OTEL_EXPORTER_OTLP_TRACES_TIMEOUTOTEL_EXPORTER_OTLP_TIMEOUT と同等ですが、トレースにのみ適用されます。10000(10 秒)Stable
OTEL_EXPORTER_OTLP_METRICS_TIMEOUTOTEL_EXPORTER_OTLP_TIMEOUT と同等ですが、メトリクスにのみ適用されます。10000(10 秒)Stable
OTEL_EXPORTER_OTLP_LOGS_TIMEOUTOTEL_EXPORTER_OTLP_TIMEOUT と同等ですが、ログにのみ適用されます。10000(10 秒)Stable
OTEL_EXPORTER_OTLP_HEADERS各エクスポートで送信される追加の HTTP ヘッダーのカンマ区切りリスト(例: Authorization=secret,X-Key=Value)。Stable
OTEL_EXPORTER_OTLP_TRACES_HEADERSOTEL_EXPORTER_OTLP_HEADERS と同等ですが、トレースにのみ適用されます。Stable
OTEL_EXPORTER_OTLP_METRICS_HEADERSOTEL_EXPORTER_OTLP_HEADERS と同等ですが、メトリクスにのみ適用されます。Stable
OTEL_EXPORTER_OTLP_LOGS_HEADERSOTEL_EXPORTER_OTLP_HEADERS と同等ですが、ログにのみ適用されます。Stable
OTEL_EXPORTER_OTLP_CERTIFICATEサーバーの TLS 証明書を検証するために使用する CA 証明書ファイル(PEM 形式)のパス。[3]Stable
OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATEmTLS 認証用のクライアント証明書ファイル(PEM 形式)のパス。[3]Stable
OTEL_EXPORTER_OTLP_CLIENT_KEYmTLS 認証用のクライアント秘密鍵ファイル(PEM 形式)のパス。[3]Stable
OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT属性値の最大許容サイズ。noneStable
OTEL_ATTRIBUTE_COUNT_LIMITスパン属性の最大許容数。128Stable
OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT属性値の最大許容サイズ。メトリクスには適用されません。noneStable
OTEL_SPAN_ATTRIBUTE_COUNT_LIMITスパン属性の最大許容数。メトリクスには適用されません。128Stable
OTEL_SPAN_EVENT_COUNT_LIMITスパンイベントの最大許容数。128Stable
OTEL_SPAN_LINK_COUNT_LIMITスパンリンクの最大許容数。128Stable
OTEL_EVENT_ATTRIBUTE_COUNT_LIMITスパンイベントあたりの属性の最大許容数。128Stable
OTEL_LINK_ATTRIBUTE_COUNT_LIMITスパンリンクあたりの属性の最大許容数。128Stable
OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMITログレコード属性値の最大許容サイズ。noneStable
OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMITログレコード属性の最大許容数。128Stable
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE計装の種類に基づいて使用する集約のテンポラリティ。[2]cumulativeStable

[1]: OTEL_EXPORTER_OTLP_PROTOCOL に関する考慮事項:

  • OpenTelemetry .NET 自動計装のデフォルトは http/protobuf であり、OpenTelemetry .NET SDK のデフォルト値 grpc とは異なります。
  • .NET 8 以上では、grpc OTLP エクスポータープロトコルを使用するためにアプリケーションが Grpc.Net.Client を参照する必要があります。 たとえば、.csproj ファイルに <PackageReference Include="Grpc.Net.Client" Version="2.65.0" /> を追加します。
  • .NET Framework では、grpc OTLP エクスポータープロトコルはサポートされていません。

[2]: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE で認識される値(大文字小文字を区別しない):

  • Cumulative: すべての計装の種類に対して累積集約テンポラリティを選択します。
  • Delta: Counter、Asynchronous Counter、Histogram の計装の種類に対して Delta 集約テンポラリティを選択し、UpDownCounter と Asynchronous UpDownCounter の計装の種類に対しては Cumulative 集約を選択します。
  • LowMemory: この構成は、Synchronous Counter と Histogram に対して Delta 集約テンポラリティを使用し、Synchronous UpDownCounter、Asynchronous Counter、Asynchronous UpDownCounter の計装の種類に対しては Cumulative 集約テンポラリティを使用します。
    • ⚠️ 仕様で知られるこの値はサポートされていません。

[3]: mTLS(相互 TLS)構成に関する考慮事項:

  • mTLS は .NET 8.0 以上でのみサポートされます。
  • すべての証明書ファイルは PEM 形式である必要があります。
  • mTLS を使用する場合、OTEL_EXPORTER_OTLP_ENDPOINThttps:// を使用する必要があります。
  • mTLS は .NET Framework ではサポートされていません。

Prometheus

ステータス: Experimental

Prometheus エクスポーターを有効にするには、OTEL_METRICS_EXPORTER 環境変数を prometheus に設定します。

エクスポーターは http://localhost:9464/metrics でメトリクスの HTTP エンドポイントを公開し、レスポンスを 300 ミリ秒間キャッシュします。

詳細については、Prometheus Exporter HttpListener のドキュメントを参照してください。

Zipkin

ステータス: Stable

Zipkin エクスポーターを有効にするには、OTEL_TRACES_EXPORTER 環境変数を zipkin に設定します。

環境変数を使用して Zipkin エクスポーターをカスタマイズするには、Zipkin エクスポーターのドキュメントを参照してください。 重要な環境変数は以下の通りです。

環境変数説明デフォルト値ステータス
OTEL_EXPORTER_ZIPKIN_ENDPOINTZipkin URLhttp://localhost:9411/api/v2/spansStable

追加設定

環境変数説明デフォルト値ステータス
OTEL_DOTNET_AUTO_TRACES_ENABLEDトレースを有効にします。trueExperimental
OTEL_DOTNET_AUTO_OPENTRACING_ENABLEDOpenTracing トレーサーを有効にします。falseDeprecated
OTEL_DOTNET_AUTO_LOGS_ENABLEDログを有効にします。trueExperimental
OTEL_DOTNET_AUTO_METRICS_ENABLEDメトリクスを有効にします。trueExperimental
OTEL_DOTNET_AUTO_NETFX_REDIRECT_ENABLED非推奨。.NET Framework のみ。 プライマリ変数が設定されていない場合の OTEL_DOTNET_AUTO_REDIRECT_ENABLED のフォールバック。かわりに OTEL_DOTNET_AUTO_REDIRECT_ENABLED を使用してください。Deprecated
OTEL_DOTNET_AUTO_REDIRECT_ENABLED自動計装で使用されるバージョン以上のバージョンへのアセンブリ参照のリダイレクトを有効にします。スタンドアロンデプロイメントのデフォルトは true、非スタンドアロンデプロイメント(例: NuGet パッケージデプロイメント)のデフォルトは false です。Experimental
OTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCES起動時にトレーサーに追加される System.Diagnostics.ActivitySource 名のカンマ区切りリスト。手動で計装されたスパンをキャプチャするために使用します。Experimental
OTEL_DOTNET_AUTO_TRACES_ADDITIONAL_LEGACY_SOURCES起動時にトレーサーに追加されるレガシーソース名のカンマ区切りリスト。System.Diagnostics.ActivitySource API を使用せずに作成された System.Diagnostics.Activity オブジェクトをキャプチャするために使用します。Experimental
OTEL_DOTNET_AUTO_FLUSH_ON_UNHANDLEDEXCEPTIONAppDomain.UnhandledException イベントが発生したときにテレメトリーデータをフラッシュするかどうかを制御します。テレメトリーデータの欠落と未処理の例外の両方が発生していると思われる場合に true に設定してください。falseExperimental
OTEL_DOTNET_AUTO_METRICS_ADDITIONAL_SOURCES起動時にメーターに追加される System.Diagnostics.Metrics.Meter 名のカンマ区切りリスト。手動で作成されたメトリクスをキャプチャするために使用します。Experimental
OTEL_DOTNET_AUTO_PLUGINSOTel SDK 計装プラグインタイプのコロン区切りリスト。アセンブリ修飾名で指定します。注: タイプ名にカンマが含まれる場合があるため、このリストはコロン区切りである必要があります。 プラグインの書き方の詳細については、plugins.md を参照してください。Experimental

RuleEngine

RuleEngine は、OpenTelemetry API、SDK、Instrumentation、Exporter アセンブリをサポートされていないシナリオに対して検証する機能であり、クラッシュするかわりにバックオフすることで OpenTelemetry の自動計装をより安定させます。 .NET 8 以上で動作します。

RuleEngine は、アプリケーションの初回実行時、またはデプロイメントが変更されたか自動計装ライブラリがアップグレードされた場合にのみ有効にしてください。 一度検証されると、アプリケーションの再起動時にルールを再検証する必要はありません。

環境変数説明デフォルト値ステータス
OTEL_DOTNET_AUTO_RULE_ENGINE_ENABLEDRuleEngine を有効にします。trueExperimental

.NET CLR プロファイラー

CLR はプロファイラーのセットアップに以下の環境変数を使用します。 詳細については、.NET Runtime Profiler Loading を参照してください。

.NET Framework 環境変数.NET 環境変数説明必要な値ステータス
COR_ENABLE_PROFILINGCORECLR_ENABLE_PROFILINGプロファイラーを有効にします。1Experimental
COR_PROFILERCORECLR_PROFILERプロファイラーの CLSID。{918728DD-259F-4A6A-AC2B-B85E1B658318}Experimental
COR_PROFILER_PATHCORECLR_PROFILER_PATHプロファイラーのパス。Linux glibc の場合 $INSTALL_DIR/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so、Linux musl の場合 $INSTALL_DIR/linux-musl-x64/OpenTelemetry.AutoInstrumentation.Native.so、macOS の場合 $INSTALL_DIR/osx-arm64/OpenTelemetry.AutoInstrumentation.Native.dylibExperimental
COR_PROFILER_PATH_32CORECLR_PROFILER_PATH_3232 ビットプロファイラーのパス。ビット数固有のパスは汎用パスよりも優先されます。Windows の場合 $INSTALL_DIR/win-x86/OpenTelemetry.AutoInstrumentation.Native.dllExperimental
COR_PROFILER_PATH_64CORECLR_PROFILER_PATH_6464 ビットプロファイラーのパス。ビット数固有のパスは汎用パスよりも優先されます。Windows の場合 $INSTALL_DIR/win-x64/OpenTelemetry.AutoInstrumentation.Native.dllExperimental

OpenTelemetry .NET 自動計装を .NET CLR プロファイラーとして設定することは、.NET Framework では必須です。

.NET では、.NET CLR プロファイラーはバイトコード計装にのみ使用されます。 ソース計装のみで十分な場合は、以下の環境変数を解除または削除できます。

COR_ENABLE_PROFILING
COR_PROFILER
COR_PROFILER_PATH_32
COR_PROFILER_PATH_64
CORECLR_ENABLE_PROFILING
CORECLR_PROFILER
CORECLR_PROFILER_PATH
CORECLR_PROFILER_PATH_32
CORECLR_PROFILER_PATH_64

.NET ランタイム

.NET では、.NET CLR プロファイラーが使用されない場合、DOTNET_STARTUP_HOOKS 環境変数を設定する必要があります。

DOTNET_ADDITIONAL_DEPSDOTNET_SHARED_STORE 環境変数は、.NET でのアセンブリバージョンの競合を軽減するために使用されます。

環境変数必要な値ステータス
DOTNET_STARTUP_HOOKS$INSTALL_DIR/net/OpenTelemetry.AutoInstrumentation.StartupHook.dllExperimental
DOTNET_ADDITIONAL_DEPS$INSTALL_DIR/AdditionalDepsExperimental
DOTNET_SHARED_STORE$INSTALL_DIR/storeExperimental

.NET CLR プロファイラーが使用されており、DOTNET_STARTUP_HOOKS 環境変数が設定されていない場合、プロファイラーは OpenTelemetry.AutoInstrumentation.Native.dll ファイルの場所を基準に適切なディレクトリで OpenTelemetry.AutoInstrumentation.StartupHook.dll を探します。 フォルダー構造は ZIP アーカイブ構造または NuGet パッケージ構造(プラットフォーム依存またはプラットフォーム非依存)と一致させることができます。 スタートアップフックアセンブリが見つからない場合、プロファイラーの読み込みは中断されます。

内部ログ

内部ログのデフォルトのディレクトリパスは以下の通りです。

  • Windows: %ProgramData%\OpenTelemetry .NET AutoInstrumentation\logs
  • Linux: /var/log/opentelemetry/dotnet
  • macOS: /var/log/opentelemetry/dotnet

デフォルトのログディレクトリを作成できない場合、計装は現在のユーザーの一時フォルダーのパスをかわりに使用します。

環境変数説明デフォルト値ステータス
OTEL_DOTNET_AUTO_LOG_DIRECTORY.NET Tracer ログのディレクトリ。デフォルトパスに関する前述の注記を参照Experimental
OTEL_LOG_LEVELSDK のログレベル。(サポートされる値: noneerrorwarninfodebuginfoStable
OTEL_DOTNET_AUTO_LOGGERAutoInstrumentation 診断ログのシンク。(サポートされる値: nonefileconsolefileExperimental
OTEL_DOTNET_AUTO_LOG_FILE_SIZEAuto Instrumentation が作成する単一のログファイルの最大サイズ(バイト)10 485 760(10 MB)Experimental