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

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

Splunk Distribution of OpenTelemetry .NETは、Microsoft.Extensions.Logging のロギング API をロギングに使用するアプリケーションから、トレースコンテキストが強化されたログを自動的にエクスポートします。

アプリケーションログは、トレースメタデータでエンリッチされ、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

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

注釈

ログからトレースへの自動相関は、.NETアプリケーションでのみ機能します。.NET Frameworkの場合は、手動相関を使用してください。手動ログとトレースの相関 を参照してください。

Microsoft.Extensions.Logging バージョン 8.0.0 以上がサポートされます。

ログ相関を有効にする 🔗

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

ログのエンリッチメントとエクスポートをオフにする必要がある場合は、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 のように、設定されたリソースディテクターによって追加される属性。

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

既存のログ宛先に書き込まれたログにトレース属性を含めるように、ロギングライブラリを設定することができます。

NLog 🔗

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

Serilog 🔗

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

This page was last updated on 2024年02月20日.