创建自定义跟踪和指标

.NET 自动检测的自定义跟踪和指标。

自动检测会配置 TracerProviderMeterProvider,以便您可以添加自己的手动检测。通过同时使用自动检测和手动检测,您可以更好地检测应用程序、客户端和框架的逻辑和功能。

追踪

要手动创建自定义跟踪,请执行以下步骤

  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");
       // your logic for Main activity
    }
    
  4. 通过设置 OTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCES 环境变量,在 OpenTelemetry.AutoInstrumentation 中注册您的 ActivitySource。您可以将值设置为 Examples.ManualInstrumentations.RegisteredExamples.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. 创建 Instrument

    var successCounter = meter.CreateCounter<long>("srv.successes.count", description: "Number of successful responses");
    
  4. 更新 Instrument 值。可选,设置标签

    successCounter.Add(1, new KeyValuePair<string, object?>("tagName", "tagValue"));
    
  5. 通过设置 OTEL_DOTNET_AUTO_METRICS_ADDITIONAL_SOURCES 环境变量,在 OpenTelemetry.AutoInstrumentation 中注册您的 Meter

    OTEL_DOTNET_AUTO_METRICS_ADDITIONAL_SOURCES=Examples.Service
    

    您可以将值设置为 Examples.ServiceExamples.*,后者会注册整个前缀。

深入阅读