.NET プロファイラーの有効化

プロファイラーは、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 以降
サーバーレス
Continuous Profiler は、AWS Lambda などのサーバーレスプラットフォームには対応していません。
対応する .NET ランタイム (64 ビットアプリケーション)
.NET Framework 4.6.1+
.NET Core 2.1、3.1
.NET 5
.NET 6
対応言語
C#、F#、Visual Basic など、.NET ランタイムをターゲットとするあらゆる言語。

APM に Datadog Agent を構成する

**注**: Datadog 自動インスツルメンテーションは、.NET CLR Profiling API に依存します。この API に許可されるサブスクライバーは 1 つのみです(たとえば Datadog の .NET トレーサーでプロファイラーを有効にした状態)。可視性を最大限に向上するため、アプリケーション環境で 1 つの APM ソリューションのみを実行してください。

すでに Datadog を使用している場合は、Agent をバージョン 7.20.2+ または 6.20.2+ にアップグレードしてください。プロファイラーはトレーサーと一緒に出荷されますので、OS に応じて以下の手順でインストーラーをインストールしてください。

注: プロファイラーは、バージョン 2.8.0 以降のトレーサーに同梱されています。もし、古いバージョンのトレーサーを使用している場合は、まず、アップグレードする必要があります。

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 パッケージをアプリケーションに追加します。

注: 次のステップでは、プロファイラーを有効にするための環境変数を設定します。Datadog では、これらの環境変数をマシンレベルで設定することは推奨していません。マシンレベルで設定した場合、マシン上で実行されているすべての .NET アプリケーションがプロファイリングされ、マシンの CPU とメモリに大きなオーバーヘッドが発生します。
  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 を設定する必要があります。

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

    レジストリエディターで、HKLM\System\CurrentControlSet\Services\WASHKLM\System\CurrentControlSet\Services\W3SVC ノード内の Environment という複数文字列値を変更し、以下のように値を設定します。

    .NET Core と .NET 5+ の場合:

    CORECLR_ENABLE_PROFILING=1
    DD_PROFILING_ENABLED=1
    DD_ENV=production
    DD_VERSION=1.2.3
    
    レジストリエディターを使用して、IIS の .NET Core アプリケーションの環境変数を作成する

    .NET Framework の場合:

    COR_ENABLE_PROFILING=1
    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 環境変数を追加することができます。

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

    レジストリエディターで、HKLM\System\CurrentControlSet\Services\MyService キーに Environment 複数の文字列値を作成します。

    .NET Core と .NET 5+ の場合:

    CORECLR_ENABLE_PROFILING=1
    DD_PROFILING_ENABLED=1
    DD_SERVICE=MyService
    DD_ENV=production
    DD_VERSION=1.2.3
    
    レジストリエディターを使用して Windows サービスに環境変数を作成

    .NET Framework の場合:

    COR_ENABLE_PROFILING=1
    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",
        "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",
        "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 ページにプロファイルが表示されます。

  1. コンソール、ASP.NET (Core)、Windows Forms、WPF などの非サービスアプリケーションでプロファイラーを構成して有効にするために、必要な環境変数を設定します。スタンドアロンアプリケーションのプロファイラーを有効にするには、DD_PROFILING_ENABLED 環境変数を設定する必要があります。プロファイラーが単独で動作している場合 (トレーサーは無効)、オプションで環境変数 DD_SERVICEDD_ENVDD_VERSION を設定することが可能です。推奨される方法は、これらを設定しアプリケーションを起動するバッチファイルを作成し、そのバッチファイルを使用してアプリケーションを実行することです。

    .NET Core と .NET 5+ の場合:

    SET CORECLR_ENABLE_PROFILING=1
    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 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=<APP_DIRECTORY>/datadog/continuousprofiler/Datadog.Linux.ApiWrapper.x64.so
    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 の値
    Alpine Linux x64<APP_DIRECTORY>/datadog/linux-musl-x64/Datadog.Trace.ClrProfiler.Native.so
    Linux x64<APP_DIRECTORY>/datadog/linux-x64/Datadog.Trace.ClrProfiler.Native.so
    Linux ARM64<APP_DIRECTORY>/datadog/linux-arm64/Datadog.Trace.ClrProfiler.Native.so
    Windows x64<APP_DIRECTORY>\datadog\win-x64\Datadog.Trace.ClrProfiler.Native.dll
    Windows x86<APP_DIRECTORY>\datadog\win-x86\Datadog.Trace.ClrProfiler.Native.dll
  2. Linux 上で動作する Docker イメージの場合、createLogPath.sh スクリプトを実行するように構成します。

    RUN /<APP_DIRECTORY>/datadog/createLogPath.sh
    

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

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

コンフィギュレーション

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

環境変数タイプ説明
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-APM\logs\ です。
DD_PROFILING_ENABLEDBooleantrue に設定すると、.NET Profiler が有効になります。デフォルトは false です。
DD_PROFILING_CPU_ENABLEDBooleanfalse に設定すると、CPU プロファイリングが無効になります。デフォルトは true です。
DD_PROFILING_EXCEPTION_ENABLEDBooleantrue に設定すると、Exceptions プロファイリングが有効になります。デフォルトは false です。
: 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 を使用して問題を理解し修正する方法を確認します。