Docs » Splunk Observability Cloud でサポートされているインテグレーション » バックエンドアプリケーションをインストルメンテーションして、スパンを Splunk APM に送信する » Splunk Observability Cloud (OpenTelemetry) 用 .NET アプリケーションのインストルメンテーション » OpenTelemetryインストルメンテーションを使用して、.NETトレースデータとログを接続する

OpenTelemetryインストルメンテーションを使用して、.NETトレースデータとログを接続する 🔗

The Splunk Distribution of OpenTelemetry .NET automatically exports logs enriched with tracing context from any application that uses logging API from:

アプリケーションログは、トレースメタデータでエンリッチされ、OTLP フォーマットで OpenTelemetry Collector のローカルインスタンスにエクスポートされます。

以下は、サンプル・コンソール・アプリケーションが生成するログの例です:

2024-02-15 15:23:17 2024-02-15T13:23:17.704Z    info    ResourceLog #0
2024-02-15 15:23:17 Resource SchemaURL:
2024-02-15 15:23:17 Resource attributes:
2024-02-15 15:23:17      -> splunk.distro.version: Str(1.4.0)
2024-02-15 15:23:17      -> container.id: Str(c894cdb646a29616b5f713195cf810be898ca99c311cac8d9d25d8561dd6964b)
2024-02-15 15:23:17      -> telemetry.distro.name: Str(splunk-otel-dotnet)
2024-02-15 15:23:17      -> telemetry.distro.version: Str(1.4.0)
2024-02-15 15:23:17      -> telemetry.sdk.name: Str(opentelemetry)
2024-02-15 15:23:17      -> telemetry.sdk.language: Str(dotnet)
2024-02-15 15:23:17      -> telemetry.sdk.version: Str(1.7.0)
2024-02-15 15:23:17      -> service.name: Str(Example.LogTraceCorrelation.Console)
2024-02-15 15:23:17      -> deployment.environment: Str(dev)
2024-02-15 15:23:17      -> service.version: Str(1.0.0)
2024-02-15 15:23:17 ScopeLogs #0
2024-02-15 15:23:17 ScopeLogs SchemaURL:
2024-02-15 15:23:17 InstrumentationScope
2024-02-15 15:23:17 LogRecord #0
2024-02-15 15:23:17 ObservedTimestamp: 2024-02-15 13:23:13.1358363 +0000 UTC
2024-02-15 15:23:17 Timestamp: 2024-02-15 13:23:13.1358363 +0000 UTC
2024-02-15 15:23:17 SeverityText: Information
2024-02-15 15:23:17 SeverityNumber: Info(9)
2024-02-15 15:23:17 Body: Str(Hello from {activity})
2024-02-15 15:23:17 Attributes:
2024-02-15 15:23:17      -> activity: Str(LogWrappingActivity)
2024-02-15 15:23:17 Trace ID: 17512c0247942df04fb30e6090eacb2c
2024-02-15 15:23:17 Span ID: dc281b062178e72f
2024-02-15 15:23:17 Flags: 1

互換性と必要条件をチェック 🔗

注釈

Automatic log to trace correlation for Microsoft.Extensions.Logging only works for .NET applications. For .NET Framework use manual correlation. See 手動ログとトレースの相関.

以下が該当します:

  • Microsoft.Extensions.Logging version 9.0.0 and higher are supported

  • log4net version from 2.0.13 to 4.0.0 are supported

  • The environmental variable OTEL_DOTNET_AUTO_LOGS_ENABLE_LOG4NET_BRIDGE needs to be set to true

ログ相関を有効にする 🔗

インストルメンテーションは、デフォルトで自動ログとトレースの相関をオンにします。

ログのエンリッチメントとエクスポートをオフにする必要がある場合は、OTEL_DOTNET_AUTO_LOGS_ENABLED 環境変数の値を false に設定してください。

ログ文のトレースメタデータ 🔗

アクティブなアクティビティの範囲内でエクスポートされた個々のログレコードには、以下のトレースコンテキスト情報が含まれます:

  • トレース識別子

  • スパン識別子

  • トレースフラグ

アプリケーションによって生成されたログは、常に以下のOpenTelemetry リソース属性のセットを持ちます

  • telemetry.sdk.name と一定の値の opentelemetry

  • telemetry.sdk.language と一定の値の dotnet

  • telemetry.sdk.version と現在のバージョンの OpenTelemetry .NET SDK

  • telemetry.distro.name と一定の値の splunk-otel-dotnet

  • telemetry.distro.version と現在のバージョンの Splunk Distribution of OpenTelemetry .NET

  • splunk.distro.version 現在のバージョンの Splunk Distribution of OpenTelemetry .NET (非推奨属性)

さらに、インストルメンテーションは以下の属性を追加します:

  • service.name 環境変数 OTEL_SERVICE_NAME で定義されています。

  • OTEL_RESOURCE_ATTRIBUTES 環境変数を使って設定されたすべての属性

  • container.id のように、設定されたリソースディテクターによって追加される属性。

手動ログとトレースの相関 🔗

You can configure logging libraries to include tracing attributes in logs written to existing log destinations.

log4net 🔗

You can modify conversionPattern in your log4net appender to include tracing attributes in logs written to existing log destinations.

The following properties are set by default for the collection of logging events:

  • trace_id

  • span_id

  • trace_flags

Example on how to configure ConsoleAppender:

<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
   <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message span_id=%property{span_id} trace_id=%property{trace_id} trace_flags=%property{trace_flags} test_key=%property{test_key}%newline" />
   </layout>
</appender>

NLog 🔗

NLog.DiagnosticSource を使用することができます。詳細は NLog公式ドキュメント を参照してください。

Serilog 🔗

Serilog.Enrichers.Span のような利用可能なエンリッチャーの1つを使用するか、独自の エンリッシャー を作成して、ログイベントのプロパティとしてトレースコンテキストを追加することができます。

このページは 2025年02月10日 に最終更新されました。