OpenTelemetry

Dieses Feature erfordert das NuGet-Paket "Microsoft.Testing.Extensions.OpenTelemetry ".

Diese Erweiterung integriert OpenTelemetry in Microsoft.Testing.Platform (MTP), sodass Testläufe Ablaufverfolgungen und Metriken über das standardmäßige OpenTelemetry SDK ausgeben können.

Hinweis

Diese Erweiterung ist ab Version 2.1.0 in MTP verfügbar.

Von Bedeutung

Ab MTP 2.4.0 folgt die OpenTelemetry-Erweiterung der MTP-Version, und ihre öffentlichen Einstiegspunkte sind nicht mehr experimentell.

Registration

Hinweis

Diese Erweiterung unterstützt keine automatische Registrierung. Sie müssen sie manuell registrieren, indem Sie den automatisch generierten Einstiegspunkt (<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>) und den Aufruf AddOpenTelemetryProvider in Ihrer Main Methode deaktivieren.

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

Um die Instrumentierung, Ressourcenattribute und einen OTLP-Exporter anhand der standardmäßigen Umgebungsvariablen OTEL_* zu konfigurieren, rufen Sie Folgendes auf:

builder.AddOpenTelemetryProviderFromEnvironment();

Die Methode fügt die Instrumentierung nur hinzu, wenn Sie einen Exporter konfigurieren oder einen Konfigurationsrückruf übergeben, sodass Sie die Registrierung in der Anwendung verlassen können, wenn einige Umgebungen keine Telemetrie exportieren.

API

AddOpenTelemetryProvider

Registriert den OpenTelemetry-Anbieter auf ITestApplicationBuilder. Akzeptiert zwei optionale Rückrufe:

  • withTracing: konfiguriert die TracerProviderBuilder für die verteilte Ablaufverfolgung.
  • withMetrics: konfiguriert das MeterProviderBuilder zur Sammlung von Metriken.

AddTestingPlatformInstrumentation

Rufen Sie TracerProviderBuilder oder MeterProviderBuilder auf, um die integrierte Microsoft.Testing.Platform Aktivitätsquelle und den -zähler zu abonnieren.

AddTestingPlatformResource

Rufen Sie ResourceBuilder auf, um Testassembly-, Host-, Betriebssystem- und Runtimeattribute hinzuzufügen. Der Detektor identifiziert auch CI-Anbieter, Pipeline, Zweig und Commit-Informationen für GitHub Actions, Azure Pipelines, GitLab CI und Jenkins.

AddOpenTelemetryProviderFromEnvironment

Registriert Tracing, Metriken, Ressourcenerkennung und einen OTLP-Exporter anhand der standardmäßigen OpenTelemetry-Umgebungsvariablen. OTEL_SDK_DISABLED=true deaktiviert die Integration. Konfigurieren OTEL_TRACES_EXPORTER, , OTEL_METRICS_EXPORTERoder OTEL_EXPORTER_OTLP_ENDPOINT zum Aktivieren des Exports.

Aktivitätsquelle und -meter

Die Erweiterung sendet Telemetrie unter:

  • Aktivitätsquelle: Microsoft.Testing.Platform
  • Messgerät: Microsoft.Testing.Platform

Semantische Konventionen

MTP emittiert standardisierte OpenTelemetry-Test- und Codeattribute, für die eine Konvention existiert, einschließlich test.case.name, test.case.result.status, test.suite.name, code.function.name, code.line.number, code.file.path, code.stacktrace und error.type. Fehlgeschlagene Tests setzen den Span-Status auf Error und fügen ein exception-Ereignis hinzu.

MTP erweitert die Konventionen mit zusätzlichen Ergebniszuständen (skipped, error, timeout, cancelledund unknown) und Testattributen für Konzepte, die OpenTelemetry nicht definiert. Um vorhandene Dashboards beizubehalten, bleiben veraltete Attribut- und Instrumentnamen standardmäßig aktiviert.

Wenn der Startprozess TRACEPARENT und TRACESTATE bereitstellt, ordnet MTP den Testlauf dieser Trace zu, anstatt eine nicht zusammenhängende Root-Trace zu starten.

Ausgegebene Metriken

Instrument Typ Einheit Description
test.case.duration Histogramm s Testdauer, gruppiert nach Ergebnisstatus und Suite.
test.case.result.count Counter {test} Abgeschlossene Tests, gruppiert nach Ergebnisstatus und Suite.
test.case.active UpDownCounter {test} Derzeit ausgeführte Tests.
test.run.duration Histogramm s Laufzeit, gruppiert nach Ergebnisstatus und Beendigungscode.
test.case.retry.count Counter {test} Tests, die für einen anderen Versuch durch die Wiederholungserweiterung geplant sind.

Umgebungskonfiguration

Umgebungsvariable Vorgabe Description
TRACEPARENT, TRACESTATE Nicht festgelegt W3C-Ablaufverfolgungskontext für die übergeordnete Ausführung.
TESTINGPLATFORM_OTEL_CAPTURE_TEST_OUTPUT 1 Fügt erfasste Standardausgabe und Fehler an, um Die Testspanne zu testen. Auf 0 setzen, wenn die Ausgabe Geheimnisse enthalten könnte.
TESTINGPLATFORM_OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT 8192 Legt die maximale Anzahl von Zeichen fest, die für ein Zeichenfolgenattribut beibehalten werden.
TESTINGPLATFORM_OTEL_EMIT_LEGACY_ATTRIBUTES 1 Gibt veraltete Attribut- und Instrumentnamen zusammen mit Namen gemäß semantischer Konventionen aus.
OTEL_SDK_DISABLED Nicht festgelegt Legen Sie den Wert auf true fest, um das OpenTelemetry SDK zu deaktivieren.
OTEL_SERVICE_NAME Nicht festgelegt Setzt den Dienstnamen außer Kraft.
OTEL_EXPORTER_OTLP_ENDPOINT Nicht festgelegt Legt den OTLP-Endpunkt fest.
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER Nicht festgelegt Wählt Trace- und Metrik-Exporter aus.