OpenTelemetry .NET
OTEL을 사용해 Trace를 DataKit으로 보내기 전에, 먼저 수집기 구성이 완료되었는지 확인해 주세요.
버전 지원¶
| .NET 버전 | 관련 Instrumentation release | Release notes / 공식 호환성 설명 | 추론 가능한 지원 |
|---|---|---|---|
| .NET 10 | v1.13.0 | “.NET 10 지원” | .NET 10 지원이 명시적으로 추가됨 (GitHub) |
| .NET 9 | v1.13.0 | “STS 채널의 더 긴 지원을 반영하도록 .NET 9에 대한 rule engine 확인을 수정함” | rule engine의 지원 판단에 .NET 9가 포함됨 (GitHub) |
| .NET 8 | v1.2.0 | “.NET 8 지원 추가” | .NET 8 지원이 명시적으로 추가됨 (GitHub) |
| .NET 7 | v0.6.0-beta.2、v1.0.1、v1.4.0 | v0.6.0-beta.2: “net6.0에서 net7.0으로의 framework roll-forward를 올바르게 지원하도록 shared store를 업데이트함”v1.0.1: “ net7.0에서 올바른 설정에서도 실패하던 System.Diagnostics.DiagnosticSource 버전 검증 Rule 문제를 수정함”v1.4.0: “.NET7의 ASP.NET Core traces instrumentation 수정” |
.NET 7 관련 적응/수정 기록이 여러 차례 있음; .NET 7 시나리오를 지원했던 것으로 판단할 수 있으며, v1.4.0에서 .NET7의 ASP.NET Core traces instrumentation 수정이 명시됨 (GitHub) (GitHub) |
| .NET Framework 4.6.2+ | 일반 호환성 설명 | “.NET Framework의 최소 지원 버전은 4.6.2입니다.” |
.NET Framework 4.6.2 이상을 지원하며, 4.6.2 미만은 지원하지 않음 (GitHub) |
설치¶
$module_url = "https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases/download/v1.2.0/OpenTelemetry.DotNet.Auto.psm1"
$download_path = Join-Path $env:temp "OpenTelemetry.DotNet.Auto.psm1"
Invoke-WebRequest -Uri $module_url -OutFile $download_path -UseBasicParsing
Import-Module $download_path -Force
Install-OpenTelemetryCore
구성 매개변수¶
여러 가지 방식으로 매개변수를 설정할 수 있습니다
전역 환경 변수 구성¶
관리자 PowerShell로 실행하세요:
[Environment]::SetEnvironmentVariable("OTEL_SERVICE_NAME", "yishaweb2", "Machine")
[Environment]::SetEnvironmentVariable("OTEL_TRACES_EXPORTER", "otlp", "Machine")
[Environment]::SetEnvironmentVariable("OTEL_METRICS_EXPORTER", "none", "Machine")
[Environment]::SetEnvironmentVariable("OTEL_LOGS_EXPORTER", "none", "Machine")
[Environment]::SetEnvironmentVariable("OTEL_EXPORTER_OTLP_PROTOCOL", "http/protobuf", "Machine")
[Environment]::SetEnvironmentVariable("OTEL_LOG_LEVEL", "debug", "Machine")
[Environment]::SetEnvironmentVariable("OTEL_DOTNET_AUTO_LOGGER", "file", "Machine")
[Environment]::SetEnvironmentVariable("OTEL_DOTNET_AUTO_LOG_DIRECTORY", "C:\ProgramData\OpenTelemetry .NET AutoInstrumentation\logs", "Machine")
[Environment]::SetEnvironmentVariable("OTEL_EXPORTER_OTLP_ENDPOINT", "http://127.0.0.1:9529/otel", "Machine")
실행한 뒤, 정상적으로 기록되었는지 확인하세요:
$names = @(
"OTEL_SERVICE_NAME",
"OTEL_TRACES_EXPORTER",
"OTEL_METRICS_EXPORTER",
"OTEL_LOGS_EXPORTER",
"OTEL_EXPORTER_OTLP_PROTOCOL",
"OTEL_LOG_LEVEL",
"OTEL_DOTNET_AUTO_LOGGER",
"OTEL_DOTNET_AUTO_LOG_DIRECTORY",
"OTEL_EXPORTER_OTLP_ENDPOINT"
)
foreach ($name in $names) {
"{0} = {1}" -f $name, [Environment]::GetEnvironmentVariable($name, "Machine")
}
IIS 애플리케이션인 경우, 새 전역 변수를 읽으려면 애플리케이션 풀 또는 IIS를 다시 시작해야 합니다:
또는:
IIS 직접 구성¶
powershell
notepad C:\Windows\System32\inetsrv\config\applicationHost.config
해당 사이트 노드 아래에 추가합니다. 이 방식은 일부 사이트에 대해서만 Trace 구성을 수집할 때 적합합니다.
xml
<add name="ys" />
<add name="yishaweb2">
<environmentVariables>
<add name="OTEL_SERVICE_NAME" value="yishaweb2" />
<add name="OTEL_TRACES_EXPORTER" value="otlp" />
<add name="OTEL_METRICS_EXPORTER" value="none" />
<add name="OTEL_LOGS_EXPORTER" value="none" />
<add name="OTEL_EXPORTER_OTLP_PROTOCOL" value="http/protobuf" />
<add name="OTEL_LOG_LEVEL" value="debug" />
<add name="OTEL_DOTNET_AUTO_LOGGER" value="file" />
<add name="OTEL_DOTNET_AUTO_LOG_DIRECTORY" value="C:\ProgramData\OpenTelemetry .NET AutoInstrumentation\logs" />
<add name="OTEL_EXPORTER_OTLP_ENDPOINT" value="http://127.0.0.1:9529/otel" />
</environmentVariables>
</add>
주의: applicationHost.config / AppPool에도 같은 이름의 환경 변수가 설정되어 있으면, 애플리케이션 풀 수준 변수는 일반적으로 Machine 수준 변수를 덮어씁니다. 전역 구성을 일관되게 사용하려면 AppPool에 있는 동일한 OTEL_* 구성을 삭제하거나 수정하세요.