プロファイラーは、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
注: コンテナの場合、少なくとも 1 つのコアが必要です。詳しくはトラブルシューティングのドキュメントをお読みください。
対応言語
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 Hotspots2.7.0+サポートされているすべてのランタイムバージョン。
Endpoint Profiling2.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 をマシン全体にインストールするには

  1. お使いの OS とアーキテクチャに対応した最新の .NET Tracer パッケージをダウンロードします。

  2. 以下のコマンドのいずれかを実行して、パッケージをインストールし、適切な権限で .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 をマシン全体にインストールするには

  1. .NET Monitoring MSI インストーラーを使って、最新版をインストールまたはアップグレードしてください。Continuous Profiler は 64-bit Windows をサポートしていますので、datadog-dotnet-apm-<VERSION>-x64.msi のようなファイルが必要です。

  2. インストーラーを管理者権限で実行します。

注: このインストールは、IIS で動作するアプリケーションをインスツルメントするものではありません。IIS で実行されるアプリケーションについては、Windows マシン全体のインストールプロセスに従ってください。

.NET Profiler をアプリケーション単位でインストールするには

  1. Datadog.Trace.Bundle NuGet パッケージをアプリケーションに追加します。
Note: Only Web Apps are supported. Functions are not supported.

.NET Profiler を Web アプリ単位でインストールするには

  1. Install the Azure App Service Datadog APM Extension for Windows or use the Linux setup for your webapp.

プロファイラーの有効化

: Datadog では、マシンレベルまたはすべての IIS アプリケーションでプロファイラーを有効にすることを推奨していません。マシンレベルで有効にしている場合は、すべてのシステムアプリケーションでプロファイラーを有効にすることに関連するオーバーヘッドを削減するための情報として、トラブルシューティングドキュメントをお読みください。
  1. 自動インスツルメンテーションをアプリケーションにアタッチするために、以下の必要な環境変数を設定します。

    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
    
  2. スタンドアロンアプリケーションの場合は、通常通り手動でアプリケーションを再起動します。

  3. アプリケーションの起動 1〜2 分後、Datadog APM > Profiler ページにプロファイルが表示されます。

  1. 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
    
  2. スタンドアロンアプリケーションの場合は、通常通り手動でアプリケーションを再起動します。

  3. アプリケーションの起動 1〜2 分後、Datadog APM > Profiler ページにプロファイルが表示されます。

  1. プロファイラーを構成し、有効にするために必要な環境変数を設定します。 IIS アプリケーションのプロファイラーを有効にするには、レジストリの HKLM\System\CurrentControlSet\Services\WASHKLM\System\CurrentControlSet\Services\W3SVC ノードで環境変数 DD_PROFILING_ENABLED を設定する必要があります。

    v2.14.0 より、MSI を使用してトレーサーをインストールした場合、CORECLR_PROFILER または COR_PROFILER を設定する必要がありません。

    レジストリエディターを使用:

    レジストリエディターで、HKLM\System\CurrentControlSet\Services\WASHKLM\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
    
    レジストリエディターを使用して、IIS の .NET Core アプリケーションの環境変数を作成する

    .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 の .NET Framework アプリケーションの環境変数を作成する

    : 環境変数は、すべての IIS アプリケーションに適用されます。IIS 10 以降、C:indexWindowsSystem32/inetsrv/config/applicationhost.config ファイルに IIS アプリケーションごとの環境変数が設定できるようになりました。詳細は、Microsoft のドキュメントを参照してください。

  2. 管理者権限で以下のコマンドを実行し、IIS を完全に停止・起動します。

    net stop /y was
    net start w3svc
    
    Note: Use stop and start commands. A reset or restart does not always work.
  3. アプリケーションの起動 1〜2 分後、Datadog APM > Profiler ページにプロファイルが表示されます。

  1. プロファイラーを構成し、有効にするために必要な環境変数を設定します。サービスのプロファイラーを有効にするには、サービスに関連付けられたレジストリキーに DD_PROFILING_ENABLED 環境変数を設定することが必要です。プロファイラーが単独で動作している場合 (トレーサーは非アクティブ)、オプションで DD_SERVICEDD_ENVDD_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
    
    レジストリエディターを使用して Windows サービスに環境変数を作成

    .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
    
    レジストリエディターを使用して Windows サービスに環境変数を作成

    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
    
  2. アプリケーションの起動 1〜2 分後、Datadog APM > Profiler ページにプロファイルが表示されます。

v2.14.0 より、MSI を使用してトレーサーをインストールした場合、CORECLR_PROFILER または COR_PROFILER を設定する必要がありません。
  1. コンソール、ASP.NET (Core)、Windows Forms、WPF などの非サービスアプリケーションでプロファイラーを構成して有効にするために、必要な環境変数を設定します。スタンドアロンアプリケーションのプロファイラーを有効にするには、DD_PROFILING_ENABLED 環境変数を設定する必要があります。プロファイラーが単独で動作している場合 (トレーサーは無効)、オプションで環境変数 DD_SERVICEDD_ENVDD_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
    
  2. アプリケーションの起動 1〜2 分後、Datadog APM > Profiler ページにプロファイルが表示されます。

  1. プロファイリングをアプリケーションにアタッチするために、以下の必要な環境変数を設定します。

    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.dllN/A
    Windows x86<APP_DIRECTORY>\datadog\win-x86\Datadog.Trace.ClrProfiler.Native.dllN/A
  2. Linux 上で動作する Docker イメージの場合、createLogPath.sh スクリプトを実行するように構成します。

    RUN /<APP_DIRECTORY>/datadog/createLogPath.sh
    

    Docker のサンプルは dd-trace-dotnet リポジトリで公開されています。

  3. スタンドアロンアプリケーションの場合は、手動でアプリケーションを再起動します。

  1. 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_HOSTDD_TRACE_AGENT_PORT をオーバーライドします。デフォルトは http://<DD_AGENT_HOST>:<DD_TRACE_AGENT_PORT> です。
DD_TRACE_DEBUGBooleanデバッグログを有効または無効にします (トラブルシューティングの調査時に役立ちます)。有効な値は true または false です。デフォルトは false です。
DD_PROFILING_LOG_DIR文字列.NET Profiler のログを保存するディレクトリを設定します。デフォルトは %ProgramData%\Datadog .NET Tracer\logs\ です。(v2.24 以前は、デフォルトのディレクトリは %ProgramData%\Datadog-APM\logs\ でした)
DD_PROFILING_ENABLEDBooleantrue に設定すると、.NET Profiler が有効になります。デフォルトは false です。
DD_PROFILING_WALLTIME_ENABLEDBooleanfalse に設定すると、Wall time プロファイリングが無効になります。デフォルトは true です。
DD_PROFILING_CPU_ENABLEDBooleanfalse に設定すると、CPU プロファイリングが無効になります。デフォルトは true です。
DD_PROFILING_EXCEPTION_ENABLEDBooleantrue に設定すると、Exceptions プロファイリングが有効になります (ベータ版)。デフォルトは false です。
DD_PROFILING_ALLOCATION_ENABLEDBooleantrue に設定すると、Allocations プロファイリングが有効になります (ベータ版)。デフォルトは false です。
DD_PROFILING_LOCK_ENABLEDBooleantrue に設定すると、Lock Contention プロファイリングが有効になります (ベータ版)。デフォルトは false です。
DD_PROFILING_HEAP_ENABLEDBooleantrue に設定すると、Live Heap プロファイリングが有効になります (ベータ版)。デフォルトは false です。
DD_PROFILING_GC_ENABLEDBooleanfalse に設定すると、Timeline のユーザーインターフェイスで使用される Garbage Collection のプロファイリングを無効にします。デフォルトは true です。
: IIS アプリケーションでは、上記の Windows Service タブのように、レジストリ(HKLM\System\CurrentControlSet\Services\WAS および HKLM\System\CurrentControlSet\Services\W3SVC ノード) で環境変数の設定を行う必要があります。この環境変数は、すべての IIS アプリケーションに適用されます。 IIS 10 以降では、C:\Windows\System32\inetsrv\config\applicationhost.config ファイルで、IIS アプリケーションごとの環境変数を設定できます。詳細は、Microsoft のドキュメントを参照してください。

その他の参考資料

プロファイラーの概要ガイドでは、パフォーマンスの問題があるサンプルサービスを例に、Continuous Profiler を使用して問題を理解し修正する方法を確認します。