OpenTelemetry

Questa funzionalità richiede il pacchetto NuGet Microsoft.Testing.Extensions.OpenTelemetry .

Questa estensione integra OpenTelemetry con Microsoft. Testing.Platform (MTP), che consente alle esecuzioni di test di generare tracce e metriche tramite OpenTelemetry SDK standard.

Annotazioni

Questa estensione è disponibile in MTP a partire dalla versione 2.1.0.

Importante

A partire da MTP 2.4.0, l'estensione OpenTelemetry segue la versione di rilascio MTP e i relativi punti di ingresso pubblici non sono più sperimentali.

Registration

Annotazioni

Questa estensione non supporta la registrazione automatica. È necessario registrarla manualmente disabilitando il punto di ingresso generato automaticamente (<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>) e chiamando AddOpenTelemetryProvider nel Main metodo .

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();

Per configurare la strumentazione, gli attributi della risorsa e un esportatore OTLP a partire dalle variabili d'ambiente standard OTEL_*, chiamare:

builder.AddOpenTelemetryProviderFromEnvironment();

Il metodo aggiunge strumentazione solo quando si configura un utilità di esportazione o si passa un callback di configurazione, quindi è possibile lasciare la registrazione nell'applicazione quando alcuni ambienti non esportano i dati di telemetria.

API

AddOpenTelemetryProvider

Registra il provider OpenTelemetry su ITestApplicationBuilder. Accetta due i callback facoltativi:

  • withTracing: configura TracerProviderBuilder per la traccia distribuita.
  • withMetrics: configura MeterProviderBuilder per la raccolta di metriche.

AddTestingPlatformInstrumentation

Chiamare TracerProviderBuilder o MeterProviderBuilder per iscriversi all'origine e al contatore dell'attività predefiniti Microsoft.Testing.Platform.

AddTestingPlatformResource

Usare ResourceBuilder per aggiungere gli attributi dell'assembly di test, dell'host, del sistema operativo e del runtime. Il rilevatore identifica anche le informazioni sul provider CI, sulla pipeline, sul branch e sul commit per GitHub Actions, Azure Pipelines, GitLab CI e Jenkins.

AddOpenTelemetryProviderFromEnvironment

Registra il tracciamento, le metriche, il rilevamento delle risorse e un esportatore OTLP dalle variabili d'ambiente OpenTelemetry standard. OTEL_SDK_DISABLED=true disabilita l'integrazione. Configurare OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTERo OTEL_EXPORTER_OTLP_ENDPOINT per attivare l'esportazione.

Origine e contatore dell'attività

L'estensione trasmette dati di telemetria in:

  • Origine attività: Microsoft.Testing.Platform
  • Metro: Microsoft.Testing.Platform

Convenzioni semantiche

MTP genera attributi standard di test e codice OpenTelemetry in cui esiste una convenzione, tra cui test.case.name, test.case.result.status, code.function.nametest.suite.name, code.file.pathcode.line.number, , code.stacktrace, e error.type. I test non superati impostano lo stato dell'intervallo su Error e aggiungono un exception evento.

MTP estende le convenzioni con stati di risultato aggiuntivi (skipped, error, cancelledtimeout, e unknown) e attributi di test per i concetti che OpenTelemetry non definisce. Per mantenere i dashboard esistenti, i nomi degli attributi e degli strumenti legacy rimangono abilitati per impostazione predefinita.

Quando il processo di avvio fornisce TRACEPARENT e TRACESTATE, MTP inserisce l'esecuzione del test in tale traccia anziché avviare una traccia radice non correlata.

Metriche emesse

Strumento Tipo Unità Description
test.case.duration Istogramma s Durata del test, raggruppata per stato del risultato e suite.
test.case.result.count Contatore {test} Test completati, raggruppati per stato del risultato e suite.
test.case.active UpDownCounter {test} Test attualmente in esecuzione.
test.run.duration Istogramma s Durata dell'esecuzione, raggruppata in base allo stato dei risultati e al codice di uscita.
test.case.retry.count Contatore {test} Test programmati per un nuovo tentativo dall'estensione di ripetizione.

Configurazione dell'ambiente

Variabile di ambiente Predefinito Description
TRACEPARENT, TRACESTATE Non impostato Contesto di traccia W3C per l'esecuzione principale.
TESTINGPLATFORM_OTEL_CAPTURE_TEST_OUTPUT 1 Allega l'output standard acquisito e l'errore per testare gli intervalli. Imposta su 0 quando l'output potrebbe contenere informazioni sensibili.
TESTINGPLATFORM_OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT 8192 Imposta i caratteri massimi conservati per un attributo stringa.
TESTINGPLATFORM_OTEL_EMIT_LEGACY_ATTRIBUTES 1 Emette nomi di attributi legacy e nomi degli strumenti insieme ai nomi della convenzione semantica.
OTEL_SDK_DISABLED Non impostato Impostare il valore su true per disabilitare l'SDK OpenTelemetry.
OTEL_SERVICE_NAME Non impostato Sovrascrive il nome del servizio.
OTEL_EXPORTER_OTLP_ENDPOINT Non impostato Imposta l'endpoint OTLP.
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER Non impostato Seleziona gli esportatori di tracce e metriche.