OpenTelemetry

Voor deze functie is het NuGet-pakket Microsoft.Testing.Extensions.OpenTelemetry vereist.

Deze extensie integreert OpenTelemetry met Microsoft. Testing.Platform (MTP), waarmee testuitvoeringen traceringen en metrische gegevens kunnen verzenden via de standaard OpenTelemetry SDK.

Opmerking

Deze extensie is beschikbaar in MTP vanaf versie 2.1.0.

Belangrijk

Vanaf MTP 2.4.0 volgt de OpenTelemetry-extensie de MTP-releaseversie en zijn de openbare toegangspunten niet meer experimenteel.

Eigendom van de provider kiezen

Kies of MTP of uw toepassing eigenaar is van de OpenTelemetry-providers.

Providers van MTP gebruiken

Schakel het automatisch gegenereerde startpunt (<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>) uit en roep AddOpenTelemetryProvider aan in uw Main-methode:

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

Als u instrumentatie, resourcekenmerken en een OTLP-exporteur wilt configureren vanuit standaardomgevingsvariabelen OTEL_* , roept u het volgende aan:

builder.AddOpenTelemetryProviderFromEnvironment();

Met de methode wordt alleen instrumentatie toegevoegd wanneer u een exporteur configureert of een callback voor configuratie doorgeeft, zodat u de registratie in de toepassing kunt verlaten wanneer sommige omgevingen geen telemetrie exporteren.

Gebruik toepassingseigen providers

Vanaf MTP 2.5 previewversie roept u AddTestingPlatformDiagnostics aan wanneer uw toepassing OpenTelemetry al configureert via Aspire ServiceDefaults, Microsoft.Extensions.Hosting of een andere composition root. Met deze methode worden de activiteitsbron en - Microsoft.Testing.Platform meter geactiveerd zonder een TracerProvider of MeterProviderte maken, leeg te maken of te verwijderen.

Registreer de provider die eigendom is van de toepassing met AddTestingPlatformInstrumentation bij de tracing- en metriekbuilders. De toepassing behoudt de regie over de providers, exporteurs, resource-identiteit en opschoning.

Voor een door MSBuild gegenereerd gehost toegangspunt verwijs je naar Microsoft.Testing.Extensions.Hosting, stel je TestingPlatformHostFactory in op de hostfactorymethode en stel je het volgende in:

<TestingPlatformOpenTelemetryMode>HostOwned</TestingPlatformOpenTelemetryMode>

HostOwned roept alleen AddTestingPlatformDiagnosticsaan; er worden geen providers gemaakt of de resource-id van de host vervangen. Zie Hostintegratie voor de levenscyclus van de host en de fabrieksvereisten.

API

AddTestingPlatformDiagnostics

Activeert de activiteitsbron en meter van MTP voor listeners die eigendom zijn van de toepassing of voor OpenTelemetry-providers, zonder het eigendom van de provider over te dragen aan MTP.

AddOpenTelemetryProvider

Registreert de OpenTelemetry-provider op ITestApplicationBuilder. Accepteert twee optionele callbacks:

  • withTracing: hiermee configureert u de TracerProviderBuilder voor gedistribueerde tracering.
  • withMetrics: hiermee configureert u de MeterProviderBuilder verzameling voor metrische gegevens.

AddTestingPlatformInstrumentation

Roep TracerProviderBuilder aan en abonneer u op MeterProviderBuilder om de ingebouwde Microsoft.Testing.Platform activiteitsbron en meter te gebruiken.

AddTestingPlatformResource

Roep aan ResourceBuilder om testassembly-, host-, besturingssysteem- en runtimekenmerken toe te voegen. De detector identificeert ook CI-provider, pijplijn, vertakking en doorvoerinformatie voor GitHub Actions, Azure-pipelines, GitLab CI en Jenkins.

Hulpfuncties voor specifieke resources

Voor een provider die eigendom is van een toepassing, roept u AddTestingPlatformTestResource aan om testspecifieke identiteit toe te voegen en AddTestingPlatformCIResource de herkomst van CI en broncodebeheer toe te voegen. Deze gerichte helpers vervangen niet de kenmerken van de toepassing service.*, host.*, os.* of process.*.

AddOpenTelemetryProviderFromEnvironment

Configureert tracering, metrische gegevens, resourcedetectie en een OTLP-exporteur op basis van standaardomgevingsvariabelen van OpenTelemetry. OTEL_SDK_DISABLED=true schakelt de integratie uit. Configureer OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER of OTEL_EXPORTER_OTLP_ENDPOINT om export te activeren.

Activiteitsbron en meter

De extensie verzendt telemetrie onder:

  • Activiteitsbron: Microsoft.Testing.Platform
  • Meter: Microsoft.Testing.Platform

Semantische conventies

MTP verzendt standaard OpenTelemetry-tests en codekenmerken waar een conventie bestaat, waaronder test.case.name, , test.case.result.statustest.suite.name, , code.function.name, code.file.path, code.line.number, , en code.stacktrace.error.type Mislukte tests stellen de spanstatus in Error op en voegen een exception gebeurtenis toe.

MTP breidt de conventies uit met aanvullende resultaatstatussen (skipped, error, timeout, cancelleden ) en unknowntestkenmerken voor concepten die niet door OpenTelemetry worden gedefinieerd. Als u bestaande dashboards wilt behouden, blijven verouderde kenmerk- en instrumentnamen standaard ingeschakeld.

Wanneer het startproces TRACEPARENT en TRACESTATE meegeeft, plaatst MTP de testuitvoering onder die trace in plaats van een ongerelateerde root-trace te starten.

MSTest-uitvoeringsspans

Vanaf MSTest 4.5 en MTP 2.5 preview gebruiken systeemeigen MSTest-uitvoeringen één canonieke MTP-activiteit voor elke testuitvoering. MSTest maakt de activiteit actueel terwijl de testconstructor, initialisatie, testmethode, opschoning en aangepaste TestMethodAttribute code worden uitgevoerd. Automatisch geïnstrumenteerde activiteiten HttpClient, SQL, Entity Framework, WCF en aangepaste activiteiten worden daardoor onderliggende elementen van de testactiviteit.

MTP voegt het uiteindelijke resultaat, de timing, uitvoer en artefacten toe aan dezelfde activiteit en stopt het bij de eindtijd van de uitvoering die door MSTest is vastgelegd. Dit gedrag voorkomt dubbele frameworks en resultatenspanne en voorkomt dat asynchrone resultaatverwerking de testduur vergroot.

Testframeworks die niet gebruikmaken van de canonieke uitvoerings-API behouden de compatibiliteitstopologie: de uitvoeringsactiviteit van het framework en de MTP-resultaatactiviteit blijven hetzelfde en de resultaatactiviteit is gekoppeld aan de activiteit die actueel was toen het framework de update in uitvoering publiceerde.

Uitgezonden metingen

Instrument Typ Eenheid Description
test.case.duration Histogram s Testduur, gegroepeerd op resultaatstatus en suite.
test.case.result.count Counter {test} Voltooide tests, gegroepeerd op resultaatstatus en suite.
test.case.active UpDownCounter {test} Tests die momenteel worden uitgevoerd.
test.run.duration Histogram s Uitvoeringsduur, gegroepeerd op resultaatstatus en afsluitcode.
test.case.retry.count Counter {test} Tests gepland voor een andere poging door de extensie voor opnieuw proberen.

Omgevingsconfiguratie

Omgevingsvariabele Verstek Description
TRACEPARENT, TRACESTATE Ongedefinieerd W3C-tracecontext voor de bovenliggende run.
TESTINGPLATFORM_OTEL_CAPTURE_TEST_OUTPUT 1 Koppelt vastgelegde standaarduitvoer en -fout aan testbereiken. Ingesteld op 0 wanneer uitvoer geheimen kan bevatten.
TESTINGPLATFORM_OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT 8192 Hiermee stelt u de maximumtekens in die worden bewaard voor een tekenreekskenmerk.
TESTINGPLATFORM_OTEL_EMIT_LEGACY_ATTRIBUTES 1 Geeft verouderde kenmerk- en instrumentnamen door naast namen volgens semantische conventies.
OTEL_SDK_DISABLED Ongedefinieerd Stel in op true om de OpenTelemetry SDK uit te schakelen.
OTEL_SERVICE_NAME Ongedefinieerd Overschrijft de servicenaam.
OTEL_EXPORTER_OTLP_ENDPOINT Ongedefinieerd Hiermee stelt u het OTLP-eindpunt in.
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER Ongedefinieerd Selecteert trace- en metriekexporteurs.