Azure App Service での .NET、Node.js、Python、Java アプリケーションのアプリケーション監視を有効にする
[アーティクル] 12/14/2024
3 人の共同作成者
フィードバック
この記事の内容
自動インストルメンテーション ("ランタイム" 監視とも呼ばれます) は、コードの変更や高度な構成を必要とせずに Azure App Service の Application Insights を有効にする最も簡単な方法です。 特定のシナリオに基づいて、手動インストルメンテーション による高度な監視が必要かどうかを評価します。
Note
インストルメンテーション キーのインジェストのサポートは、2025 年 3 月 31 日に終了します。 インストルメンテーション キーのインジェストは引き続き機能しますが、この機能の更新プログラムやサポートは提供されなくなります。 接続文字列に移行 することで、新機能 をご利用いただけます。
Application Insights を有効にする
重要
自動インストルメンテーションの監視と手動の SDK ベースのインストルメンテーションの両方が検出された場合は、手動のインストルメンテーション設定のみが受け付けられます。 この配置により、重複したデータが送信されるのを防ぐことができます。 詳細については、「トラブルシューティング 」を参照してください。
Azure portal での自動インストルメンテーション
アプリ サービスの左側のナビゲーション メニューで [Application Insights] を選択し、[有効化] を選択します。
このアプリケーション用に、新しいリソースを作成するか、既存の Application Insights リソースを選びます。
注意
[OK] を選んで新しいリソースを作成すると、[監視の設定を適用します] というプロンプトが表示されます。 [続行] を選ぶと、新しい Application Insights リソースがアプリ サービスにリンクされます。 その後、アプリ サービスが再起動します。
使用するリソースを指定した後、アプリケーションのプラットフォームごとのデータを Application Insights でどのように収集するかを選択できます。 ASP.NET Core の収集オプションは、[推奨] または [無効] です。
重要
自動インストルメンテーションの監視と手動の SDK ベースのインストルメンテーションの両方が検出された場合は、手動のインストルメンテーション設定のみが受け付けられます。 この配置により、重複したデータが送信されるのを防ぐことができます。 詳細については、「トラブルシューティング 」を参照してください。
Note
APPINSIGHTS_JAVASCRIPT_ENABLED
と urlCompression
の組み合わせはサポートされていません。 詳細については、トラブルシューティングのヒント に関するページをご覧ください。
Azure portal での自動インストルメンテーション
アプリ サービスの左側のナビゲーション メニューで [Application Insights] を選択し、[有効化] を選択します。
このアプリケーション用に、新しいリソースを作成するか、既存の Application Insights リソースを選びます。
注意
[OK] を選んで新しいリソースを作成すると、[監視の設定を適用します] というプロンプトが表示されます。 [続行] を選ぶと、新しい Application Insights リソースがアプリ サービスにリンクされます。 その後、アプリ サービスが再起動します。
使用するリソースを指定した後、アプリケーションのプラットフォームごとのデータを Application Insights でどのように収集するかを選択できます。 ASP.NET アプリの監視は既定でオンであり、2 つの異なる収集レベル ([推奨] と [Basic] ) があります。
次の表は、ルートごとに収集されるデータをまとめたものです。
データ
推奨
基本
CPU、メモリ、および I/O の使用状況の傾向が追加されます
はい
いいえ
使用状況の傾向が収集され、可用性の結果からトランザクションへの相関関係が有効になります
はい
はい
ホスト プロセスによって処理されていない例外が収集されます
はい
はい
負荷がかかっているときの APM メトリックの精度が上がります (サンプリングが使用される場合)
はい
はい
要求/依存関係の境界を越えてマイクロサービスが相互に関連付けられます
はい
いいえ (シングルインスタンス APM 機能のみ)
この統合により、Application Insights Java 3.x が追加され、テレメトリが自動収集されます。 さらに追加の構成を適用し、独自のカスタム テレメトリを追加する こともできます。
Azure portal での自動インストルメンテーション
アプリ サービスの左側のナビゲーション メニューで [Application Insights] を選択し、[有効化] を選択します。
このアプリケーション用に、新しいリソースを作成するか、既存の Application Insights リソースを選びます。
注意
[OK] を選んで新しいリソースを作成すると、[監視の設定を適用します] というプロンプトが表示されます。 [続行] を選ぶと、新しい Application Insights リソースがアプリ サービスにリンクされます。 その後、アプリ サービスが再起動します。
重要
自動インストルメンテーションの監視と手動の SDK ベースのインストルメンテーションの両方が検出された場合は、手動のインストルメンテーション設定のみが受け付けられます。 この配置により、重複したデータが送信されるのを防ぐことができます。 詳細については、トラブルシューティングのセクション を参照してください。
Note
App Service 環境変数ブレードの APPLICATIONINSIGHTS_CONFIGURATION_CONTENT
環境変数を使用して、自動的にアタッチされたエージェントを構成できます。 この環境変数を使用して渡すことができる構成オプションの詳細については、Node.js の構成 を参照してください。
Node.js 用の Application Insights は、Linux 上の Azure App Service (コードベースとカスタムの両方のコンテナー) および Windows 上の App Service (コードベースのアプリ) と統合されています。 統合はパブリック プレビュー段階です。
Azure portal での自動インストルメンテーション
アプリ サービスの左側のナビゲーション メニューで [Application Insights] を選択し、[有効化] を選択します。
このアプリケーション用に、新しいリソースを作成するか、既存の Application Insights リソースを選びます。
注意
[OK] を選んで新しいリソースを作成すると、[監視の設定を適用します] というプロンプトが表示されます。 [続行] を選ぶと、新しい Application Insights リソースがアプリ サービスにリンクされます。 その後、アプリ サービスが再起動します。
使うリソースを指定すると、準備は完了です。
Application Insights for Python は、コードベースの Linux Azure App Service と統合されます。 この統合はパブリック プレビュー段階であり、GA 段階の Python SDK が追加されます。 これにより、コード内の一般的な Python ライブラリがインストルメント化され、依存関係、ログ、メトリックを自動的に収集して関連付けることができます。 収集される呼び出しとメトリックを確認するには、「Python ライブラリ 」を参照してください。
ログ テレメトリは、ルート ロガーのレベルで収集されます。 Python のネイティブ ログ階層の詳細については、「Python のログ記録に関するドキュメント 」を参照してください。
前提条件
Python バージョン 3.11 以前。
App Service はコードとしてデプロイする必要があります。 カスタム コンテナーはサポートされていません。
Azure portal での自動インストルメンテーション
アプリ サービスの左側のナビゲーション メニューで [Application Insights] を選択し、[有効化] を選択します。
このアプリケーション用に、新しいリソースを作成するか、既存の Application Insights リソースを選びます。
注意
[OK] を選んで新しいリソースを作成すると、[監視の設定を適用します] というプロンプトが表示されます。 [続行] を選ぶと、新しい Application Insights リソースがアプリ サービスにリンクされます。 その後、アプリ サービスが再起動します。
リソースを指定すると、すぐに使用できます。
Python ライブラリ
インストルメント化された後、次の Python ライブラリから呼び出しとメトリックを収集します。
Django インストルメンテーション
OpenTelemetry Django インストルメンテーションを使用するには、App Service 設定の DJANGO_SETTINGS_MODULE
環境変数を、アプリ フォルダーから設定モジュールを指すように設定する必要があります。
詳細については、「Django のドキュメント 」を参照してください。
OpenTelemetry コミュニティからインストルメンテーション ライブラリを含めると、より多くのデータを自動的に収集できます。
注意事項
コミュニティ インストルメンテーション ライブラリの品質は、サポートおよび保証していません。 ディストリビューションについてのご提案は、フィードバック コミュニティ で投稿するか賛成に投票してください。 一部は実験的な OpenTelemetry 仕様に基づいており、今後、破壊的変更が生じる可能性があることにご注意ください。
コミュニティ OpenTelemetry インストルメンテーション ライブラリを追加するには、アプリの requirements.txt
ファイルを使用してインストールします。 OpenTelemetry の自動インストルメンテーションは自動的に選択され、インストールされているすべてのライブラリがインストルメント化されます。 コミュニティ ライブラリの一覧については、こちら を参照してください。
監視拡張機能/エージェントを手動でアップグレードする
バージョン 2.8.9 以降からアップグレードする
バージョン 2.8.9 からのアップグレードは自動的に実行され、追加の操作は必要ありません。 新しい監視ビットは、バックグラウンドでターゲット アプリ サービスに配信され、アプリケーションの再起動時に取得されます。
実行している拡張機能のバージョンを確認するには、https://yoursitename.scm.azurewebsites.net/ApplicationInsights
に移動します。
バージョン 1.0.0 - 2.6.5 からのアップグレード
バージョン 2.8.9 以降では、プレインストールされたサイト拡張機能が使われます。 以前のバージョンを使用している場合は、次の 2 つの方法のいずれかを使用して更新できます。
2.5.1 より前のバージョンからアップグレードする場合は、ApplicationInsights
DLL がアプリケーションの bin フォルダーから削除されたことを確認します。 詳細については、トラブルシューティングのヒント に関するページをご覧ください。
バージョン 2.8.9 以降からアップグレードする
バージョン 2.8.9 からのアップグレードは自動的に実行され、追加の操作は必要ありません。 新しい監視ビットは、バックグラウンドでターゲット アプリ サービスに配信され、アプリケーションの再起動時に取得されます。
実行している拡張機能のバージョンを確認するには、https://yoursitename.scm.azurewebsites.net/ApplicationInsights
に移動します。
バージョン 1.0.0 - 2.6.5 からのアップグレード
バージョン 2.8.9 以降では、プレインストールされたサイト拡張機能が使われます。 以前のバージョンを使用している場合は、次の 2 つの方法のいずれかを使用して更新できます。
2.5.1 より前のバージョンからアップグレードする場合は、ApplicationInsights
DLL がアプリケーションの bin フォルダーから削除されたことを確認します。 詳細については、トラブルシューティングのヒント に関するページをご覧ください。
Application Insights Java バージョンは、App Service の更新プログラムの一部として自動的に更新されます。 Application Insights Java エージェントの最新バージョンで修正済みの問題が発生した場合は、手動で更新できます。
Java エージェントの jar ファイルを App Service にアップロードします。
a. まず、こちら の手順に従って、Azure CLI の最新バージョンを入手します。
b. 次に、こちら の手順に従って、Application Insights Java エージェントの最新バージョンを入手します。
c. 次に、こちらのコマンドを使用して、Java エージェント jar ファイルを App Service にデプロイします。az webapp deploy --src-path applicationinsights-agent-{VERSION_NUMBER}.jar --target-path java/applicationinsights-agent-{VERSION_NUMBER}.jar --type static --resource-group {YOUR_RESOURCE_GROUP} --name {YOUR_APP_SVC_NAME}
または、このガイド を使用して、Maven プラグインを介してエージェントをデプロイすることもできます。
Azure portal の [Application Insights] タブを使用して Application Insights を無効にします。
エージェント jar ファイルがアップロードされたら、App Service の構成に移動します。 Linux 用のスタートアップ コマンド を使用する必要がある場合は、JVM 引数を含めます。
スタートアップ コマンド では、JavaSE の JAVA_OPTS
または Tomcat の CATALINA_OPTS
は受け入れられません。
スタートアップ コマンド を使用しない場合は、値 -javaagent:{PATH_TO_THE_AGENT_JAR}/applicationinsights-agent-{VERSION_NUMBER}.jar
で新しい環境変数 (JavaSE の場合は JAVA_OPTS
、Tomcat の場合は CATALINA_OPTS
) を作成します。
変更を適用するために、アプリを再起動します。
Note
JavaSE の JAVA_OPTS
または Tomcat の CATALINA_OPTS
環境変数を設定する場合は、Azure portal で Application Insights を無効にする必要があります。 または、Azure portal から Application Insights を有効にしたい場合は、App Service の構成設定で JavaSE の JAVA_OPTS
または Tomcat の CATALINA_OPTS
変数を設定していないことを確認してください。
Application Insights Node.js バージョンは、App Service の更新プログラムの一部として自動的に更新されます。手動で更新することはできません 。
Application Insights SDK の最新バージョンで修正済みの問題が発生した場合は、自動インストルメンテーションを削除し、最新の SDK バージョンを使用してアプリケーションを手動でインストルメント化することができます。
Application Insights Python バージョンは、App Service の更新プログラムの一部として自動的に更新されます。手動で更新することはできません 。
Application Insights SDK の最新バージョンで修正済みの問題が発生した場合は、自動インストルメンテーションを削除し、最新の SDK バージョンを使用してアプリケーションを手動でインストルメント化することができます。
現在、ASP.NET Core の監視拡張機能を構成するオプションは提供されていません。
以前は applicationinsights.config ファイルで制御できたサンプリングを構成する場合、[アプリケーション設定] で対応するプレフィックス MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor
を使って操作できるようになりました。
たとえば、最初のサンプリング率を変更するには、MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage
と 100
の値の [アプリケーション設定] を作成できます。
サンプリングを無効にするには、MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage
を 100
の値に設定します。
次の設定がサポートされます。
MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage
MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage
MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_EvaluationInterval
MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MaxTelemetryItemsPerSecond
サポートされるアダプティブ サンプリング テレメトリ プロセッサ設定と定義の一覧については、コード とサンプリング ドキュメント を参照してください。
使用するリソースを指定したら、Java エージェントを構成できます。 Java エージェントを構成しない場合は、既定の構成が適用されます。
完全な構成のセット を使用できます。 必要なのは、有効な json ファイル を貼り付けることだけです。 プレビュー段階にある接続文字列とすべての構成を除外する - 現在プレビュー段階の項目は、一般提供されたときに追加することができます。
Azure portal で構成を変更すると APPLICATIONINSIGHTS_CONFIGURATION_FILE
環境変数が自動的に設定され、App Service の設定パネルに表示されます。 この変数には、Azure portal で Java アプリの構成テキスト ボックスに貼り付けた完全な json の内容が含まれます。
JSON を使用して Node.js エージェントを構成できます。 APPLICATIONINSIGHTS_CONFIGURATION_CONTENT
環境変数を JSON 文字列に設定するか、APPLICATIONINSIGHTS_CONFIGURATION_FILE
環境変数を、JSON を含むファイル パスに設定します。
"samplingPercentage": 80,
"enableAutoCollectExternalLoggers": true,
"enableAutoCollectExceptions": true,
"enableAutoCollectHeartbeat": true,
"enableSendLiveMetrics": true,
...
完全な構成のセット を使用できます。 必要なのは、有効な json ファイルを使用することだけです。
次のような OpenTelemetry 環境変数 を使用して構成できます。
環境変数
説明
OTEL_SERVICE_NAME
, OTEL_RESOURCE_ATTRIBUTES
アプリケーションに関連付けられている OpenTelemetry リソース属性 を指定します。 OTEL_RESOURCE_ATTRIBUTES を使用して任意のリソース属性を設定することも、OTEL_SERVICE_NAME を使用して service.name
のみを設定することもできます。
OTEL_LOGS_EXPORTER
None
に設定すると、ログ テレメトリの収集とエクスポートが無効になります。
OTEL_METRICS_EXPORTER
None
に設定すると、メトリック テレメトリの収集とエクスポートが無効になります。
OTEL_TRACES_EXPORTER
None
に設定すると、分散トレース テレメトリの収集とエクスポートが無効になります。
OTEL_BLRP_SCHEDULE_DELAY
ログ記録のエクスポート間隔をミリ秒単位で指定します。 既定値は 5000 です。
OTEL_BSP_SCHEDULE_DELAY
分散トレースのエクスポート間隔をミリ秒単位で指定します。 既定値は 5000 です。
OTEL_TRACES_SAMPLER_ARG
サンプリング する分散トレース テレメトリの比率を指定します。 指定可能な値は、0 ~ 1 です。 既定値は 1.0 のため、テレメトリはサンプリングされません。
OTEL_PYTHON_DISABLED_INSTRUMENTATIONS
無効にする OpenTelemetry インストルメンテーションを指定します。 無効にすると、インストルメンテーションは自動インストルメンテーションの一部として実行されません。 小文字のライブラリ名 のカンマ区切りのリストを受け入れます。 たとえば、Psycopg2 および FastAPI インストルメンテーションを無効にするには、"psycopg2,fastapi"
に設定します。 既定では空のリストになり、サポートされているすべてのインストルメンテーションが有効になります。
クライアント側の監視を有効にする
アプリの設定 APPINSIGHTS_JAVASCRIPT_ENABLED
の有無に関係なく、[推奨] 収集の ASP.NET Core アプリではクライアント側の監視が既定で有効になります。
クライアント側の監視を無効にする場合:
[設定] >[構成] を選択します。
[アプリケーション設定] で、次の情報を使って新しいアプリケーション設定 を作成します。
名前 : APPINSIGHTS_JAVASCRIPT_ENABLED
値 : false
設定を保存 します。 アプリを再起動します。
ASP.NET の場合、クライアント側の監視はオプトインです。 クライアント側の監視を有効にするには:
[設定] >[構成] を選択します。
[アプリケーション設定] で、新しいアプリケーション設定を作成します。
名前 : 「APPINSIGHTS_JAVASCRIPT_ENABLED 」と入力します。
値 : 「true 」と入力します。
設定を保存し、アプリを再起動します。
クライアント側の監視を無効にするには、[アプリケーション設定] から関連付けられているキーと値のペアを削除するか、値を false に設定します。
監視の自動化
Application Insights でのテレメトリ収集を有効にするのに必要なのは、次のアプリケーション設定を設定することだけです。
アプリケーション設定の定義
アプリ設定の名前
定義
値
ApplicationInsightsAgent_EXTENSION_VERSION
メインの拡張機能で、実行時の監視を制御します。
~2
(Windows の場合) または ~3
(Linux の場合)
XDT_MicrosoftApplicationInsights_Mode
既定のモードでは、最適なパフォーマンスを保証するために、重要な機能のみが有効になります。
disabled
または recommended
。
XDT_MicrosoftApplicationInsights_PreemptSdk
ASP.NET Core アプリの場合のみ。 Application Insights SDK で相互運用 (Interop) を有効にします。 拡張機能と SDK を並行して読み込み、それを使ってテレメトリを送信します。 (Application Insights SDK を無効にします。)
1
アプリケーション設定の定義
アプリ設定の名前
定義
値
ApplicationInsightsAgent_EXTENSION_VERSION
メインの拡張機能で、実行時の監視を制御します。
~2
XDT_MicrosoftApplicationInsights_Mode
既定のモードでは、最適なパフォーマンスを保証するために、重要な機能のみが有効になります。
default
または recommended
InstrumentationEngine_EXTENSION_VERSION
バイナリ再書き込みエンジン InstrumentationEngine
がオンにされるかどうかを制御します。 この設定は、パフォーマンスに影響し、コールド スタートと起動時間に影響を与えます。
~1
XDT_MicrosoftApplicationInsights_BaseExtensions
SQL と Azure テーブル テキストを依存関係呼び出しと共に取り込むかどうかを制御します。 パフォーマンスの警告: アプリケーションのコールド スタートアップ時間が影響を受けます。 この設定には InstrumentationEngine
が必要です。
~1
アプリケーション設定の定義
アプリ設定の名前
定義
値
ApplicationInsightsAgent_EXTENSION_VERSION
メインの拡張機能で、実行時の監視を制御します。
Windows では ~2
、Linux では ~3
。
XDT_MicrosoftApplicationInsights_Java
Java エージェントを含めるかどうかを制御するフラグ。
0
または 1
(Windows でのみ適用されます)
Note
スナップショット デバッガーは Java アプリケーションでは使用できません。
アプリケーション設定の定義
アプリ設定の名前
定義
値
ApplicationInsightsAgent_EXTENSION_VERSION
メインの拡張機能で、実行時の監視を制御します。
Windows では ~2
、Linux では ~3
。
XDT_MicrosoftApplicationInsights_NodeJS
Node.js エージェントを含めるかどうかを制御するフラグ。
0
または 1
(Windows でのみ適用されます)
Note
スナップショット デバッガーは Node.js アプリケーションでは使用できません。
アプリケーション設定の定義
アプリ設定の名前
定義
Value
APPLICATIONINSIGHTS_CONNECTION_STRING
Application Insights リソースの接続文字列。
例: abcd1234-ab12-cd34-abcd1234abcd
ApplicationInsightsAgent_EXTENSION_VERSION
メインの拡張機能で、実行時の監視を制御します。
~3
Note
スナップショット デバッガーは Python アプリケーションでは使用できません。
Azure Resource Manager を使用した App Service のアプリケーション設定
Azure App Service のアプリケーション設定は、Azure Resource Manager テンプレート を使用して管理および構成できます。 この手法は、Resource Manager オートメーションで新しい App Service リソースをデプロイするとき、または既存のリソースの設定を変更するときに使用できます。
App Service リソースに使われるアプリケーション設定 JSON の基本構造を次に示します。
"resources": [
{
"name": "appsettings",
"type": "config",
"apiVersion": "2015-08-01",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('webSiteName'))]"
],
"tags": {
"displayName": "Application Insights Settings"
},
"properties": {
"key1": "value1",
"key2": "value2"
}
}
]
Application Insights のリソースと、新しく作成された App Service リソースへのリンクの作成を自動化します。
既定の Application Insights の設定で Resource Manager テンプレートを作成するには、Application Insights を有効にして新しい Web アプリを作成する場合のようにプロセスを開始します。
目的の Web アプリ情報を含む新しい App Service リソースを作成します。 [監視] タブで Application Insights を有効にします。
[Review + create](レビュー + 作成) を選択します。 次に、[オートメーション用のテンプレートをダウンロードする] を選択します。
このオプションにより、必要な設定がすべて設定済みの、最新の Resource Manager テンプレートが生成されます。
次の例で、すべての AppMonitoredSite
をサイト名に置き換えてください。
Note
Windows を使用している場合は、ApplicationInsightsAgent_EXTENSION_VERSION
を ~2
に設定します。 Linux を使用している場合は、ApplicationInsightsAgent_EXTENSION_VERSION
を ~3
に設定します。
{
"resources": [
{
"name": "[parameters('name')]",
"type": "Microsoft.Web/sites",
"properties": {
"siteConfig": {
"appSettings": [
{
"name": "APPINSIGHTS_INSTRUMENTATIONKEY",
"value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').InstrumentationKey]"
},
{
"name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
"value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').ConnectionString]"
},
{
"name": "ApplicationInsightsAgent_EXTENSION_VERSION",
"value": "~2"
}
]
},
"name": "[parameters('name')]",
"serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
"hostingEnvironment": "[parameters('hostingEnvironment')]"
},
"dependsOn": [
"[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
"microsoft.insights/components/AppMonitoredSite"
],
"apiVersion": "2016-03-01",
"location": "[parameters('location')]"
},
{
"apiVersion": "2016-09-01",
"name": "[parameters('hostingPlanName')]",
"type": "Microsoft.Web/serverfarms",
"location": "[parameters('location')]",
"properties": {
"name": "[parameters('hostingPlanName')]",
"workerSizeId": "[parameters('workerSize')]",
"numberOfWorkers": "1",
"hostingEnvironment": "[parameters('hostingEnvironment')]"
},
"sku": {
"Tier": "[parameters('sku')]",
"Name": "[parameters('skuCode')]"
}
},
{
"apiVersion": "2015-05-01",
"name": "AppMonitoredSite",
"type": "microsoft.insights/components",
"location": "West US 2",
"properties": {
"ApplicationId": "[parameters('name')]",
"Request_Source": "IbizaWebAppExtensionCreate"
}
}
],
"parameters": {
"name": {
"type": "string"
},
"hostingPlanName": {
"type": "string"
},
"hostingEnvironment": {
"type": "string"
},
"location": {
"type": "string"
},
"sku": {
"type": "string"
},
"skuCode": {
"type": "string"
},
"workerSize": {
"type": "string"
},
"serverFarmResourceGroup": {
"type": "string"
},
"subscriptionId": {
"type": "string"
}
},
"$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
"contentVersion": "1.0.0.0"
}
PowerShell を使用して有効にする
PowerShell を使用してアプリケーションの監視を有効にするために必要な操作は、基になるアプリケーション設定の変更のみです。 次の例では、リソース グループ AppMonitoredRG
で AppMonitoredSite
という Web サイトのアプリケーション監視を有効にします。 これによって、012345678-abcd-ef01-2345-6789abcd
インストルメンテーション キーに送信されるようにデータが構成されます。
Note
Windows を使用している場合は、ApplicationInsightsAgent_EXTENSION_VERSION を ~2
に設定します。 Linux を使用している場合は、ApplicationInsightsAgent_EXTENSION_VERSION を ~3
に設定します。
$app = Get-AzWebApp -ResourceGroupName "AppMonitoredRG" -Name "AppMonitoredSite" -ErrorAction Stop
$newAppSettings = @{} # case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # preserve non Application Insights application settings.
$newAppSettings["APPINSIGHTS_INSTRUMENTATIONKEY"] = "012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights instrumentation key
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~2"; # enable the ApplicationInsightsAgent
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop
よく寄せられる質問
このセクションでは、一般的な質問への回答を示します。
Application Insights によってどのような変更がプロジェクトに加えられますか?
詳細は、プロジェクトの種類によって異なります。 次のリストは、Web アプリケーションの例です。
Application Insights の標準メトリックと Azure App Service メトリックの違い
Application Insights では、アプリケーションに対して行われた要求のテレメトリを収集します。 WebApps/WebServer でエラーが発生し、要求がユーザー アプリケーションに到達しなかった場合、それに関するテレメトリは Application Insights に含まれません。
Application Insights によって計算された serverresponsetime
の期間は、Web Apps から見たサーバー応答時間とは必ずしも一致しません。 この動作は、Application Insights では、要求がユーザー アプリケーションに実際に到達した場合の期間のみがカウントされるためです。 WebServer で要求の送信が滞った場合やキューに入れられた場合、その待機時間は、Web Apps のメトリックに含まれますが Application Insights のメトリックには含まれません。
トラブルシューティング
アプリケーション ホストとインジェスト サービスの間の接続をテストする
Application Insights SDK とエージェントからテレメトリが送信され、インジェスト エンドポイントへの REST 呼び出しとして取り込まれます。 Web サーバーまたはアプリケーション ホスト マシンからインジェスト サービス エンドポイントへの接続は、PowerShell の生の REST クライアントを使用するか、curl コマンドを使用してテストできます。 「Azure Monitor Application Insights でアプリケーション テレメトリが見つからない場合のトラブルシューティング 」をご覧ください。
Note
App Service で ASP.NET Core
ランタイムを使って Web アプリを作成すると、1 つの静的な HTML ページがスターター Web サイトとしてデプロイされます。 既定のテンプレートで問題のトラブルシューティングを行うことはお勧め "しません"。 問題のトラブルシューティングを行う前に、アプリケーションをデプロイしてください。
テレメトリの欠如
Windows
ApplicationInsightsAgent_EXTENSION_VERSION
アプリ設定が ~2
の値に設定されていることを確認します。
https://yoursitename.scm.azurewebsites.net/ApplicationInsights
を参照します。
[Application Insights Extension Status] (Application Insights 拡張機能の状態) が Pre-Installed Site Extension, version 2.8.x.xxxx, is running.
であることを確認します
実行されていない場合は、Application Insights の監視の有効化 に関するセクションの手順のようにします。
状態ソースが存在し、Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.json
のようになっていることを確認します。
似た値が存在しない場合は、アプリケーションが現在実行されていないか、サポートされていないことを意味します。 アプリケーションが実行されていることを確認するには、手動でアプリケーションの URL/アプリケーション エンドポイントにアクセスしてみてください。これで、ランタイム情報を使用できるようになります。
IKeyExists が True
であることを確認します。 False
の場合は、ご自身の ikey GUID を指定した APPINSIGHTS_INSTRUMENTATIONKEY
と APPLICATIONINSIGHTS_CONNECTION_STRING
をアプリケーション設定に追加します。
アプリケーションが Application Insights パッケージを参照している場合、App Service 統合の有効化が行われず、データが Application Insights に表示されない場合があります。 たとえば、ASP.NET Core SDK を使用してアプリを以前にインストルメント化していたり、インストルメント化を試みていたりした場合などです。 この問題を解決するには、Azure portal で [Application Insights SDK との相互運用] を有効にします。
これで、Application Insights SDK がもともと使われていたか、使われようとしていた場合でも、コードレス アプローチを使ってデータが送信されます。
重要
アプリケーションで Application Insights SDK を使ってテレメトリが送信されていた場合、テレメトリは無効になります。 つまり、カスタム テレメトリ (Track*()
メソッドなど) とカスタム設定 (サンプリングなど) は無効になります。
Linux
ApplicationInsightsAgent_EXTENSION_VERSION
アプリ設定が ~3
の値に設定されていることを確認します。
https://your site name.scm.azurewebsites.net/ApplicationInsights
を参照します。
このサイトで、次のことを確認します。
状態ソースが存在し、Status source /var/log/applicationinsights/status_abcde1234567_89_0.json
のようになっている。
値 Auto-Instrumentation enabled successfully
が表示されている。 似た値が存在しない場合は、アプリケーションが実行されていないか、サポートされていないことを意味します。 アプリケーションが実行されていることを確認するには、手動でアプリケーションの URL/アプリケーション エンドポイントにアクセスしてみてください。これで、ランタイム情報を使用できるようになります。
IKeyExists が True
。 False
の場合は、ご自身の ikey GUID を指定した APPINSIGHTS_INSTRUMENTATIONKEY
と APPLICATIONINSIGHTS_CONNECTION_STRING
をアプリケーション設定に追加します。
Web アプリでデプロイされた既定の Web サイトでは、クライアント側の自動監視はサポートされません
App Service で ASP.NET Core ランタイムを使って Web アプリを作成すると、1 つの静的な HTML ページがスターター Web サイトとしてデプロイされます。 静的な Web ページには、IIS の ASP.NET で管理された Web パーツも読み込まれます。 この動作により、サーバー側のコードレス監視をテストすることはできますが、クライアント側の自動監視はサポートされません。
App Service Web アプリで ASP.NET Core のサーバーとクライアント側のコードレス監視をテストする場合は、ASP.NET Core Web アプリの作成 に関する公式のガイドに従うことをお勧めします。 その後、現在の記事の手順を使用して監視を有効にします。
PHP および WordPress はサポートされていない
PHP および WordPress サイトはサポートされていません。 現時点では、これらのワークロードをサーバー側で監視するために正式にサポートされている SDK/エージェントはありません。 PHP または WordPress サイトでクライアント側のトランザクションを追跡するには、JavaScript SDK を使用してクライアント側の JavaScript を Web ページに追加します。
次の表は、これらの値の意味、その根本的な原因、推奨される修正について詳細に説明したものです。
問題の値
説明
Fix
AppAlreadyInstrumented:true
この値は、拡張機能がアプリケーションにすでに存在する SDK の一部の側面を検出し、バックオフすることを示します。 この値は、Microsoft.ApplicationInsights.AspNetCore
または Microsoft.ApplicationInsights
への参照により発生する可能性があります。
これらの参照を削除します。 これらの参照の一部は、特定の Visual Studio テンプレートから既定で追加されます。 古いバージョンの Visual Studio は Microsoft.ApplicationInsights
を参照します。
AppAlreadyInstrumented:true
この値は、以前のデプロイのアプリ フォルダーに Microsoft.ApplicationsInsights
DLL が存在する場合にも発生する可能性があります。
アプリ フォルダーをクリーンし、これらの DLL が削除されたことを確認してください。 ローカル アプリの bin ディレクトリと App Service の wwwroot ディレクトリの両方を確認します。 (App Service Web アプリの wwwroot ディレクトリを調べるには、次のように選びます: [高度なツール (Kudu)] >[デバッグ コンソール] >[CMD] >home\site\wwwroot )。
IKeyExists:false
この値は、インストルメンテーション キーがアプリ設定 APPINSIGHTS_INSTRUMENTATIONKEY
に存在しないことを示します。 考えられる原因は、誤って値を削除したり、オートメーション スクリプトで値を設定し忘れたりした場合などです。
設定が App Service アプリケーション設定に存在することを確認します。
Note
App Service で ASP.NET
ランタイムを使って Web アプリを作成すると、1 つの静的な HTML ページがスターター Web サイトとしてデプロイされます。 既定のテンプレートで問題のトラブルシューティングを行うことはお勧め "しません"。 問題のトラブルシューティングを行う前に、アプリケーションをデプロイしてください。
テレメトリの欠如
ApplicationInsightsAgent_EXTENSION_VERSION
アプリ設定が ~2
の値に設定されていることを確認します。
https://yoursitename.scm.azurewebsites.net/ApplicationInsights
を参照します。
Application Insights Extension Status
が Pre-Installed Site Extension, version 2.8.x.xxxx
であり、動作していることを確認します。
動作していない場合は、Application Insights の監視を有効にする 手順を実行します。
状態ソースが存在し、Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.json
のようになっていることを確認します。
似た値が存在しない場合は、アプリケーションが現在実行されていないか、サポートされていないことを意味します。 アプリケーションが実行されていることを確認するには、手動でアプリケーションの URL/アプリケーション エンドポイントにアクセスしてみてください。これで、ランタイム情報を使用できるようになります。
IKeyExists
が true
であることを確認します。
そうでない場合は、お使いのインストルメンテーション キー GUID を使って APPINSIGHTS_INSTRUMENTATIONKEY
と APPLICATIONINSIGHTS_CONNECTION_STRING
をアプリケーション設定に追加します。
AppAlreadyInstrumented
、AppContainsDiagnosticSourceAssembly
、および AppContainsAspNetTelemetryCorrelationAssembly
のエントリがないことを確認します。
これらのエントリのいずれかが存在する場合は、アプリケーションから Microsoft.ApplicationInsights
、System.Diagnostics.DiagnosticSource
、および Microsoft.AspNet.TelemetryCorrelation
のパッケージを削除します。
Web アプリでデプロイされた既定の Web サイトでは、クライアント側の自動監視はサポートされません
App Service で ASP.NET ランタイムを使って Web アプリを作成すると、1 つの静的な HTML ページがスターター Web サイトとしてデプロイされます。 静的な Web ページには、IIS の ASP.NET で管理された Web パーツも読み込まれます。 このページでは、サーバー側のコードなし監視をテストすることはできますが、クライアント側の自動監視はサポートされません。
App Service Web アプリで ASP.NET のサーバーとクライアント側のコードレス監視をテストする場合は、ASP.NET Framework Web アプリの作成 に関する公式のガイドに従うことをお勧めします。 その後、現在の記事の手順を使用して監視を有効にします。
APPINSIGHTS_JAVASCRIPT_ENABLED と urlCompression はサポートされていません
コンテンツがエンコードされている場合に APPINSIGHTS_JAVASCRIPT_ENABLED=true
を使うと、次のようなエラーが発生する可能性があります。
500 URL 書き換えエラー。
500.53 URL 書き換えモジュール エラー。"HTTP 応答のコンテンツがエンコード ('gzip') されている場合、アウトバウンド書き換えルールを適用することはできません" というメッセージを伴います。
エラーが発生するのは、APPINSIGHTS_JAVASCRIPT_ENABLED
アプリケーション設定が true
に設定されており、それと同時にコンテンツ エンコードも存在するためです。 このシナリオはまだサポートされていません。 回避策は、アプリケーション設定から APPINSIGHTS_JAVASCRIPT_ENABLED
を削除することです。 残念ながら、クライアントとブラウザー側の JavaScript インストルメンテーションが必要な場合は、Web ページにも手動の SDK 参照が必要です。 JavaScript SDK での手動のインストルメンテーションに関する手順 に従ってください。
Application Insights エージェントと拡張機能の最新情報については、リリース ノート のページを参照してください。
PHP および WordPress はサポートされていない
PHP および WordPress サイトはサポートされていません。 現時点では、これらのワークロードをサーバー側で監視するために正式にサポートされている SDK/エージェントはありません。 PHP または WordPress サイトでクライアント側のトランザクションを追跡するには、JavaScript SDK を使用してクライアント側の JavaScript を Web ページに追加します。
次の表は、これらの値の意味、その根本的な原因、推奨される修正について詳細に説明したものです。
問題の値
説明
Fix
AppAlreadyInstrumented:true
この値は、拡張機能がアプリケーションにすでに存在する SDK の一部の側面を検出し、バックオフすることを示します。 この値は、System.Diagnostics.DiagnosticSource
、Microsoft.AspNet.TelemetryCorrelation
または Microsoft.ApplicationInsights
への参照により発生する可能性があります。
これらの参照を削除します。 これらの参照の一部は、特定の Visual Studio テンプレートから既定で追加されます。 以前のバージョンの Visual Studio では、Microsoft.ApplicationInsights
への参照が追加されている可能性があります。
AppAlreadyInstrumented:true
この値は、以前のデプロイのアプリ フォルダーに前述の DLL が存在する場合にも発生する可能性があります。
アプリ フォルダーをクリーンし、これらの DLL が削除されたことを確認してください。 ローカル アプリの bin ディレクトリと App Service リソースの wwwroot ディレクトリの両方を確認します。 App Service Web アプリの wwwroot ディレクトリを調べるには、[高度なツール (Kudu)] >[デバッグ コンソール] >[CMD] >home\site\wwwroot を選びます。
AppContainsAspNetTelemetryCorrelationAssembly: true
この値は、拡張機能がアプリケーション内の Microsoft.AspNet.TelemetryCorrelation
への参照を検出し、バックオフすることを示します。
参照を削除します。
AppContainsDiagnosticSourceAssembly**:true
この値は、拡張機能がアプリケーション内の System.Diagnostics.DiagnosticSource
への参照を検出し、バックオフすることを示します。
ASP.NET の場合は、参照を削除します。
IKeyExists:false
この値は、インストルメンテーション キーがアプリ設定 APPINSIGHTS_INSTRUMENTATIONKEY
に存在しないことを示します。 原因として、誤って値を削除した場合、または Automation スクリプトで値を設定し忘れた場合が考えられます。
設定が App Service アプリケーション設定に存在することを確認します。
2.8.44 アップグレード後の System.IO.FileNotFoundException
2.8.44 バージョンの自動インストルメンテーションでは、Application Insights SDK が 2.20.0 にアップグレードされます。 Application Insights SDK には、System.Runtime.CompilerServices.Unsafe.dll
から System.Diagnostics.DiagnosticSource.dll
への間接的な参照があります。 アプリケーションに System.Runtime.CompilerServices.Unsafe.dll
へのバインド リダイレクト があり、このライブラリがアプリケーション フォルダーに存在しない場合、System.IO.FileNotFoundException
がスローされる可能性があります。
この問題を解決するには、System.Runtime.CompilerServices.Unsafe.dll
へのバインド リダイレクト エントリを web.config ファイルから削除します。 アプリケーションで System.Runtime.CompilerServices.Unsafe.dll
を使用する場合は、バインド リダイレクトを次のように設定します。
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
</dependentAssembly>
一時的な回避策として、アプリ設定 ApplicationInsightsAgent_EXTENSION_VERSION
を 2.8.37
の値に設定できます。 この設定により、App Service で古い Application Insights 拡張機能の使用がトリガーされます。 一時的な軽減策は、暫定的な処置としてのみ使用するようにしてください。
テレメトリの欠如
ApplicationInsightsAgent_EXTENSION_VERSION
アプリ設定が、Windows では ~2
、Linux では ~3
の値に設定されていることを確認します
ログ ファイルを調べて、エージェントが正常に開始されたことを確認します。https://yoursitename.scm.azurewebsites.net/
でルート ディレクトリへの SSH の変更の下を見ると、ログ ファイルは LogFiles/ApplicationInsights の下にあります。
Java アプリのアプリケーション監視を有効にした後、ライブ メトリックを確認すると、エージェントが動作していることを検証できます。App Service にアプリをデプロイする前でも、環境からのいくつかの要求が表示されます。 テレメトリの完全なセットは、アプリがデプロイされて実行している場合にのみ利用可能であることに注意してください。
エラーが表示されず、テレメトリもない場合は、APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL
環境変数を debug
に設定します。
テレメトリの欠如
Windows
ApplicationInsightsAgent_EXTENSION_VERSION
アプリ設定が ~2
の値に設定されていることを確認します。
https://yoursitename.scm.azurewebsites.net/ApplicationInsights
を参照します。
Application Insights Extension Status
が Pre-Installed Site Extension, version 2.8.x.xxxx, is running.
であることを確認します
実行中ではない場合は、Application Insights の監視を有効にする手順 を実行します。
D:\local\Temp\status.json に移動して、status.json を開きます。
SDKPresent
が false に設定され、AgentInitializedSuccessfully
が true に設定され、IKey
に有効なキーが設定されていることを確認します。
JSON ファイルの例:
"AppType":"node.js",
"MachineName":"c89d3a6d0357",
"PID":"47",
"AgentInitializedSuccessfully":true,
"SDKPresent":false,
"IKey":"00000000-0000-0000-0000-000000000000",
"SdkVersion":"1.8.10"
SDKPresent
が true の場合、拡張機能がアプリケーションにすでに存在する SDK の一部の側面を検出し、バックオフすることを意味します。
Linux
ApplicationInsightsAgent_EXTENSION_VERSION
アプリ設定が ~3
の値に設定されていることを確認します。
/var/log/applicationinsights/ に移動して、status.json を開きます。
SDKPresent
が false に設定され、AgentInitializedSuccessfully
が true に設定され、IKey
に有効なキーが設定されていることを確認します。
JSON ファイルの例:
"AppType":"node.js",
"MachineName":"c89d3a6d0357",
"PID":"47",
"AgentInitializedSuccessfully":true,
"SDKPresent":false,
"IKey":"00000000-0000-0000-0000-000000000000",
"SdkVersion":"1.8.10"
SDKPresent
が true の場合、拡張機能がアプリケーションにすでに存在する SDK の一部の側面を検出し、バックオフすることを意味します。
テレメトリの重複
コードで OpenTelemetry の手動インストルメンテーション (Azure Monitor OpenTelemetry Distro や Azure Monitor OpenTelemetry Exporter など) を使用していない場合にのみ、App Service で自動インストルメンテーションを使用してください。
手動インストルメンテーションの上に自動インストルメンテーションを使用すると、テレメトリが重複し、コストが増加する可能性があります。 App Service OpenTelemetry の自動インストルメンテーションを使用するには、まずコードから OpenTelemetry の手動インストルメンテーションを削除します。
テレメトリの欠如
テレメトリが欠如している場合は、次の手順に従って、自動インストルメンテーションが正しく有効になっていることを確認します。
App Service リソースの Application Insights エクスペリエンスで自動インストルメンテーションが有効になっていることを確認します。
ApplicationInsightsAgent_EXTENSION_VERSION
アプリ設定が ~3
値に設定されていること、および APPLICATIONINSIGHTS_CONNECTION_STRING
が適切な Application Insights リソースを指していることを確認します。
自動インストルメンテーション診断と状態ログを確認します。
a. /var/log/applicationinsights/ に移動して、status_*.json を開きます。
b. AgentInitializedSuccessfully
が true に設定され、IKey
に有効なキーが設定されていることを確認します。
JSON ファイルの例:
"AgentInitializedSuccessfully":true,
"AppType":"python",
"MachineName":"c89d3a6d0357",
"PID":"47",
"IKey":"00000000-0000-0000-0000-000000000000",
"SdkVersion":"1.0.0"
同じフォルダー内の applicationinsights-extension.log
ファイルには、その他の有用な診断結果が表示される場合があります。
Django アプリ
アプリで Django を使用していて、起動に失敗するか、正しくない設定を使用している場合は、DJANGO_SETTINGS_MODULE
環境変数を必ず設定してください。 詳細については、「Django インストルメンテーション 」セクションを参照してください。
最新の更新プログラムとバグ修正については、リリース ノートを参照してください 。
次のステップ