跳转至

OpenTelemetry .NET

在使用 OTEL 发送 Trace 到 DataKit 之前,请先确定您已经配置好了采集器

版本支持

.NET 版本 相关 Instrumentation release Release notes / 官方兼容性说明 可推断支持
.NET 10 v1.13.0 “Support for .NET 10” 明确加入 .NET 10 支持 (GitHub)
.NET 9 v1.13.0 “Fixed rule engine check for .NET 9 to reflect longer support for STS channel” .NET 9 已在 rule engine 支持判断中 (GitHub)
.NET 8 v1.2.0 “Add support for .NET 8” 明确加入 .NET 8 支持 (GitHub)
.NET 7 v0.6.0-beta.2、v1.0.1、v1.4.0 v0.6.0-beta.2: “Updated the shared store to correctly support framework roll-forward from net6.0 to net7.0
v1.0.1: “Fixed Rule checking System.Diagnostics.DiagnosticSource version for net7.0 failing on correct configuration”
v1.4.0: “Fix ASP.NET Core traces instrumentation for .NET7”
有多处 .NET 7 相关适配/修复记录;可判断曾支持 .NET 7 场景,且 v1.4.0 明确修复 ASP.NET Core traces instrumentation for .NET7 (GitHub) (GitHub)
.NET Framework 4.6.2+ 通用兼容性说明 “The minimal supported version of .NET Framework is 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 后才会读取新的全局变量:

Restart-WebAppPool -Name "yishaweb2"

或者:

iisreset

IIS 直接配置

powershell notepad C:\Windows\System32\inetsrv\config\applicationHost.config

在对应的网站节点下添加,这种方式适合对部分站点采集链路配置。

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_* 配置。

文档评价

文档内容是否对您有帮助?