Crear trazas y métricas personalizadas

Trazas y métricas personalizadas mediante la instrumentación automática de .NET.

La instrumentación automática configura un TracerProvider y un MeterProvider para que puedas añadir tu propia instrumentación manual. Al usar tanto la instrumentación automática como la manual, puedes instrumentar mejor la lógica y la funcionalidad de tus aplicaciones, clientes y marcos de trabajo.

Trazas

Para crear tus trazas personalizadas manualmente, sigue estos pasos:

  1. Añade la dependencia System.Diagnostics.DiagnosticSource a tu proyecto:

    <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.0" />
    
  2. Crea una instancia de ActivitySource:

    private static readonly ActivitySource RegisteredActivity = new ActivitySource("Examples.ManualInstrumentations.Registered");
    
  3. Crea una Activity. Opcionalmente, establece etiquetas:

    using (var activity = RegisteredActivity.StartActivity("Main"))
    {
       activity?.SetTag("foo", "bar1");
       // your logic for Main activity
    }
    
  4. Registra tu ActivitySource en OpenTelemetry.AutoInstrumentation configurando la variable de entorno OTEL_DOTNET_AUTO_TRACES_ADDITIONAL_SOURCES. Puedes establecer el valor en Examples.ManualInstrumentations.Registered o en Examples.ManualInstrumentations.*, que registra todo el prefijo.

Métricas

Para crear tus métricas personalizadas manualmente, sigue estos pasos:

  1. Añade la dependencia System.Diagnostics.DiagnosticSource a tu proyecto:

    <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.0" />
    
  2. Crea una instancia de Meter:

    using var meter = new Meter("Examples.Service", "1.0");
    
  3. Crea un Instrument:

    var successCounter = meter.CreateCounter<long>("srv.successes.count", description: "Number of successful responses");
    
  4. Actualiza el valor Instrument. Opcionalmente, establece etiquetas:

    successCounter.Add(1, new KeyValuePair<string, object?>("tagName", "tagValue"));
    
  5. Registra su Meter con OpenTelemetry.AutoInstrumentation configurando la variable de entorno OTEL_DOTNET_AUTO_METRICS_ADDITIONAL_SOURCES:

    OTEL_DOTNET_AUTO_METRICS_ADDITIONAL_SOURCES=Examples.Service
    

    Puedes establecer el valor en Examples.Service o en Examples.*, lo que registra todo el prefijo.

Más información