カスタムトレースとメトリクスの作成

.NET 自動計装を使用したカスタムトレースとメトリクス。

自動計装は TracerProvider と MeterProvider を構成するため、独自の手動計装を追加できます。 自動計装と手動計装の両方を使用することで、アプリケーション、クライアント、フレームワークのロジックと機能をより的確に計装できます。

トレース

カスタムトレースを手動で作成するには、以下の手順に従ってください。

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

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

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

    using (var activity = RegisteredActivity.StartActivity("Main"))
    {
       activity?.SetTag("foo", "bar1");
       // Main アクティビティのロジック
    }
    
  4. OpenTelemetry.AutoInstrumentation に ActivitySource を登録するには、環境変数 OTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCES を設定します。 値は Examples.ManualInstrumentations.Registered または接頭辞全体を登録する Examples.ManualInstrumentations.* のいずれかに設定できます。

メトリクス

カスタムメトリクスを手動で作成するには、以下の手順に従ってください。

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

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

    using var meter = new Meter("Examples.Service", "1.0");
    
  3. 計装を作成します。

    var successCounter = meter.CreateCounter<long>("srv.successes.count", description: "Number of successful responses");
    
  4. 計装の値を更新します。 必要に応じてタグを設定します。

    successCounter.Add(1, new KeyValuePair<string, object?>("tagName", "tagValue"));
    
  5. OpenTelemetry.AutoInstrumentation に Meter を登録するには、環境変数 OTEL_DOTNET_AUTO_METRICS_ADDITIONAL_SOURCES を設定します。

    OTEL_DOTNET_AUTO_METRICS_ADDITIONAL_SOURCES=Examples.Service
    

    値は Examples.Service または接頭辞全体を登録する Examples.* のいずれかに設定できます。

参考資料