プロファイラーは、Datadog トレースライブラリ内で送信されます。アプリケーションですでに APM を使用してトレースを収集している場合は、ライブラリのインストールをスキップして、プロファイラーの有効化に直接進むことができます。
要件
すべての言語におけるランタイムとトレーサーの最小バージョンと推奨バージョンの要約については、サポートされている言語とトレーサーのバージョンをお読みください。
- .NET Framework の対応オペレーティングシステム
- Windows 10
Windows Server バージョン 2012 以降 - .NET Core および .NET 5+ の対応オペレーティングシステム
- glibc 2.17 以上の Linux (例: CentOS 7 以上) と musl-based (Alpine)
Windows 10
Windows Server バージョン 2012 以降 - Serverless
- Azure App Service Windows and Linux - Web Apps only, Function Apps are not supported
- 対応する .NET ランタイム (64 ビットアプリケーション)
- .NET Framework 4.6.1+
.NET Core 2.1、3.1
.NET 5
.NET 6
.NET 7
.NET 8
- 対応言語
- C#、F#、Visual Basic など、.NET ランタイムをターゲットとするあらゆる言語。
以下のプロファイリング機能は、dd-trace-dotnet
ライブラリの以下の最小バージョンで利用可能です。
機能 | 必要な dd-trace-dotnet のバージョン | 必要な .NET Runtime のバージョン |
---|
Wall Time プロファイリング | 2.7.0+ | サポートされているすべてのランタイムバージョン。 |
CPU プロファイリング | 2.15.0+ | サポートされているすべてのランタイムバージョン。 |
例外プロファイリング | 2.31.0+ | サポートされているすべてのランタイムバージョン。 |
アロケーションプロファイリング | ベータ版、2.18.0+ | .NET 6+ |
ロックコンテンションプロファイリング | 2.49.0+ | .NET Framework beta (requires Datadog Agent 7.51+) and .NET 5+ |
ライブヒーププロファイリング | ベータ版、2.22.0+ | .NET 7+ |
Code Hotspots | 2.7.0+ | サポートされているすべてのランタイムバージョン。 |
Endpoint Profiling | 2.15.0+ | サポートされているすべてのランタイムバージョン。 |
沿革 | 2.30.0+ | サポートされているすべてのランタイムバージョン (ガベージコレクションの詳細のために必要な .NET 5+ を除く) 。 |
インストール
Ensure Datadog Agent v6+ is installed and running. Datadog recommends using Datadog Agent v7+. The profiler ships together with the tracing library (beginning with v2.8.0), so if you are already using APM to collect traces for your application, you can skip installing the library and go directly to Enabling the profiler.
そうでない場合は、お使いの OS に応じて、以下の手順でプロファイラーをインストールしてください。
**注**: Datadog 自動インスツルメンテーションは、.NET CLR Profiling API に依存します。この API に許可されるサブスクライバーは 1 つのみなので、アプリケーション環境で 1 つの APM ソリューションのみを実行してください。
Datadog .NET Profiler は、マシン上のすべてのサービスがインスツルメントできるようにマシン全体にインストールすることも、アプリケーションごとにインストールすることも可能で、開発者はアプリケーションの依存関係を通じてインスツルメンテーションを管理することができます。マシン全体のインストール手順を見るには、Windows または Linux タブをクリックします。アプリケーションごとのインストール手順を見るには、NuGet タブをクリックします。
.NET Profiler をマシン全体にインストールするには
お使いの OS とアーキテクチャに対応した最新の .NET Tracer パッケージをダウンロードします。
以下のコマンドのいずれかを実行して、パッケージをインストールし、適切な権限で .NET のログディレクトリ /var/log/datadog/dotnet
を作成します。
- Debian または Ubuntu
sudo dpkg -i ./datadog-dotnet-apm_<TRACER_VERSION>_amd64.deb && sudo /opt/datadog/createLogPath.sh
- CentOS 7+ または Fedora
sudo rpm -Uvh datadog-dotnet-apm<TRACER_VERSION>-1.x86_64.rpm && sudo /opt/datadog/createLogPath.sh
- Alpine などの musl ベースの分布
sudo tar -C /opt/datadog -xzf datadog-dotnet-apm<TRACER_VERSION>-musl.tar.gz && sudo sh /opt/datadog/createLogPath.sh
- その他の分布
sudo tar -C /opt/datadog -xzf datadog-dotnet-apm-<TRACER_VERSION>.tar.gz && sudo /opt/datadog/createLogPath.sh
.NET Profiler をマシン全体にインストールするには
.NET Monitoring MSI インストーラーを使って、最新版をインストールまたはアップグレードしてください。Continuous Profiler は 64-bit Windows をサポートしていますので、datadog-dotnet-apm-<VERSION>-x64.msi
のようなファイルが必要です。
インストーラーを管理者権限で実行します。
注: このインストールは、IIS で動作するアプリケーションをインスツルメントするものではありません。IIS で実行されるアプリケーションについては、Windows マシン全体のインストールプロセスに従ってください。
.NET Profiler をアプリケーション単位でインストールするには
Datadog.Trace.Bundle
NuGet パッケージをアプリケーションに追加します。
Note: Only Web Apps are supported. Functions are not supported.
.NET Profiler を Web アプリ単位でインストールするには
- Install the Azure App Service Datadog APM Extension for Windows or use the Linux setup for your webapp.
プロファイラーの有効化
注: Datadog では、マシンレベルまたはすべての IIS アプリケーションでプロファイラーを有効にすることを推奨していません。マシンレベルで有効にしている場合は、すべてのシステムアプリケーションでプロファイラーを有効にすることに関連するオーバーヘッドを削減するための情報として、
トラブルシューティングドキュメントをお読みください。
自動インスツルメンテーションをアプリケーションにアタッチするために、以下の必要な環境変数を設定します。
CORECLR_ENABLE_PROFILING=1
CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so
DD_DOTNET_TRACER_HOME=/opt/datadog
LD_PRELOAD=/opt/datadog/continuousprofiler/Datadog.Linux.ApiWrapper.x64.so
DD_PROFILING_ENABLED=1
DD_ENV=production
DD_VERSION=1.2.3
スタンドアロンアプリケーションの場合は、通常通り手動でアプリケーションを再起動します。
アプリケーションの起動 1〜2 分後、Datadog APM > Profiler ページにプロファイルが表示されます。
With Single Step Instrumentation, set the following required environment variables for automatic instrumentation to attach to your application:
LD_PRELOAD=/opt/datadog/apm/library/dotnet/continuousprofiler/Datadog.Linux.ApiWrapper.x64.so
DD_PROFILING_ENABLED=1
DD_ENV=production
DD_VERSION=1.2.3
スタンドアロンアプリケーションの場合は、通常通り手動でアプリケーションを再起動します。
アプリケーションの起動 1〜2 分後、Datadog APM > Profiler ページにプロファイルが表示されます。
プロファイラーを構成し、有効にするために必要な環境変数を設定します。
IIS アプリケーションのプロファイラーを有効にするには、レジストリの HKLM\System\CurrentControlSet\Services\WAS
と HKLM\System\CurrentControlSet\Services\W3SVC
ノードで環境変数 DD_PROFILING_ENABLED
を設定する必要があります。
v2.14.0 より、MSI を使用してトレーサーをインストールした場合、CORECLR_PROFILER
または COR_PROFILER
を設定する必要がありません。
レジストリエディターを使用:
レジストリエディターで、HKLM\System\CurrentControlSet\Services\WAS
と HKLM\System\CurrentControlSet\Services\W3SVC
ノード内の Environment
という複数文字列値を変更し、以下のように値を設定します。
.NET Core と .NET 5+ の場合:
CORECLR_ENABLE_PROFILING=1
CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
DD_PROFILING_ENABLED=1
DD_ENV=production
DD_VERSION=1.2.3
.NET Framework の場合:
COR_ENABLE_PROFILING=1
COR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
DD_PROFILING_ENABLED=1
DD_ENV=production
DD_VERSION=1.2.3
注: 環境変数は、すべての IIS アプリケーションに適用されます。IIS 10 以降、C:indexWindowsSystem32/inetsrv/config/applicationhost.config
ファイルに IIS アプリケーションごとの環境変数が設定できるようになりました。詳細は、Microsoft のドキュメントを参照してください。
管理者権限で以下のコマンドを実行し、IIS を完全に停止・起動します。
net stop /y was
net start w3svc
Note: Use stop
and start
commands. A reset or restart does not always work.
アプリケーションの起動 1〜2 分後、Datadog APM > Profiler ページにプロファイルが表示されます。
プロファイラーを構成し、有効にするために必要な環境変数を設定します。サービスのプロファイラーを有効にするには、サービスに関連付けられたレジストリキーに DD_PROFILING_ENABLED
環境変数を設定することが必要です。プロファイラーが単独で動作している場合 (トレーサーは非アクティブ)、オプションで DD_SERVICE
、DD_ENV
、DD_VERSION
環境変数を追加することができます。
v2.14.0 より、MSI を使用してトレーサーをインストールした場合、CORECLR_PROFILER
または COR_PROFILER
を設定する必要がありません。
レジストリエディターを使用:
レジストリエディターで、HKLM\System\CurrentControlSet\Services\MyService
キーに Environment
複数の文字列値を作成します。
.NET Core と .NET 5+ の場合:
CORECLR_ENABLE_PROFILING=1
CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
DD_PROFILING_ENABLED=1
DD_SERVICE=MyService
DD_ENV=production
DD_VERSION=1.2.3
.NET Framework の場合:
COR_ENABLE_PROFILING=1
COR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
DD_PROFILING_ENABLED=1
DD_SERVICE=MyService
DD_ENV=production
DD_VERSION=1.2.3
PowerShell スクリプトを使用:
.NET Core と .NET 5+ の場合:
[string[]] $v = @(
"CORECLR_ENABLE_PROFILING=1",
"CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}",
"DD_PROFILING_ENABLED=1",
"DD_SERVICE=MyService",
"DD_ENV=production",
"DD_VERSION=1.2.3"
)
Set-ItemProperty HKLM:SYSTEM\CurrentControlSet\Services\MyService -Name Environment -Value $v
.NET Framework の場合:
[string[]] $v = @(
"COR_ENABLE_PROFILING=1",
"COR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}",
"DD_PROFILING_ENABLED=1",
"DD_SERVICE=MyService",
"DD_ENV=production",
"DD_VERSION=1.2.3"
)
Set-ItemProperty HKLM:SYSTEM\CurrentControlSet\Services\MyService -Name Environment -Value $v
アプリケーションの起動 1〜2 分後、Datadog APM > Profiler ページにプロファイルが表示されます。
v2.14.0 より、MSI を使用してトレーサーをインストールした場合、CORECLR_PROFILER
または COR_PROFILER
を設定する必要がありません。
コンソール、ASP.NET (Core)、Windows Forms、WPF などの非サービスアプリケーションでプロファイラーを構成して有効にするために、必要な環境変数を設定します。スタンドアロンアプリケーションのプロファイラーを有効にするには、DD_PROFILING_ENABLED
環境変数を設定する必要があります。プロファイラーが単独で動作している場合 (トレーサーは無効)、オプションで環境変数 DD_SERVICE
、DD_ENV
、DD_VERSION
を設定することが可能です。推奨される方法は、これらを設定しアプリケーションを起動するバッチファイルを作成し、そのバッチファイルを使用してアプリケーションを実行することです。
.NET Core と .NET 5+ の場合:
SET CORECLR_ENABLE_PROFILING=1
SET CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
SET DD_PROFILING_ENABLED=1
SET DD_SERVICE=MyService
SET DD_ENV=production
SET DD_VERSION=1.2.3
REM start the application here
.NET Framework の場合:
SET COR_ENABLE_PROFILING=1
SET COR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
SET DD_PROFILING_ENABLED=1
SET DD_SERVICE=MyService
SET DD_ENV=production
SET DD_VERSION=1.2.3
REM start the application here
アプリケーションの起動 1〜2 分後、Datadog APM > Profiler ページにプロファイルが表示されます。
プロファイリングをアプリケーションにアタッチするために、以下の必要な環境変数を設定します。
CORECLR_ENABLE_PROFILING=1
CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
CORECLR_PROFILER_PATH=<System-dependent path>
DD_PROFILING_ENABLED=1
LD_PRELOAD=<System-dependent path>
DD_SERVICE=MyService
DD_ENV=production
DD_VERSION=1.2.3
DD_DOTNET_TRACER_HOME=<APP_DIRECTORY>/datadog
<APP_DIRECTORY>
のプレースホルダーの値は、アプリケーションの .dll
ファイルがあるディレクトリへのパスです。環境変数 CORECLR_PROFILER_PATH
の値は、アプリケーションが動作しているシステムに応じて変化します。
オペレーティングシステムとプロセスアーキテクチャ|CORECLR_PROFILER_PATH の値 | LD_PRELOAD の値 | |
---|
Alpine Linux x64 | <APP_DIRECTORY>/datadog/linux-musl-x64/Datadog.Trace.ClrProfiler.Native.so | <APP_DIRECTORY>/datadog/linux-musl-x64/Datadog.Linux.ApiWrapper.x64.so |
Linux x64 | <APP_DIRECTORY>/datadog/linux-x64/Datadog.Trace.ClrProfiler.Native.so | <APP_DIRECTORY>/datadog/linux-x64/Datadog.Linux.ApiWrapper.x64.so |
Linux ARM64 | <APP_DIRECTORY>/datadog/linux-arm64/Datadog.Trace.ClrProfiler.Native.so | <APP_DIRECTORY>/datadog/linux-arm64/Datadog.Linux.ApiWrapper.x64.so |
Windows x64 | <APP_DIRECTORY>\datadog\win-x64\Datadog.Trace.ClrProfiler.Native.dll | N/A |
Windows x86 | <APP_DIRECTORY>\datadog\win-x86\Datadog.Trace.ClrProfiler.Native.dll | N/A |
Linux 上で動作する Docker イメージの場合、createLogPath.sh
スクリプトを実行するように構成します。
RUN /<APP_DIRECTORY>/datadog/createLogPath.sh
Docker のサンプルは dd-trace-dotnet
リポジトリで公開されています。
スタンドアロンアプリケーションの場合は、手動でアプリケーションを再起動します。
- Follow these installation guidelines (Windows or Linux) to set
DD_PROFILING_ENABLED:true
to enable the profiler.
構成
プロファイラーを構成するには、以下の環境変数を使用します。これらの設定のほとんどは、トレーサーの構成にも適用されることに注意してください。これらの設定を変更した後は、アプリケーションを再起動します。
環境変数 | タイプ | 説明 |
---|
DD_ENV | 文字列 | 環境名、例えば production です。設定されていない場合は、 unspecified-environment となります。 |
DD_SERVICE | 文字列 | サービス名、例えば web-backend です。これが指定されていない場合、.NET Profiler はアプリケーション名 (プロセスエントリアセンブリまたはプロセス名) から自動的にサービス名を決定しようとします。 |
DD_VERSION | 文字列 | サービスのバージョン。設定されていない場合は、unspecified-version となります。 |
DD_TAGS | 文字列 | アップロードされたプロファイルに適用するタグ。<key>:<value> のように、コンマ区切り形式のリストである必要があります(例、layer:api,team:intake )。 |
DD_AGENT_HOST | 文字列 | プロファイルが送信されるホストを設定します (Agent を実行するホスト)。ホスト名または IP アドレスにできます。DD_TRACE_AGENT_URL が設定されている場合は無視されます。デフォルトは localhost です。 |
DD_TRACE_AGENT_PORT | 文字列 | プロファイルが送信されるポートを設定します (Agent が接続のためにリッスンしているポート)。DD_TRACE_AGENT_URL が設定されている場合は無視されます。デフォルトは 8126 です。 |
DD_TRACE_AGENT_URL | 文字列 | プロファイルが送信される URL エンドポイントを設定します。設定された場合、DD_AGENT_HOST と DD_TRACE_AGENT_PORT をオーバーライドします。デフォルトは http://<DD_AGENT_HOST>:<DD_TRACE_AGENT_PORT> です。 |
DD_TRACE_DEBUG | Boolean | デバッグログを有効または無効にします (トラブルシューティングの調査時に役立ちます)。有効な値は true または false です。デフォルトは false です。 |
DD_PROFILING_LOG_DIR | 文字列 | .NET Profiler のログを保存するディレクトリを設定します。デフォルトは %ProgramData%\Datadog .NET Tracer\logs\ です。(v2.24 以前は、デフォルトのディレクトリは %ProgramData%\Datadog-APM\logs\ でした) |
DD_PROFILING_ENABLED | Boolean | true に設定すると、.NET Profiler が有効になります。デフォルトは false です。 |
DD_PROFILING_WALLTIME_ENABLED | Boolean | false に設定すると、Wall time プロファイリングが無効になります。デフォルトは true です。 |
DD_PROFILING_CPU_ENABLED | Boolean | false に設定すると、CPU プロファイリングが無効になります。デフォルトは true です。 |
DD_PROFILING_EXCEPTION_ENABLED | Boolean | true に設定すると、Exceptions プロファイリングが有効になります (ベータ版)。デフォルトは false です。 |
DD_PROFILING_ALLOCATION_ENABLED | Boolean | true に設定すると、Allocations プロファイリングが有効になります (ベータ版)。デフォルトは false です。 |
DD_PROFILING_LOCK_ENABLED | Boolean | true に設定すると、Lock Contention プロファイリングが有効になります (ベータ版)。デフォルトは false です。 |
DD_PROFILING_HEAP_ENABLED | Boolean | true に設定すると、Live Heap プロファイリングが有効になります (ベータ版)。デフォルトは false です。 |
DD_PROFILING_GC_ENABLED | Boolean | false に設定すると、Timeline のユーザーインターフェイスで使用される Garbage Collection のプロファイリングを無効にします。デフォルトは true です。 |
その他の参考資料
プロファイラーの概要ガイドでは、パフォーマンスの問題があるサンプルサービスを例に、Continuous Profiler を使用して問題を理解し修正する方法を確認します。