OpenTelemetry

Fitur ini memerlukan paket NuGet Microsoft.Testing.Extensions.OpenTelemetry .

Ekstensi ini mengintegrasikan OpenTelemetry dengan Microsoft. Testing.Platform (MTP), memungkinkan pengujian dijalankan untuk memancarkan jejak dan metrik melalui OpenTelemetry SDK standar.

Nota

Ekstensi ini tersedia di MTP yang dimulai dengan versi 2.1.0.

Penting

Dimulai dengan MTP 2.4.0, ekstensi OpenTelemetry mengikuti versi rilis MTP dan titik masuk publiknya tidak lagi eksperimental.

Registration

Nota

Ekstensi ini tidak mendukung pendaftaran otomatis. Anda harus mendaftarkannya secara manual dengan menonaktifkan titik masuk yang dihasilkan secara otomatis (<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>) dan memanggil AddOpenTelemetryProvider dalam metode Anda 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();

Untuk mengonfigurasi instrumentasi, atribut sumber daya, dan pengekspor OTLP berdasarkan variabel lingkungan standar OTEL_*, panggil:

builder.AddOpenTelemetryProviderFromEnvironment();

Metode ini menambahkan instrumentasi hanya saat Anda mengonfigurasi pengekspor atau meneruskan panggilan balik konfigurasi, sehingga Anda dapat meninggalkan pendaftaran di aplikasi saat beberapa lingkungan tidak mengekspor telemetri.

API

AddOpenTelemetryProvider

Mendaftarkan penyedia OpenTelemetry di ITestApplicationBuilder. Menerima dua panggilan balik opsional:

  • withTracing: mengonfigurasi TracerProviderBuilder untuk pelacakan terdistribusi.
  • withMetrics: mengonfigurasi MeterProviderBuilder untuk pengumpulan metrik.

AddTestingPlatformInstrumentation

Panggil TracerProviderBuilder atau MeterProviderBuilder untuk berlangganan sumber aktivitas bawaan dan meteran Microsoft.Testing.Platform.

AddTestingPlatformResource

Panggil ResourceBuilder untuk menambahkan assembly pengujian, host, sistem operasi, dan atribut runtime. Detektor juga mengidentifikasi informasi penyedia CI, alur, cabang, dan penerapan untuk GitHub Actions, Azure Pipelines, GitLab CI, dan Jenkins.

AddOpenTelemetryProviderFromEnvironment

Mendaftarkan pelacakan, metrik, deteksi sumber daya, dan eksportir OTLP dari variabel lingkungan OpenTelemetry standar. OTEL_SDK_DISABLED=true menonaktifkan integrasi. Konfigurasikan OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER, atau OTEL_EXPORTER_OTLP_ENDPOINT untuk mengaktifkan ekspor.

Sumber aktivitas dan meteran

Ekstensi memancarkan telemetri melalui:

  • Sumber aktivitas: Microsoft.Testing.Platform
  • Meter: Microsoft.Testing.Platform

Konvensi semantik

MTP menghasilkan atribut pengujian dan kode OpenTelemetry standar jika terdapat konvensi yang sesuai, termasuk test.case.name, test.case.result.status, test.suite.name, code.file.path, code.function.name, code.line.number, code.stacktrace, dan error.type. Tes yang gagal menetapkan status span ke Error dan menambahkan event exception.

MTP memperluas konvensi dengan status hasil tambahan (skipped, error, timeout, cancelled, dan unknown) dan atribut uji untuk konsep yang tidak didefinisikan oleh OpenTelemetry. Untuk mempertahankan dasbor yang ada, atribut warisan dan nama instrumen tetap diaktifkan secara default.

Ketika proses peluncuran menyertakan TRACEPARENT dan TRACESTATE, MTP menempatkan proses uji dalam trace tersebut alih-alih memulai trace root yang tidak terkait.

Metrik yang dihasilkan

Instrumen Type Unit Description
test.case.duration Histogram s Durasi pengujian, dikelompokkan berdasarkan status hasil dan suite pengujian.
test.case.result.count Counter {test} Pengujian yang selesai, dikelompokkan berdasarkan status hasil dan suite pengujian.
test.case.active UpDownCounter {test} Pengujian yang saat ini sedang berjalan.
test.run.duration Histogram s Durasi proses, dikelompokkan berdasarkan status hasil dan kode keluar.
test.case.retry.count Counter {test} Tes yang dijadwalkan untuk dicoba lagi oleh ekstensi retry.

Konfigurasi lingkungan

Variabel Lingkungan Default Description
TRACEPARENT, TRACESTATE Menghapus pengaturan Konteks pelacakan W3C untuk eksekusi induk.
TESTINGPLATFORM_OTEL_CAPTURE_TEST_OUTPUT 1 Melampirkan keluaran standar dan galat standar yang ditangkap ke span pengujian. Atur ke 0 kapan output mungkin berisi rahasia.
TESTINGPLATFORM_OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT 8192 Mengatur karakter maksimum yang dipertahankan untuk atribut string.
TESTINGPLATFORM_OTEL_EMIT_LEGACY_ATTRIBUTES 1 Memancarkan atribut warisan dan nama instrumen bersama nama konvensi semantik.
OTEL_SDK_DISABLED Menghapus pengaturan Atur ke true untuk menonaktifkan OpenTelemetry SDK.
OTEL_SERVICE_NAME Menghapus pengaturan Mengganti nama layanan.
OTEL_EXPORTER_OTLP_ENDPOINT Menghapus pengaturan Mengatur titik akhir OTLP.
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER Menghapus pengaturan Memilih pelacakan dan pengekspor metrik.