Splunk Observability Cloud 用に .NET アプリケーションを手動でインストルメンテーションする

スパンにカスタム属性を追加してスパンを手動で生成する場合は、.NET アプリケーションを手動でインストルメンテーションしてください。Splunk Observability Cloud 用に .NET アプリケーションを手動でインストルメンテーションする方法については、続きをお読みください。

Splunk Distribution of OpenTelemetry .NET ゼロコード インストルメンテーションは、独自の手動インストルメンテーションを追加することで構築可能なベースを提供します。ゼロコードと手動のインストルメンテーションの両方を使用することで、アプリケーション、クライアント、およびフレームワークのロジックと機能をより適切にインストルメンテーションできます。

カスタムトレースの作成

カスタムのスパンとトレースを作成するには、以下の手順に従ってください:

  1. Splunk Distribution of OpenTelemetry .NET をインストールします。「.NET アプリケーションのインストルメンテーション」を参照してください。

  2. System.Diagnostics.DiagnosticSource の依存関係をプロジェクトに追加します:

    <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.0" />
  3. ActivitySource インスタンスを作成します:

    private static readonly ActivitySource RegisteredActivity = new ActivitySource("Examples.ManualInstrumentations.Registered");
  4. Activity(スパン)を作成します。必要に応じて次のタグを設定します。

    using (var activity = RegisteredActivity.StartActivity("Custom Span Name"))
    {
      // Check if the activity is sampled and if full data collection is enabled.
      // This ensures that tags and other custom attributes are only set when the activity is being recorded.
      // Note: Ensure that skipping logic based on sampling does not interfere with essential business operations.
      if(activity?.IsAllDataRequested)
      {
        // your logic for custom activity
        activity.SetTag("foo", "bar1");
      }
    }
  5. OTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCES 環境変数を設定して ActivitySource を登録します。値を Examples.ManualInstrumentations.* または Examples.ManualInstrumentations.Registered に設定します。この値によってプレフィックス全体が登録されます。

  6. Activity を生成するアクションを呼び出し、Activity のトレース ID を書き留め、Splunk APM でトレースを見つけます。トレースツリーに「カスタムスパン名」という表示名を持つスパンが表示されます。

追加情報と例については、「OpenTelemetry 公式ドキュメント」を参照してください。

カスタムメトリクスの作成

カスタムメトリクスを作成するには、以下の手順に従います:

  1. System.Diagnostics.DiagnosticSource の依存関係をプロジェクトに追加します:

    <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.0" />
  2. Meter インスタンスを作成します:

    using var meter = new Meter("My.Application", "1.0");
  3. Instrument インスタンスを作成します:

    var counter = meter.CreateCounter<long>("custom.counter", description: "Custom counter's description");
  4. Instrument の値を更新します:

    counter.Add(1);
  5. OTEL_DOTNET_AUTO_METRICS_ADDITIONAL_SOURCES 環境変数を設定して、Meter を OpenTelemetry.AutoInstrumentation に登録します:

    OTEL_DOTNET_AUTO_METRICS_ADDITIONAL_SOURCES=My.Application

追加情報と例については、公式の OpenTelemetry ドキュメントの「OpenTelemetry 公式ドキュメント」を参照してください。