互換性要件

サポートされている .NET Core のランタイム

.NET Tracer は、.NET Core 3.1、.NET 5、.NET 6、.NET 7、.NET 8、.NET 9、.NET 10 でのインスツルメンテーションをサポートします。

Datadog の .NET Core ライブラリとプロセッサータアーキテクチャのサポート一覧 (レガシーバージョンとメンテナンスバージョンを含む) については、互換性要件 を参照してください。

インストールと利用開始

AWS Lambda または Azure Functions などの Serverless 環境で Datadog APM を設定するには、Serverless を参照してください。
注: Datadog 自動インスツルメンテーションは、.NET CLR Profiling API に依存します。この API に許可されるサブスクライバーは 1 つのみです (たとえば Datadog APM)。可視性を最大限に向上するため、アプリケーション環境で 1 つの APM ソリューションのみを実行してください。
トリミングされたアプリをインスツルメンテーションするには、プロジェクトで Datadog.Trace.Trimming NuGet パッケージを参照してください。

インストール

作業を始める前に、Agent のインストールと構成 が済んでいることを確認してください。

  1. Install the SDK.
  2. Enable the SDK for your service.
  3. View your live data.

SDK のインストール

Datadog Agent をインストールして構成した後、次の手順として、アプリケーションに SDK を直接追加し、そのアプリケーションをインスツルメントします。互換性情報 の詳細を確認してください。

Datadog .NET Tracer は、マシン上のすべてのサービスがインスツルメントされるようにマシン全体にインストールすることも、アプリケーションごとにインストールすることも可能で、開発者はアプリケーションの依存関係を通じてインスツルメンテーションを管理することができます。マシン全体のインストール手順を見るには、Windows または Linux タブをクリックします。アプリケーションごとのインストール手順を見るには、NuGet タブをクリックします。

.NET Tracer をマシン全体にインストールするには

  1. .NET トレーサー MSI インストーラー をダウンロードします。64 ビット Windows を使用している場合は、x64 MSI インストーラーを使用します。これにより、64 ビットおよび 32 ビットアプリケーションの両方をインスツルメントできます。32 ビット Windows を使用している場合は、x86 インストーラーのみを選択します。弊社は 32 ビットオペレーティングシステムをサポートしていないため、v3.0.0 以降は x64 インストーラーのみが提供されます。

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

PowerShell で次を実行することで、MSI セットアップをスクリプト化することもできます: Start-Process -Wait msiexec -ArgumentList '/qn /i datadog-apm.msi'

.NET Tracer をマシン全体にインストールするには

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

  2. 以下のコマンドのいずれかを実行して、パッケージをインストールし、適切な権限で .NET トレーサーのログディレクトリ /var/log/datadog/dotnet を作成します。

    Debian または Ubuntu
    sudo dpkg -i ./datadog-dotnet-apm_<TRACER_VERSION>_amd64.deb && /opt/datadog/createLogPath.sh
    CentOS または Fedora
    sudo rpm -Uvh datadog-dotnet-apm<TRACER_VERSION>-1.x86_64.rpm && /opt/datadog/createLogPath.sh
    Alpine などの musl ベースの分布
    sudo tar -C /opt/datadog -xzf datadog-dotnet-apm-<TRACER_VERSION>-musl.tar.gz && sh /opt/datadog/createLogPath.sh
    その他の分布
    sudo tar -C /opt/datadog -xzf datadog-dotnet-apm-<TRACER_VERSION>.tar.gz && /opt/datadog/createLogPath.sh

Chiseled コンテナ

chiseled または distroless の Docker イメージ (シェルなし) に .NET トレーサーをインストールするには、以下の Dockerfile コマンドを使用します。

  • SDK ファイルをコンテナに配置するには ADD を使用します。
  • 空のフォルダーをソースとして使用してログパスを作成するには COPY --chown=$APP_UID を使用します。

たとえば Dockerfile で:

ADD datadog-dotnet-apm-<TRACER_VERSION>.tar.gz /opt/datadog/
COPY --chown=$APP_UID --from=<OTHER_STAGE> /empty/ /var/log/datadog/dotnet/
注: このインストールは、IIS で動作するアプリケーションをインスツルメントするものではありません。IIS で実行されるアプリケーションについては、Windows マシン全体のインストールプロセスに従ってください。

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

  1. Datadog.Trace.Bundle NuGet パッケージ をアプリケーションに追加します。

サービスの SDK を有効にする

サービスの .NET Tracer を有効にするには、必要な環境変数を設定し、アプリケーションを再起動します。

環境変数の設定方法の違いについては、Configuring process environment variables を参照してください。

Internet Information Services (IIS)

  1. .NET トレーサー MSI インストーラーは、必要な環境変数をすべて追加します。構成する必要のある環境変数はありません。

    注: アプリケーションプールの .NET CLR バージョンNo Managed Code に設定する必要があります。これは Microsoft によって推奨されています。
  2. IIS でホストされるアプリケーションを自動でインスツルメントするには、管理者として次のコマンドを実行して IIS を完全に停止してから起動します。

    net stop /y was
    net start w3svc
    # Also, start any other services that were stopped when WAS was shut down.
    
    注: SDK を有効にするために、必ず上記のコマンドを使用して IIS を完全に停止してから再起動してください。IIS Manager GUI アプリケーションまたは iisreset.exeの使用は避けてください。

IIS にないサービス

  1. 自動インスツルメンテーションをアプリケーションにアタッチするために、以下の必要な環境変数を設定します。

    CORECLR_ENABLE_PROFILING=1
    
  2. スタンドアロンアプリケーションや Windows サービスの場合は、手動でアプリケーションを再起動します。

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

パッケージの Readme に書かれている手順に従ってください。dd-trace-dotnet リポジトリ でも公開されています。 Docker のサンプルも リポジトリ で公開されています。

ライブデータの表示

サービスの .NET Tracer を有効にした後:

  1. サービスを再起動します。

  2. アプリケーションロードを作成します。

  3. Datadog で APM > APM トレース の順に移動します。

構成

必要に応じて、Unified Service Tagging の設定など、アプリケーションパフォーマンスのテレメトリデータを送信するための SDK を構成します。詳細については、ライブラリの構成 を参照してください。

カスタムインスツルメンテーション

カスタムインスツルメンテーションは、自動インスツルメンテーションによって異なり、メソッドによっては追加の手順が含まれます。

注: v3.0.0 以降、カスタムインスツルメンテーションを使用するには、自動インスツルメンテーションも使用する必要があります。自動インスツルメンテーションとカスタムインスツルメンテーションのパッケージバージョン (例: MSI や NuGet) の同期を維持し、パッケージのメジャーバージョンを混合しないようにする必要があります。

.NET アプリケーションでカスタムインスツルメンテーションを使用するには

  1. 自動インスツルメンテーションを使用してアプリケーションをインスツルメントします。
  2. Datadog.Trace NuGet パッケージ をアプリケーションに追加します。
  3. アプリケーションコードで、Datadog.Trace.Tracer.Instance プロパティを介してグローバルトレーサーにアクセスし、新しいスパンを作成します。
注: v3.0.0 以降、カスタムインスツルメンテーションを使用するには、自動インスツルメンテーションも使用する必要があります。自動インスツルメンテーションとカスタムインスツルメンテーションのパッケージバージョン (例: MSI や NuGet) の同期を維持し、パッケージのメジャーバージョンを混合しないようにする必要があります。

.NET アプリケーションでカスタムインスツルメンテーションを使用するには

  1. 自動インスツルメンテーションを使用してアプリケーションをインスツルメントします。
  2. Datadog.Trace NuGet パッケージ をアプリケーションに追加します。
  3. アプリケーションコードで、Datadog.Trace.Tracer.Instance プロパティを介してグローバルトレーサーにアクセスし、新しいスパンを作成します。

.NET アプリケーションでカスタムインスツルメンテーションを使用するには

  1. アプリケーションコードで、Datadog.Trace.Tracer.Instance プロパティを介してグローバルトレーサーにアクセスし、新しいスパンを作成します。

カスタムインスツルメンテーションのスパンやタグの追加について詳しくは、.NET カスタムインスツルメンテーションのドキュメント を参照してください。

プロセス環境変数の構成

サービスに自動インスツルメンテーションをアタッチするには、アプリケーションを起動する前に、必要な環境変数を設定する必要があります。.NET Tracer のインストール方法に応じて設定する環境変数を特定するために、Enable the SDK for your service のセクションを参照し、以下の例に従って、インスツルメントされたサービスの環境に基づいて環境変数を正しく設定します。

Windows

注: .NET ランタイムは .NET ライブラリをこれらの環境変数が設定時に開始したあらゆる .NET プロセスにロードしようとします。このため、インスツルメンテーションをインスツルメントされる必要があるアプリケーションのみに制限してください。ホストのすべての .NET プロセスがインスツルメントされることになるため、これらの環境変数をグローバルに設定しないでください。

Windows サービス

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

CORECLR_ENABLE_PROFILING=1
レジストリエディターを使用して Windows サービスの環境変数を作成する
Set-ItemProperty HKLM:SYSTEM\CurrentControlSet\Services\<SERVICE NAME> -Name Environment -Value 'CORECLR_ENABLE_PROFILING=1'

IIS

MSI をインストールした後、IIS サイトを自動的にインスツルメンテーションするための追加構成は必要ありません。すべての IIS サイトに継承される追加の環境変数を設定するには、次の手順を実行します。

  1. レジストリエディターを開き、HKLM\System\CurrentControlSet\Services\WAS キーにある Environment という複数文字列の値を探し、1 行に 1 つずつ環境変数を追加します。たとえば、ログの挿入とランタイムメトリクスを追加するには、値データに以下の行を追加します。
    DD_LOGS_INJECTION=true
    DD_RUNTIME_METRICS_ENABLED=true
    
  2. 以下のコマンドを実行し、IIS を再起動します。
    net stop /y was
    net start w3svc
    # Also, start any other services that were stopped when WAS was shut down.
    
レジストリエディターを使用してすべての IIS サイトの環境変数を作成する

コンソールアプリケーション

コンソールアプリケーションを自動的にインスツルメントするには、アプリケーションを起動する前に、バッチファイルから環境変数を設定します。

rem Set required environment variables
SET CORECLR_ENABLE_PROFILING=1

rem (Optional) Set additional Datadog environment variables, for example:
SET DD_LOGS_INJECTION=true
SET DD_RUNTIME_METRICS_ENABLED=true

rem Start application
dotnet.exe example.dll

Linux

Bash スクリプト

アプリケーションを起動する前に、bash ファイルから必要な環境変数を設定するには

# Set required environment variables
export CORECLR_ENABLE_PROFILING=1
export CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
export CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so
export DD_DOTNET_TRACER_HOME=/opt/datadog

# (Optional) Set additional Datadog environment variables, for example:
export DD_LOGS_INJECTION=true
export DD_RUNTIME_METRICS_ENABLED=true

# Start your application
dotnet example.dll
Alpine Linux を使用している場合は、 CORECLR_PROFILER_PATH 環境変数を musl ベースのディストリビューションのパスに設定します。linux-musl-x64/.

Linux Docker コンテナ

Linux Docker コンテナに必要な環境変数を設定するには

# Set required environment variables
ENV CORECLR_ENABLE_PROFILING=1
ENV CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
ENV CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so
ENV DD_DOTNET_TRACER_HOME=/opt/datadog

# (Optional) Set additional Datadog environment variables, for example:
ENV DD_LOGS_INJECTION=true
ENV DD_RUNTIME_METRICS_ENABLED=true

# Start your application
CMD ["dotnet", "example.dll"]

systemctl (サービスごと)

systemctl を使用して、サービスとして .NET アプリケーションを実行する場合、特定のサービスに必要な環境変数がロードされるよう追加することができます。

  1. 以下を含む、environment.env というファイルを作成します。

    # Set required environment variables
    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
    
    # (Optional) Set additional Datadog environment variables, for example:
    DD_LOGS_INJECTION=true
    DD_RUNTIME_METRICS_ENABLED=true
    
  2. サービスのコンフィギュレーションファイルで、サービスブロックの EnvironmentFile としてこれを参照します。

    [Service]
    EnvironmentFile=/path/to/environment.env
    ExecStart=<command used to start the application>
    
  3. .NET サービスを再起動して、環境変数の設定を有効にします。

systemctl(すべてのサービス)

注: .NET ランタイムは .NET ライブラリをこれらの環境変数が設定時に開始したあらゆる .NET プロセスにロードしようとします。このため、インスツルメンテーションをインスツルメントされる必要があるアプリケーションのみに制限してください。ホストのすべての .NET プロセスがインスツルメントされることになるため、これらの環境変数をグローバルに設定しないでください。

systemctl を使用して .NET アプリケーションをサービスとして実行する場合、systemctl によって実行されるすべてのサービスに対してロードされる環境変数を設定することもできます。

  1. systemctl set-environment を実行して、必要な環境変数を設定します。

    # Set required environment variables
    systemctl set-environment CORECLR_ENABLE_PROFILING=1
    systemctl set-environment CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
    systemctl set-environment CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so
    systemctl set-environment DD_DOTNET_TRACER_HOME=/opt/datadog
    
    # (Optional) Set additional Datadog environment variables, for example:
    systemctl set-environment DD_LOGS_INJECTION=true
    systemctl set-environment DD_RUNTIME_METRICS_ENABLED=true
    
  2. systemctl show-environment を実行して、環境変数が設定されていることを確認します。

  3. .NET サービスを再起動して、環境変数を有効にします。

参考資料