创建自定义跟踪和度量

使用.NET自动仪表化进行自定义跟踪和度量

自动仪表化配置了一个TracerProvider和一个MeterProvider,以便您可以添加自己的手动仪表化。通过同时使用自动和手动仪表化,您可以更好地仪表化应用程序、客户端和框架的逻辑和功能。

跟踪

要手动创建自定义跟踪,请按照以下步骤进行操作:

  1. 在您的项目中添加 System.Diagnostics.DiagnosticSource 依赖项:

    <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="7.0.2" />
    
  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 activity 的逻辑
    }
    
  4. 在 OpenTelemetry.AutoInstrumentation 中注册您的 ActivitySource,方法是设置 OTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCES 环境变量。您可以将值设置为 Examples.ManualInstrumentations.RegisteredExamples.ManualInstrumentations.*,其中后者注册整个前缀。

度量

要手动创建自定义度量,请按照以下步骤进行操作:

  1. 在您的项目中添加 System.Diagnostics.DiagnosticSource 依赖项:

    <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="7.0.2" />
    
  2. 创建一个 Meter 实例:

    using var meter = new Meter("Examples.Service", "1.0");
    
  3. 创建一个 Instrument

    var successCounter = meter.CreateCounter<long>("srv.successes.count", description: "成功响应的数量");
    
  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.*,其中后者注册整个前缀。

进一步阅读

最后修改 December 13, 2023: improve glossary translation (46f8201b)