OpenTelemetry

Esta característica requiere el paquete NuGet Microsoft.Testing.Extensions.OpenTelemetry .

Esta extensión integra OpenTelemetry con Microsoft. Testing.Platform (MTP), lo que permite que las ejecuciones de pruebas emitan seguimientos y métricas a través del SDK de OpenTelemetry estándar.

Nota:

Esta extensión está disponible en MTP a partir de la versión 2.1.0.

Importante

A partir de MTP 2.4.0, la extensión OpenTelemetry sigue la versión de lanzamiento de MTP y sus puntos de entrada públicos ya no son experimentales.

Registration

Nota:

Esta extensión no admite el registro automático. Debe registrarlo manualmente deshabilitando el punto de entrada generado automáticamente (<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>) y llamando a AddOpenTelemetryProvider en su método Main.

var builder = await TestApplication.CreateBuilderAsync(args);

builder.AddOpenTelemetryProvider(
    withTracing: tracing => tracing
        .AddTestingPlatformInstrumentation()
        .AddConsoleExporter(),
    withMetrics: metrics => metrics
        .AddTestingPlatformInstrumentation()
        .AddConsoleExporter()
);

using var app = await builder.BuildAsync();
return await app.RunAsync();

Para configurar la instrumentación, los atributos de recursos y un exportador de OTLP desde variables de entorno estándar OTEL_* , llame a:

builder.AddOpenTelemetryProviderFromEnvironment();

El método agrega instrumentación solo cuando se configura un exportador o se pasa una devolución de llamada de configuración, por lo que puede dejar el registro en la aplicación cuando algunos entornos no exportan telemetría.

API

AddOpenTelemetryProvider

Registra el proveedor OpenTelemetry en ITestApplicationBuilder. Acepta dos callbacks opcionales:

  • withTracing: configura el TracerProviderBuilder para el seguimiento distribuido.
  • withMetrics: configura el MeterProviderBuilder para la recopilación de métricas.

AddTestingPlatformInstrumentation

Llame a TracerProviderBuilder o MeterProviderBuilder para suscribirse al origen y al medidor de actividad Microsoft.Testing.Platform integrados.

AddTestingPlatformResource

Llame a ResourceBuilder para agregar atributos del ensamblado de prueba, del host, del sistema operativo y del entorno de ejecución. El detector también identifica el proveedor de CI, el pipeline, la rama y la información del commit para Acciones de GitHub, Azure Pipelines, GitLab CI y Jenkins.

AddOpenTelemetryProviderFromEnvironment

Configura el trazado, las métricas, la detección de recursos y un exportador OTLP a partir de las variables de entorno estándar de OpenTelemetry. OTEL_SDK_DISABLED=true deshabilita la integración. Configure OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTERo OTEL_EXPORTER_OTLP_ENDPOINT para activar la exportación.

Origen y medidor de actividad

La extensión emite telemetría bajo el nombre:

  • Origen de la actividad: Microsoft.Testing.Platform
  • Medidor: Microsoft.Testing.Platform

Convenciones semánticas

MTP emite atributos estándar de OpenTelemetry para pruebas y código para los que existe una convención, incluidos code.stacktrace, error.type, code.file.path, code.line.number, code.function.name, test.suite.name, test.case.result.status y test.case.name. Las pruebas fallidas establecen el estado del tramo en Error y añaden un evento exception.

MTP amplía las convenciones con estados de resultado adicionales (skipped, error, timeout, cancelledy unknown) y atributos de prueba para los conceptos que OpenTelemetry no define. Para conservar los paneles existentes, los nombres de atributos e instrumentos heredados permanecen habilitados de forma predeterminada.

Cuando el proceso de lanzamiento proporciona TRACEPARENT y TRACESTATE, MTP sitúa la ejecución de prueba bajo esa traza en lugar de iniciar una traza raíz no relacionada.

Métricas emitidas

Instrumento Tipo Unidad Description
test.case.duration Histograma s Duración de la prueba, agrupada por estado del resultado y conjunto de pruebas.
test.case.result.count Contador {test} Pruebas completadas, agrupadas por estado de resultado y conjunto.
test.case.active UpDownCounter {test} Pruebas que se están ejecutando actualmente.
test.run.duration Histograma s Duración de la ejecución, agrupada por estado de resultado y código de salida.
test.case.retry.count Contador {test} Pruebas programadas para otro intento por la extensión de reintento.

Configuración de entorno

Variable del entorno Predeterminado Description
TRACEPARENT, TRACESTATE Anular Contexto de seguimiento de W3C para la ejecución primaria.
TESTINGPLATFORM_OTEL_CAPTURE_TEST_OUTPUT 1 Asocia los intervalos de salida y error estándar capturados a intervalos de pruebas. Establézcalo en 0 cuando la salida pueda contener secretos.
TESTINGPLATFORM_OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT 8192 Establece los caracteres máximos retenidos para un atributo de cadena.
TESTINGPLATFORM_OTEL_EMIT_LEGACY_ATTRIBUTES 1 Emite nombres heredados de atributos e instrumentos junto con nombres de convención semántica.
OTEL_SDK_DISABLED Anular Establézcalo en true para deshabilitar el SDK de OpenTelemetry.
OTEL_SERVICE_NAME Anular Invalida el nombre del servicio.
OTEL_EXPORTER_OTLP_ENDPOINT Anular Establece el punto de conexión de OTLP.
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER Anular Selecciona exportadores de trazas y métricas.