OpenTelemetry

이 기능을 사용하려면 Microsoft.Testing.Extensions.OpenTelemetry NuGet 패키지가 필요합니다.

이 확장은 OpenTelemetry와 Microsoft.Testing.Platform(MTP)을 통합하여, 테스트 실행이 표준 OpenTelemetry SDK를 통해 추적 및 메트릭을 내보낼 수 있도록 합니다.

비고

이 확장은 버전 2.1.0부터 MTP에서 사용할 수 있습니다.

중요합니다

MTP 2.4.0부터 OpenTelemetry 확장은 MTP 릴리스 버전을 따르며 공용 진입점은 더 이상 실험적이 아닙니다.

Registration

비고

이 확장은 자동 등록을 지원하지 않습니다. 자동 생성된 진입점(<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();

표준 OTEL_* 환경 변수에서 계측, 리소스 특성 및 OTLP 내보내기를 구성하려면 다음을 호출합니다.

builder.AddOpenTelemetryProviderFromEnvironment();

이 메서드는 내보내기를 구성하거나 구성 콜백을 전달할 때만 계측을 추가하므로 일부 환경에서 원격 분석을 내보내지 않는 경우 애플리케이션에서 등록을 그대로 둘 수 있습니다.

API

AddOpenTelemetryProvider

에 OpenTelemetry 공급자를 등록합니다 ITestApplicationBuilder. 두 가지 선택적 콜백을 허용합니다.

  • withTracing: 분산 추적을 TracerProviderBuilder 구성합니다.
  • withMetrics: 메트릭 수집을 위해 MeterProviderBuilder를 구성합니다.

AddTestingPlatformInstrumentation

TracerProviderBuilder 또는 MeterProviderBuilder를 호출하여 기본 제공 Microsoft.Testing.Platform 활동 원본 및 미터를 구독합니다.

AddTestingPlatformResource

ResourceBuilder 테스트 어셈블리, 호스트, 운영 체제 및 런타임 특성을 추가하려면 호출합니다. 또한 탐지기는 GitHub Actions, Azure Pipelines, GitLab CI 및 Jenkins에 대한 CI 공급자, 파이프라인, 분기 및 커밋 정보를 식별합니다.

AddOpenTelemetryProviderFromEnvironment

표준 OpenTelemetry 환경 변수에서 추적, 메트릭, 리소스 검색 및 OTLP 내보내기를 등록합니다. OTEL_SDK_DISABLED=true 는 통합을 사용하지 않도록 설정합니다. 내보내기를 활성화하려면 OTEL_METRICS_EXPORTER, OTEL_TRACES_EXPORTER 또는 OTEL_EXPORTER_OTLP_ENDPOINT을(를) 구성하세요.

활동 소스 및 미터

확장은 다음 항목에서 원격 분석을 내보냅니다.

  • 활동 원본: Microsoft.Testing.Platform
  • 미터: Microsoft.Testing.Platform

의미 체계 규칙

MTP는 해당 규약이 존재하는 경우 test.case.name, test.case.result.status, test.suite.name, code.line.number, code.stacktrace, code.function.name, code.file.path, 및 error.type를 포함하여 표준 OpenTelemetry 테스트 및 코드 속성을 내보냅니다. 실패한 테스트는 span 상태를 Error로 설정하고 exception 이벤트를 추가합니다.

MTP는 OpenTelemetry에서 정의하지 않는 개념에 대한 추가 결과 상태(skipped, error, timeout, cancelled및) 및 unknown테스트 특성을 사용하여 규칙을 확장합니다. 기존 대시보드를 유지하기 위해 레거시 특성 및 계측 이름은 기본적으로 사용하도록 설정되어 있습니다.

시작 프로세스가 TRACEPARENTTRACESTATE을 제공하면 MTP는 관련 없는 루트 추적을 시작하는 대신 테스트 실행을 해당 추적 아래에 배치합니다.

내보낸 메트릭

악기 Type 단위 Description
test.case.duration 히스토그램 s 테스트 기간, 결과 상태 및 제품군별로 그룹화됩니다.
test.case.result.count 계수기 {test} 완료된 테스트, 결과 상태 및 제품군별로 그룹화됩니다.
test.case.active UpDownCounter {test} 현재 실행 중인 테스트입니다.
test.run.duration 히스토그램 s 실행 기간( 결과 상태 및 종료 코드별로 그룹화됨)
test.case.retry.count 계수기 {test} 재시도 확장 프로그램에 의해 다시 시도하도록 예약된 테스트입니다.

환경 구성

환경 변수 기본값 Description
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로 설정하면 OpenTelemetry SDK가 비활성화됩니다.
OTEL_SERVICE_NAME 해제 서비스 이름을 재정의합니다.
OTEL_EXPORTER_OTLP_ENDPOINT 해제 OTLP 엔드포인트를 설정합니다.
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER 해제 추적 및 메트릭 내보내기 도구를 선택합니다.