.NET profiling¶
从 Datakit Version-1.12.0 开始支持使用 dd-trace-dotnet
作为 .NET
平台的应用性能监测工具。
前置条件¶
.NET Framework 4.5.2+
/.NET Core 2.1, 3.1, 5, 6, 7
Linux with glibc 2.17+
/Windows 10+
/Windows Server 2012+
安装 dd-trace-dotnet
¶
从 https://github.com/DataDog/dd-trace-dotnet/releases
页面下载 datadog-dotnet-apm-<VERSION>-x64.msi
文件,如 datadog-dotnet-apm-2.34.0-x64.msi
,然后使用管理员权限安装。
Note
当前最高支持到 dd-trace-dotnet v2.34.0
版本,更高的版本没有经过系统性测试,兼容性未知,如您在使用中遇到任何问题,可与我们联系。
开启 Profiling¶
Linux 平台¶
进入项目编译或发布后的输出目录,会存在一个 datadog
目录,该目录就是存放 dd-trace-dotnet
编译后生成的目标文件,不同的子目录适用不同的平台。
目录说明
.NET Core 编译(build)后的输出目录通常位于项目根目录下的 ./bin/<Configuration>/<Framework>,可以用参数指定 -o|--output <OUTPUT_DIR>
,在本文档中假设为 ./bin/Release/net7.0。
.NET Core 发布(publish)后的输出目录默认位于项目根目录下的 ./bin/<Configuration>/<Framework>/publish,同样可以用参数指定 -o|--output <OUTPUT_DIR>
,在本文档中假设为 ./bin/Release/net7.0/publish。
$ ls -l bin/Release/net7.0/datadog/
total 8
-rwxr--r-- 1 zy staff 101 7 3 21:06 createLogPath.sh
drwxr-xr-x 8 zy staff 256 7 27 16:16 linux-arm64
drwxr-xr-x 8 zy staff 256 7 27 16:16 linux-musl-x64
drwxr-xr-x 8 zy staff 256 7 27 16:16 linux-x64
drwxr-xr-x 8 zy staff 256 7 27 16:16 net461
drwxr-xr-x 7 zy staff 224 7 27 16:16 net6.0
drwxr-xr-x 7 zy staff 224 7 27 16:16 netcoreapp3.1
drwxr-xr-x 12 zy staff 384 7 27 16:16 netstandard2.0
drwxr-xr-x 6 zy staff 192 7 27 16:16 osx
drwxr-xr-x 7 zy staff 224 7 27 16:16 win-x64
drwxr-xr-x 7 zy staff 224 7 27 16:16 win-x86
设置 DDTRACE_HOME
环境变量:
检查环境变量设置是否正确:
设置环境变量并启动项目:
DD_DOTNET_TRACER_HOME="$DDTRACE_HOME" \
CORECLR_ENABLE_PROFILING=1 \
CORECLR_PROFILER="{846F5F1C-F9AE-4B07-969E-05C26BC060D8}" \
CORECLR_PROFILER_PATH="$DDTRACE_HOME/linux-x64/Datadog.Trace.ClrProfiler.Native.so" \
LD_PRELOAD="$DDTRACE_HOME/linux-x64/Datadog.Linux.ApiWrapper.x64.so" \
DD_PROFILING_ENABLED=1 \
DD_PROFILING_WALLTIME_ENABLED=1 \
DD_PROFILING_CPU_ENABLED=1 \
DD_PROFILING_EXCEPTION_ENABLED=1 \
DD_PROFILING_ALLOCATION_ENABLED=1 \
DD_PROFILING_LOCK_ENABLED=1 \
DD_PROFILING_HEAP_ENABLED=1 \
DD_PROFILING_GC_ENABLED=1 \
DD_SERVICE=dotnet-profiling-demo DD_ENV=testing DD_VERSION=1.2.3 \
DD_AGENT_HOST=127.0.0.1 DD_TRACE_AGENT_PORT=9529 \
dotnet bin/Release/net7.0/<your-project-name>.dll
Note
如果你当前的架构是 Linux arm64
,则需要修改设置 CORECLR_PROFILER_PATH="$DDTRACE_HOME/linux-arm64/Datadog.Trace.ClrProfiler.Native.so"
和
LD_PRELOAD="$DDTRACE_HOME/linux-arm64/Datadog.Linux.ApiWrapper.x64.so"
稍等几分钟后便可以在 观测云控制台 查看相关数据。
Windows IIS¶
-
在服务器上安装 datadog-dotnet-apm-2.34.0-x64.msi 组件。
-
编辑部署在
IIS
上的项目根路径下的web.config
配置文件,在<aspNetCore>...</aspNetCore>
标签内添加<environmentVariables></environmentVariables>
标签(如已存在则忽略此步),加入如下环境变量:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\dotnet-profiling-demo.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess">
<environmentVariables>
<!-- 此处添加以下环境变量,其中 DD_ENV DD_SERVICE DD_VERSION 值根据你的实际情况调整 -->
<!-- DD_AGENT_HOST 和 DD_TRACE_AGENT_PORT 分别为 Datakit 监听的地址和端口 -->
<environmentVariable name="CORECLR_ENABLE_PROFILING" value="1" />
<environmentVariable name="CORECLR_PROFILER" value="{846F5F1C-F9AE-4B07-969E-05C26BC060D8}" />
<environmentVariable name="DD_PROFILING_ENABLED" value="1" />
<environmentVariable name="DD_PROFILING_CPU_ENABLED" value="1" />
<environmentVariable name="DD_PROFILING_WALLTIME_ENABLED" value="1" />
<environmentVariable name="DD_PROFILING_ALLOCATION_ENABLED" value="1" />
<environmentVariable name="DD_PROFILING_HEAP_ENABLED" value="1" />
<environmentVariable name="DD_PROFILING_EXCEPTION_ENABLED" value="1" />
<environmentVariable name="DD_PROFILING_LOCK_ENABLED" value="1" />
<environmentVariable name="DD_PROFILING_GC_ENABLED" value="1" />
<environmentVariable name="DD_ENV" value="production" />
<environmentVariable name="DD_VERSION" value="1.2.3" />
<environmentVariable name="DD_SERVICE" value="my-dotnet-core-app" />
<environmentVariable name="DD_AGENT_HOST" value="127.0.0.1" />
<environmentVariable name="DD_TRACE_AGENT_PORT" value="9529" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
- 重启
IIS
服务器并访问你的项目。
稍等几分钟后便可以在 观测云控制台 查看相关数据。