이 기능을 사용하려면 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테스트 특성을 사용하여 규칙을 확장합니다. 기존 대시보드를 유지하기 위해 레거시 특성 및 계측 이름은 기본적으로 사용하도록 설정되어 있습니다.
시작 프로세스가 TRACEPARENT 및 TRACESTATE을 제공하면 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 |
해제 | 추적 및 메트릭 내보내기 도구를 선택합니다. |
.NET