概要

Datadog の Azure App Service 向け拡張機能は、追加モニタリングもサポートしています。

  • 自動インスツルメンテーションを用いた、完全分散型の APM トレーシング。
  • カスタマイズされた APM サービスとトレースビューは、関連する Azure App Service のメトリクスとメタデータを表示します。
  • スパンのカスタマイズが可能な、手動 APM インスツルメンテーション機能。
  • アプリケーションログへの Trace_ID 挿入。
  • DogStatsD を使用したカスタムメトリクス送信のサポート。

セットアップ

要件

  1. Microsoft Azure インテグレーションをまだセットアップしていない場合は、最初にセットアップします。

  2. この拡張機能は、以下のリソースタイプに対応しています。

    • Azure App Service Web Apps
    • Basic、Standard、Premium プランでホストされている Function App。
    消費プランの Function App には対応していません。他の App Service リソースタイプやランタイムのサポートに興味がありますか?ベータ版が利用可能になったら、サインアップしてお知らせを受け取りましょう。
  3. Datadog .NET APM 拡張機能は、Windows OS 上で稼働する x64 と x86 アーキテクチャの双方で以下の .NET ランタイムをサポートします (AAS は Linux での拡張機能をサポートしていません) 。自動的にインスツルメントされたライブラリの詳細については、トレーサーのドキュメントを参照してください。

    • .NET フレームワーク 4.6.1 以降
    • .NET Core 2.1
    • .NET Core 2.2 (Microsoft によるサポートは 2019 年 12 月 23 日に終了しました)
    • .NET Core 3.0 (Microsoft によるサポートは 2020 年 3 月 3 日に終了しました)
    • .NET Core 3.1
    • .NET 5
    • .NET 6
    • .NET 7
    • .NET 8
  4. Datadog では、機能の最適なパフォーマンス、安定性、そして可用性を確保するため、拡張機能の最新バージョンへの定期的な更新を推奨しています。初期インストールおよびその後の更新を正常に完了するには、ウェブアプリを一度完全に停止する必要があります。

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

v2.3.0 以降、.NET 拡張機能はセマンティックバージョニングに依存しなくなりました。拡張機能は次のスキームを使用します: x.y.zAA ここで、x.y.z は .Net Tracer バージョンであり、 AA は拡張機能専用です。zAA の先行ゼロは、NuGet パッケージによってトリミングされるため、バージョンは x.y.A になります。

例:

  • 拡張機能 2.3.0 は Tracer v2.3.0 を使用します
  • 拡張機能 2.3.1 は Tracer v2.3.0 を使用します
  • 拡張機能 2.3.2 は Tracer v2.3.0 を使用します
  • 拡張機能 2.3.100 は Tracer v2.3.1 を使用します
  • 拡張機能 2.3.101 は Tracer v2.3.1 を使用します
  • 拡張機能 2.3.200 は Tracer v2.3.2 を使用します

インストール

  1. Web アプリや関数を監視するために Azure インテグレーションを構成します。Datadog で対応する azure.app_services.count または azure.functions.count メトリクスが表示されることを確認し、正しく設定されていることを確認します。: このステップは、メトリクス/トレースの相関、関数トレースパネル表示、および Azure App Services で Datadog を使用する際の全体的なエクスペリエンスを向上させるために重要です。

  2. Azure Portal を開き、Datadog でインスツルメントする Azure アプリのダッシュボードに移動します。

: Azure Native インテグレーションをご利用のお客様は、Azure の Datadog リソースを使用して、拡張機能を .NET アプリに追加することができます。手順については、Datadog の Azure Portal ガイドApp Service 拡張機能のセクションを参照してください。

  1. ‘Configuration’ ページで ‘Application settings’ タブを開きます。

    Configuration ページ
  2. Datadog API キーに対応するアプリケーション設定 DD_API_KEY を追加し、Datadog API キーの値を設定します。

    API キーページ
  3. 任意のアプリケーション設定を構成します。

    • DD_SITE に設定(デフォルトは datadoghq.com)。
    • トレースとカスタム統計をグループ化するには DD_ENV を設定します。
    • DD_SERVICE を設定してサービス名を指定します(デフォルトはアプリ名)。
    • アプリからのアプリケーションログと相関するよう DD_LOGS_INJECTION:true を設定します。
    • Set DD_PROFILING_ENABLED:true to enable .NET Continuous Profiler.
    • Application Security を有効にするには、DD_APPSEC_ENABLED:true を設定します。
    • 任意のコンフィギュレーション変数の全リストをご参照ください。
  4. Save をクリック(アプリケーションが再起動します)。

  5. [必須] Stop をクリックしてアプリケーションを停止します。
  6. Azure 拡張機能ページで Datadog APM 拡張機能を選択します。

    Datadog 拡張機能
  7. 法的事項を承諾し、OK をクリックしてインストールの完了を待機します。: このステップを正常に完了するには、アプリが停止した状態である必要があります。

  8. Start をクリックして、メインアプリケーションを起動します。

    起動

アプリケーションロギング

Azure App Service のアプリケーションから Datadog にログを送信するには、以下のいずれかの方法があります。

  1. 自動インスツルメンテーションによるエージェントレスロギング
  2. Serilog シンクによるエージェントレスロギング

どちらの方法でもトレース ID の挿入が可能で、Datadog のログとトレースを連携させることができます。拡張機能でトレース ID の挿入を有効にするには、アプリケーション設定 DD_LOGS_INJECTION:true を追加してください。

: この動作はアプリケーション内で発生するため、診断設定で送信する Azure Platform ログはトレース ID には含まれません。

DogStatsD を使用したカスタムメトリクス

Azure App Service の拡張機能には、DogStatsD (Datadog のメトリクス集計サービス) のインスタンスが含まれます。拡張機能を利用して、Azure Web Apps および Functions から Datadog へ直接カスタムメトリクス、サービスチェック、イベントを送信できます。

Azure App Service でカスタムメトリクスおよびチェックを書き込むことは、Datadog Agent が実行されているホスト上のアプリケーションでそれを実行するプロセスと同様です。拡張機能を使用して Azure App Service から Datadog へカスタムメトリクスを送信するには、以下を実行します。

  1. DogStatsD NuGet パッケージを Visual Studio プロジェクトに追加します。
  2. アプリケーション内で DogStatsD を初期化し、カスタムメトリクスを作成します。
  3. Azure App Service にコードをデプロイします。
  4. Datadog App Service 拡張機能のインストールがまだの場合は、先にインストールを行います。

: 標準的な DogStatsD コンフィグプロセスとは異なり、DogStatsD のコンフィギュレーションを開始するのにポートやサーバー名の設定は必要ありません。Azure App Service にはアンビエント環境変数があり、メトリクスの送信条件を決定します(DogStatsD クライアントには v6.0.0 以上が必要)。

メトリクスを送信するには、以下のコードを使用します。

// DogStatsd クライアントと、任意のタグを構成します
if (!DogStatsd.Configure(new StatsdConfig() { ConstantTags = new[] { "app:sample.mvc.aspnetcore" } }))
{
    // 必要な環境変数がない場合、`Configure` は false を返します.
    // 以下の環境変数は Azure App Service に存在しますが、
    // カスタムメトリクスをテストするために設定される必要があります: DD_API_KEY:{api_key}, DD_AGENT_HOST:localhost
    // 使用環境に合わせてエラーを無視またはログに記録します
    Console.WriteLine("Cannot initialize DogstatsD.");
}

// メトリクスを送信します
DogStatsd.Increment("sample.startup");

: カスタムメトリクスのみを送信する場合 (トレースを無効にする場合)、アプリケーションの設定で次の変数を設定します。

  • DD_TRACE_ENABLEDfalse に設定します。
  • DD_AAS_ENABLE_CUSTOM_METRICStrue に設定します。 カスタムメトリクスに関する詳細を参照してください。

要件

  1. Microsoft Azure インテグレーションをまだセットアップしていない場合は、最初にセットアップします。

  2. 拡張機能では、Azure App Service Web Apps がサポートされます。Function Apps はサポートされません。

    Support for Java Web Apps is in beta for extension v2.4+. There are no billing implications for tracing Java Web Apps during this period.

    Interested in support for other App Service resource types or runtimes? Sign up to be notified when a beta becomes available.
  3. Datadog Java APM 拡張機能は、Windows OS 上のすべての Java ランタイムをサポートします。Azure App Service は、Linux 上の拡張機能をサポートしていません。自動インスツルメンテーションされたライブラリの詳細については、トレーサードキュメントを参照してください。

  4. Datadog では、機能の最適なパフォーマンス、安定性、そして可用性を確保するため、拡張機能の最新バージョンへの定期的な更新を推奨しています。初期インストールおよびその後の更新を正常に完了するには、ウェブアプリを一度完全に停止する必要があります。

インストール

  1. Web アプリや関数を監視するために Azure インテグレーションを構成します。Datadog で対応する azure.app_service.count または azure.functions.count メトリクスが表示されることを確認し、正しく設定されていることを確認します。: このステップは、メトリクス/トレースの相関関係、機能的なトレース・パネル表示、Datadog サイトでの様々な壊れたユーザー体験の回避のために重要です。

  2. Azure Portal を開き、Datadog でインスツルメントする Azure Web App のダッシュボードに移動します。

  3. ‘Configuration’ ページで ‘Application settings’ タブを開きます。

    Configuration ページ
  4. Datadog API キーに対応するアプリケーション設定 DD_API_KEY を追加し、Datadog API キーの値を設定します。

    API キーページ
  5. 任意のアプリケーション設定を構成します。

    • DD_SITE に設定(デフォルトは datadoghq.com)。
    • トレースとカスタム統計をグループ化するには DD_ENV を設定します。
    • DD_SERVICE を設定してサービス名を指定します(デフォルトはウェブアプリ名)。
    • 任意のコンフィギュレーション変数の全リストをご参照ください。
  6. Save をクリック(アプリケーションが再起動します)。

  7. [必須] Stop をクリックしてアプリケーションを停止します。
  8. Azure 拡張機能ページで Datadog APM 拡張機能を選択します。

  9. 法的事項を承諾し、OK をクリックしてインストールの完了を待機します。: このステップを正常に完了するには、ウェブアプリが停止した状態である必要があります。

  10. Start をクリックして、メインアプリケーションを起動します。

    起動

Azure Web Apps からのアプリケーションロギング

Azure App Service のアプリケーションから Datadog にログを送信するには、アプリから Datadog に直接ログをストリーミングする必要があります。この方法でログを送信すると、トレース ID の挿入が可能になり、Datadog でログとトレースの紐付けができるようになります。

: トレース ID の挿入は、アプリケーションの内部で行われます。Azure Resource ログは、管理プレーンの Azure によって生成されるため、トレース ID は含まれません。

Azure App Service で Java のアプリケーションログを構成するには、Java によるエージェントレスログの説明を参照してください。

DogStatsD を使用したカスタムメトリクス

Azure App Service の拡張機能には、DogStatsD (Datadog のメトリクス集計サービス) のインスタンスが含まれます。拡張機能を利用して、Azure Web Apps から Datadog へ直接カスタムメトリクス、サービスチェック、イベントを送信できます。

この環境でカスタムメトリクスおよびチェックを書き込むことは、Datadog Agent が実行されている標準ホスト上のアプリケーションでそれを実行するプロセスと同様です。拡張機能を使用して Azure App Service から Datadog へカスタムメトリクスを送信するには、以下を実行します。

  1. DogStatsD クライアントをプロジェクトに追加します。
  2. アプリケーション内で DogStatsD を初期化し、カスタムメトリクスを作成します。
  3. サポートされている Azure ウェブアプリにコードをデプロイします。
  4. Datadog App Service 拡張機能のインストールがまだの場合は、先にインストールを行います。

: 標準的な DogStatsD コンフィグプロセスとは異なり、DogStatsD のコンフィギュレーションを開始するのにポートやサーバー名の設定は必要ありません。Azure App Service にはアンビエント環境変数があり、メトリクスの送信条件を決定します(DogStatsD クライアントには v6.0.0 以上が必要)。

メトリクスを送信するには、以下のコードを使用します。

// DogStatsd クライアントの構成と、任意のタグの構成
StatsDClient client = new NonBlockingStatsDClientBuilder()
                            .constantTags("app:sample.service")
                            .build();
// メトリクスを送信する
client.Increment("sample.startup");

カスタムメトリクスに関する詳細を参照してください。

要件

Datadog-Azure インテグレーションをまだセットアップしていない場合は、最初にセットアップします。

Datadog の Azure App Service Node.js 拡張機能では、Azure App Service Web Apps がサポートされます。Function Apps はサポートされません。

インストール

  1. Datadog-Azure インテグレーションが Azure Web App を監視するように構成を行います。検証のため、Datadog の azure.app_service.count メトリクスで Web App がカウントされていることを確認してください。

  2. Azure Portal を開き、Datadog でインスツルメントする Azure Web App のダッシュボードに移動します。

  3. Configuration ページで Application settings タブに移動し、+ New application setting を選択します。

  4. Datadog API キーを、DD_API_KEY という名前のアプリケーション設定の値として追加します。

    API キーページ

    オプションで、アプリケーション設定としてさらに環境変数を設定することができます。これらの変数には以下が含まれます。

    • DD_SITE: (デフォルトは datadoghq.com)
    • DD_ENV: 環境名
    • DD_SERVICE: サービス名 (デフォルトは Web App 名)
    • DD_RUNTIME_METRICS_ENABLED: ランタイムメトリクスを有効にする場合は true
    • DD_APPSEC_ENABLED: Application Security Management を有効にする場合は true

    任意のコンフィギュレーション設定の全リストを参照してください。

  5. Save を選択します。これでアプリケーションが再起動します。

  6. アプリケーションを停止します。

    ダウンタイムを避けるには、デプロイメントスロットを使用します。GitHub Action for Azure CLI を使用するワークフローを作成できます。サンプルの GitHub ワークフローを参照してください。
  7. Extensions ページで Node Datadog APM 拡張機能を選択します。

  8. 規約に同意し、OK を選択して、インストールが完了するのを待ちます。

  9. アプリケーションを開始します。

    起動

Azure Web Apps からのアプリケーションロギング

Azure App Service のアプリケーションから Datadog にログを送信するには、アプリから Datadog に直接ログをストリーミングする必要があります。この方法でログを送信すると、トレース ID の挿入が可能になり、Datadog でログとトレースの紐付けができるようになります。

Azure App Service の Node.js でアプリケーションロギングを構成するには、Node.js のエージェントレスロギング を参照してください。

Azure リソースログには、トレース ID は含まれません。

トレース ID の挿入は、アプリケーションの内部で行われます。Azure リソースログは、管理プレーンの Azure によって生成されるため、トレース ID は含まれません。

DogStatsD を使用したカスタムメトリクス

Datadog の Azure App Service Node.js 拡張機能には、DogStatsD (Datadog のメトリクス集計サービス) のインスタンスが含まれます。Azure Web Apps から Datadog へ直接カスタムメトリクス、サービスチェック、イベントを送信できます。

この環境でカスタムメトリクスおよびチェックを書き込むことは、Datadog Agent が実行されている標準ホスト上のアプリケーションでそれを実行するプロセスと同様です。拡張機能を使用して Azure App Service から Datadog へカスタムメトリクスを送信するには、以下を実行します。

  1. アプリケーション内で DogStatsD を初期化し、カスタムメトリクスを作成します。
  2. サポートされている Azure Web App にコードをデプロイします。
  3. Datadog の Azure App Service Node.js 拡張機能のインストールがまだの場合は、先にインストールを行います。
Node.js DogStatsD クライアントは、Azure App Service 拡張機能にパッケージされた Node.js トレーサー (dd-trace) に含まれているため、インストールする必要はありません。

メトリクスを送信するには、以下のコードを使用します。

const tracer = require('dd-trace');
tracer.init();

tracer.dogstatsd.increment('example_metric.increment', 1, { environment: 'dev' });
tracer.dogstatsd.decrement('example_metric.decrement', 1, { environment: 'dev' });
Datadog の Node.js トレーサー dd-trace は、Azure App Service 拡張機能にパッケージされています。NODE_PATH に自動的に追加されます。

package.json dd-trace を依存関係として追加する必要はありません。 dd-trace を依存関係として明示的に追加すると、拡張機能によって提供されるバージョンが上書きされる可能性があります。ローカルでテストする場合は、リリースノートを参照して、Azure App Service 拡張機能のバージョンに適した Node.js トレーサーのバージョンを見つけてください。

カスタムメトリクスに関する詳細を参照してください。

プログラムマネジメント

Datadog では、Powershell を使用して Azure App Service Extension をアップデートまたはインストールするためのスクリプトを提供しています。スクリプトによる拡張機能管理では、リソースグループによる拡張機能の一括更新サイト拡張機能の特定バージョンのインストールを指定することができます。また、スクリプトを使って CI/CD パイプラインにプログラム的に拡張機能を追加したり、すでにインストールされている拡張機能を発見して更新したりすることもできます。

前提条件

初めて拡張機能をインストールする

インストールスクリプトは、Azure Web App または Azure Function App に最新バージョンの拡張機能を追加します。これは、リソース グループ レベルではなく、アプリ単位で発生します。

  1. Azure CLI または Azure Cloud Shell を開きます。

  2. 以下のコマンドで、インストールスクリプトをダウンロードします。

    Invoke-WebRequest -Uri "https://raw.githubusercontent.com/DataDog/datadog-aas-extension/master/management-scripts/extension/install-latest-extension.ps1" -OutFile "install-latest-extension.ps1"
    
  3. 必要に応じて必要な引数とオプションの引数を渡し、以下のコマンドを実行します。

    .\install-latest-extension.ps1 -Username <USERNAME> -Password <PASSWORD> -SubscriptionId <SUBSCRIPTION_ID> -ResourceGroup <RESOURCE_GROUP_NAME> -SiteName <SITE_NAME> -DDApiKey <DATADOG_API_KEY> -DDSite <DATADOG_SITE> -DDEnv <DATADOG_ENV> -DDService <DATADOG_SERVICE> -DDVersion <DATADOG_VERSION>
    

: 上記コマンドには、以下の引数が必要です。

  • <USERNAME>: Azure ユーザースコープのユーザー名です。
  • <PASSWORD>: Azure ユーザースコープのパスワードです。
  • <SUBSCRIPTION_ID>: Azure サブスクリプション ID です。
  • <RESOURCE_GROUP_NAME>: Azure のリソースグループ名です。
  • <SITE_NAME>: アプリの名前です。
  • <DATADOG_API_KEY>: Datadog API キーです。

また、DATADOG_SITEDatadog サイトに設定します。DATADOG_SITE のデフォルトは datadoghq.com です。あなたのサイトは次のとおりです:

リソースグループの拡張機能を更新する

更新スクリプトは、リソースグループ全体に適用されます。このスクリプトは、拡張機能がインストールされているすべての Web App または Function App を更新します。Datadog 拡張機能がインストールされていない App Service アプリは、影響を受けません。

  1. Azure CLI または Azure Cloud Shell を開きます。

  2. 以下のコマンドでアップデートスクリプトをダウンロードします。

    $baseUri="https://raw.githubusercontent.com/DataDog/datadog-aas-extension/master/management-scripts/extension"; Invoke-WebRequest -Uri "$baseUri/update-all-site-extensions.ps1" -OutFile "update-all-site-extensions.ps1"; Invoke-WebRequest -Uri "$baseUri/install-latest-extension.ps1" -OutFile "install-latest-extension.ps1"
    
  3. 以下のコマンドを実行します。引数はすべて必須です。

    .\update-all-site-extensions.ps1 -SubscriptionId <SUBSCRIPTION_ID> -ResourceGroup <RESOURCE_GROUP_NAME> -Username <USERNAME> -Password <PASSWORD>
    

特定のバージョンの拡張機能をインストールする

Azure App Service UI は、拡張機能の特定のバージョンをインストールする機能をサポートしていません。インストールまたは更新スクリプトを使用して、これを行うことができます。

特定のバージョンを単一のリソースにインストールする

特定のバージョンを単一のインスタンスにインストールするには、拡張機能を初めてインストールする際の手順に従って、インストールコマンドに -ExtensionVersion パラメーターを追加してください。

.\install-latest-extension.ps1 -Username <USERNAME> -Password <PASSWORD> -SubscriptionId <SUBSCRIPTION_ID> -ResourceGroup <RESOURCE_GROUP_NAME> -SiteName <SITE_NAME> -DDApiKey <DATADOG_API_KEY> -ExtensionVersion <EXTENSION_VERSION>

<EXTENSION_VERSION> をインストールしたい拡張機能のバージョンに置き換えます。例: 1.4.0

リソースグループ全体に特定のバージョンをインストールする

リソースグループに特定のバージョンをインストールするには、リソースグループの拡張機能を更新する際の手順に従い、インストールコマンドに -ExtensionVersion パラメーターを追加してください。

.\update-all-site-extensions.ps1 -SubscriptionId <SUBSCRIPTION_ID> -ResourceGroup <RESOURCE_GROUP_NAME> -Username <USERNAME> -Password <PASSWORD> -ExtensionVersion <EXTENSION_VERSION>

<EXTENSION_VERSION> をインストールしたい拡張機能のバージョンに置き換えます。例: 1.4.0

ARM テンプレート

多くの組織では、Azure Resource Management (ARM) テンプレートを使用して infrastructure-as-code の実践を実施しています。これらのテンプレートに App Service Extension を構築するには、デプロイメントに Datadog の App Service Extension ARM テンプレートを組み込み、App Service リソースと一緒に拡張機能を追加して構成します。

Java Web Apps のサポートは、拡張機能 v2.4+ のベータ版です。プログラムによる管理は、Java Web Apps では利用できません。

他の App Service リソースタイプやランタイムのサポートに興味がありますか?ベータ版が利用可能になったら、サインアップしてお知らせを受け取りましょう。

デプロイ

ダウンタイムなしで Datadog インスツルメンテーションを更新するには、デプロイメントスロットを使用します。GitHub Action for Azure CLI を使用するワークフローを作成できます。

サンプルの [GitHub ワークフロー][workflow]を参照してください。

トラブルシューティング

サーバーレスビューでアプリの設定ミスが確認された場合、またはトレースに対応するメトリクスが見つからない場合

アプリケーションを監視するための Azure インテグレーションが構成されていない可能性があります。適切に構成することで、Datadog プラットフォームでメトリクス、トレース、ログを相関させる能力が向上します。Azure インテグレーションが構成されていないと、トレースの重要なコンテキストが失われます。これを解決するには:

  1. Azure インテグレーションタイルに移動します。

  2. アプリケーションが動作している Azure サブスクリプションの Azureインテグレーションがインストールされていることを確認します。

  3. 適用した App Service プランのフィルタリングルールが、アプリが実行されている App Service プランを含んでいることを確認してください。App Service プランが含まれていない場合、そのプランでホストされているすべてのアプリと機能も含まれません。アプリ自体のタグは、Datadog によるフィルタリングに使用されません。

APM のトレースが Datadog に表示されない場合

  1. DD_SITE および DD_API_KEY が正しく設定されていることを確認します。

  2. アプリケーションを完全に停止してから起動します。

  3. 解決しない場合は、拡張機能をアンインストールしてから再度インストールします(これにより、最新バージョンの実行も確認できます)。

: サポートチームによるアプリケーションのエラー調査を迅速に進めるには、DD_TRACE_DEBUG:true を設定し、Datadog ログディレクトリのコンテンツ(%AzureAppServiceHomeDirectory%\LogFiles\datadog) をメールに追加します。

さらにヘルプが必要な場合は、Datadog サポートまでお問い合わせください。

その他の参考資料