プロファイラーは、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 以降
サーバーレス
Azure App Services - 公開ベータ版 (Web アプリのみ、関数はサポートされていません)
対応する .NET ランタイム (64 ビットアプリケーション)
.NET Framework 4.6.1+
.NET Core 2.1、3.1
.NET 5
.NET 6
.NET 7
対応言語
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.31.0+.NET 5+
ライブヒーププロファイリングベータ版、2.22.0+.NET 7+
Code Hotspots2.7.0+サポートされているすべてのランタイムバージョン。
Endpoint Profiling2.15.0+サポートされているすべてのランタイムバージョン。
沿革2.30.0+サポートされているすべてのランタイムバージョン (ガベージコレクションの詳細のために必要な .NET 5+ を除く) 。

インストール

すでに Datadog を使用している場合は、Agent をバージョン 7.20.2+ または 6.20.2+ にアップグレードしてください。プロファイラーにはトレーシングライブラリ (v2.8.0 以降) が付属していますので、既にアプリケーションで APM を使用してトレースを収集している場合は、ライブラリをインストールせずに直接プロファイラーを有効にするに進んでください。

そうでない場合は、お使いの 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 パッケージをアプリケーションに追加します。
注: Web アプリのみ対応しています。関数はサポートされていません。

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

  1. Azure App Service Datadog APM Extension を Web アプリにインストールします。

プロファイラーの有効化

注: 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. プロファイラーを構成し、有効にするために必要な環境変数を設定します。 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. 以下のインストールガイドラインに従って、DD_PROFILING_ENABLED:true を設定し、プロファイラーを有効にします

コンフィギュレーション

プロファイラーを構成するには、以下の環境変数を使用します。これらの設定のほとんどは、トレーサーの構成にも適用されることに注意してください。これらの設定を変更した後は、アプリケーションを再起動します。

環境変数タイプ説明
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 を使用して問題を理解し修正する方法を確認します。