OpenTelemetry

Для этой функции требуется пакет NuGet Microsoft.Testing.Extensions.OpenTelemetry .

Это расширение интегрирует OpenTelemetry с Microsoft.Testing.Platform (MTP), позволяя тестовые прогоны генерировать трассировки и метрики через стандартный SDK OpenTelemetry.

Замечание

Это расширение доступно в MTP начиная с версии 2.1.0.

Это важно

Начиная с MTP 2.4.0 расширение OpenTelemetry следует версии выпуска MTP, а ее общедоступные точки входа больше не экспериментальны.

Регистрация

Замечание

Это расширение не поддерживает автоматическую регистрацию. Его необходимо зарегистрировать вручную, отключив автоматически созданную точку входа (<GenerateTestingPlatformEntryPoint>false</GenerateTestingPlatformEntryPoint>) и вызвав AddOpenTelemetryProvider в методе 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();

Чтобы настроить инструментирование, атрибуты ресурсов и экспортер OTLP из стандартных OTEL_* переменных среды, вызовите:

builder.AddOpenTelemetryProviderFromEnvironment();

Этот метод добавляет инструментирование только при настройке экспортера или обратном вызове конфигурации, поэтому вы можете оставить регистрацию в приложении, если некоторые среды не экспортируют данные телеметрии.

API

AddOpenTelemetryProvider

Регистрируется провайдер OpenTelemetry в ITestApplicationBuilder. Принимает два необязательных обратных вызова:

  • withTracing: настраивает TracerProviderBuilder для распределенной трассировки.
  • withMetrics: настраивает MeterProviderBuilder для сбора метрик.

AddTestingPlatformInstrumentation

Обратитесь к TracerProviderBuilder или MeterProviderBuilder, чтобы подписаться на встроенный источник активности и счетчик Microsoft.Testing.Platform.

AddTestingPlatformResource

Вызовите ResourceBuilder, чтобы добавить атрибуты тестовой сборки, хоста, операционной системы и среды выполнения. Детектор также определяет сведения о поставщике CI, пайплайне, ветке и коммите для GitHub Actions, Azure Pipelines, GitLab CI и Jenkins.

AddOpenTelemetryProviderFromEnvironment

Регистрирует трассировку, метрики, обнаружение ресурсов и экспортер OTLP из стандартных переменных среды OpenTelemetry. OTEL_SDK_DISABLED=true отключает интеграцию. Настройте OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER или OTEL_EXPORTER_OTLP_ENDPOINT, чтобы активировать экспорт.

Источник действия и счетчик

Расширение выдает данные телеметрии в следующих условиях:

  • Источник действия: Microsoft.Testing.Platform
  • Метр: Microsoft.Testing.Platform

Семантические соглашения

MTP генерирует стандартные атрибуты тестирования и кода OpenTelemetry там, где существует соответствующее соглашение, включая test.case.name, test.case.result.status, test.suite.name, code.line.number, code.file.path, code.function.name, code.stacktrace и error.type. Неудачные тесты задают состояние Error диапазона и добавляют exception событие.

MTP расширяет соглашения, добавляя дополнительные состояния результатов (skipped, error, timeout, cancelled и unknown) и тестовые атрибуты для концепций, которые OpenTelemetry не определяет. Чтобы сохранить существующие панели мониторинга, устаревшие имена атрибутов и инструментов остаются включенными по умолчанию.

Когда процесс запуска передаёт TRACEPARENT и TRACESTATE, MTP помещает тестовый запуск в эту трассировку вместо запуска новой, не связанной с ней корневой трассировки.

Сгенерированные метрики

Инструмент Тип Единица Описание
test.case.duration Гистограмма s Длительность теста, сгруппированная по статусу результата и набору тестов.
test.case.result.count Счетчик {test} Завершенные тесты, сгруппированные по статусу результата и набору тестов.
test.case.active UpDownCounter {test} Тесты, запущенные в настоящее время.
test.run.duration Гистограмма s Длительность выполнения, сгруппированная по состоянию результата и коду выхода.
test.case.retry.count Счетчик {test} Тесты, запланированные расширением повторных попыток для ещё одной попытки.

Конфигурация среды

Переменная среды По умолчанию Описание
TRACEPARENT, TRACESTATE Сбросить Контекст трассировки W3C для родительского запуска.
TESTINGPLATFORM_OTEL_CAPTURE_TEST_OUTPUT 1 Присоединяет стандартные выходные данные и ошибки для тестирования диапазонов. Установите значение 0, если выходные данные могут содержать секреты.
TESTINGPLATFORM_OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT 8192 Задает максимальные символы, сохраненные для строкового атрибута.
TESTINGPLATFORM_OTEL_EMIT_LEGACY_ATTRIBUTES 1 Выводит устаревшие имена атрибутов и инструментов вместе с именами, соответствующими семантическим соглашениям.
OTEL_SDK_DISABLED Сбросить Установите значение true, чтобы отключить пакет SDK OpenTelemetry.
OTEL_SERVICE_NAME Сбросить Переопределяет имя службы.
OTEL_EXPORTER_OTLP_ENDPOINT Сбросить Задает конечную точку OTLP.
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER Сбросить Выбирает экспортеров трассировки и метрик.