Azure App Service のアプリケーションの監視の概要
Azure App Service 上で実行されている ASP.NET、ASP.NET Core、Java、Node.js に基づいて Web アプリケーションで監視を有効にすることが、これまでになく簡単になりました。 以前は手動でアプリをインストルメント化する必要がありましたが、現在は、最新の拡張機能とエージェントが既定で App Service イメージに組み込まれるようになりました。
Application Insights を有効にする
App Service でホストされているアプリケーションの監視を有効にする方法は 2 つあります。
自動インストルメンテーションのアプリケーション監視 (ApplicationInsightsAgent)。
有効にするにはこの方法が最も簡単であり、コードの変更や高度な構成は不要です。 多くの場合、これは "ランタイム" 監視と呼ばれます。 App Service では、少なくともこのレベルの監視を有効にすることをお勧めします。 特定のシナリオに基づいて、手動インストルメンテーションによる高度な監視が必要かどうかを評価できます。
自動インストルメンテーションを有効にすると、Application Insights が既定の設定で有効になります (サンプリングも含まれます)。 Azure AppInsights で、サンプリングに [すべてのデータ (100%)] を設定した場合でも、この設定は無視されます。
サポートされている自動インストルメンテーション シナリオの全一覧については、「サポートされている環境、言語、リソース プロバイダー」を参照してください。
自動インストルメンテーションの監視では次のプラットフォームがサポートされています。
Application Insights SDK をインストールし、コードを介して手動でアプリケーションをインストルメント化する方法。
このアプローチはカスタマイズできる部分がはるかに多いのですが、.NET Core、.NET、Node.js、Python 用 SDK と、Java 用のスタンドアロンのエージェントの各アプローチが必要です。 また、この方法では、パッケージの最新バージョンへの更新を自分で管理する必要があります。
自動インストルメンテーションの監視で既定ではキャプチャされないイベントまたは依存関係を追跡するために、カスタム API の呼び出しを行う必要がある場合は、この方法を使う必要があります。 詳しくは、「カスタムのイベントとメトリックのための Application Insights API」をご覧ください。
自動インストルメンテーションの監視と手動の SDK ベースのインストルメンテーションの両方が検出された場合、.NET では手動のインストルメンテーション設定のみが使われるのに対し、Java では自動インストルメンテーションのみがテレメトリを出力します。 これは、重複するデータが送信されないようにするためです。
Note
スナップショット デバッガーと Profiler は、.NET と .NET Core でのみ使用できます。
リリース ノート
このセクションには、Application Insights を使用したランタイム インストルメンテーションのための Azure Web アプリ拡張機能のリリース ノートが含まれています。
現在使用している拡張機能のバージョンを見つけるには、https://<yoursitename>.scm.azurewebsites.net/ApplicationInsights
に移動します。
リリース ノート
2.8.44
- .NET/.NET Core: ApplicationInsights .NET SDK を 2.20.1 に更新。
2.8.43
- .NET/.NET Core、Java、Node.js パッケージを異なる App Service Windows サイト拡張機能に分離。
2.8.42
- JAVA 拡張機能: 2.5.1 から Java Agent 3.2.0 にアップグレード。
- Node.js 拡張機能: AI SDK を 2.1.7 から 2.1.8 に更新。 ユーザーおよびシステム割り当ての Azure AD マネージド ID のサポートを追加。
- .NET Core: .NET Startup Hook を利用した .NET 6.0 サポートと自己完結型展開を追加。
2.8.41
- Node.js 拡張機能: AI SDK を 2.1.3 から 2.1.7 に更新。
- .NET Core: サポート対象外のバージョン (2.1) を削除。 サポートされているバージョンは 3.1 と 5.0 です。
2.8.40
- JAVA 拡張機能: 3.0.2 から Java Agent 3.1.1 (GA) にアップグレード。
- Node.js 拡張機能: AI SDK を 1.8.8 から 2.1.3 に更新。
2.8.39
- .NET Core: .NET Core 5.0 サポートを追加。
2.8.38
- JAVA 拡張機能: 2.5.1 から Java Agent 3.0.2 (GA) へのアップグレード。
- Node.js 拡張機能: AI SDK を 1.8.7 から 1.8.8 に更新。
- .NET Core: サポート対象外のバージョン (2.0、2.2、3.0) の削除。 サポートされているバージョンは 2.1 と 3.1 です。
2.8.37
- AppSvc Windows 拡張機能: .NET Core を System.Diagnostics.DiagnosticSource.dll のすべてのバージョンで動作するようにしました。
2.8.36
- AppSvc Windows 拡張機能: .NET Core での AI SDK との相互操作を有効化。
2.8.35
- AppSvc Windows 拡張機能: .NET Core 3.1 サポートの追加。
2.8.33
- .NET、.NET Core、Java、Node.js エージェント、および Windows 拡張機能:ソブリン クラウドのサポート。 接続文字列を使用して、ソブリン クラウドにデータを送信できます。
2.8.31
- ASP.NET Core エージェントで、Application Insights SDK に関する問題を修正しました。 正しくないバージョンの
System.Diagnostics.DiagnosticSource.dll
がランタイムによって読み込まれた場合、コードレス拡張機能ではアプリケーションをクラッシュさせず、バックオフします。 この問題を修正するには、お客様は bin フォルダーからSystem.Diagnostics.DiagnosticSource.dll
を削除するか、ApplicationInsightsAgent_EXTENSIONVERSION=2.8.24
を設定して以前のバージョンの拡張機能を使用する必要があります。 そうでない場合、アプリケーションの監視は有効になりません。
2.8.26
- ASP.NET Core エージェント:更新された Application Insights SDK に関連する問題の修正。 ApplicationInsights.dll が bin フォルダーに既に存在する場合、エージェントでは
AiHostingStartup
を読み込もうとしません。 これにより、Assembly<AiHostingStartup>.GetTypes() によるリフレクションに関連する問題が解決されます。 - 既知の問題:別のバージョンの
DiagnosticSource
dll が読み込まれると、例外System.IO.FileLoadException: Could not load file or assembly 'System.Diagnostics.DiagnosticSource, Version=4.0.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
がスローされることがあります。 これは、System.Diagnostics.DiagnosticSource.dll
が publish フォルダーに存在する場合などに発生することがあります。 軽減策として、App Services で次のようにアプリ設定を行い、以前のバージョンの拡張機能を使用します。ApplicationInsightsAgent_EXTENSIONVERSION=2.8.24
2.8.24
- 2\.8.21 の再パッケージ化バージョン。
2.8.23
- ASP.NET Core 3.0 のコード不要の監視がサポート対象に追加されました。
- ランタイム バージョン 2.1、2.2、3.0 に関して、ASP.NET Core SDK が 2.8.0 に更新されました。 .NET Core 2.0 をターゲットとするアプリでは、引き続き 2.1.1 の SDK が使用されます。
2.8.14
- .NET Core 2.1 と 2.2 をターゲットとするアプリに関して、ASP.NET Core SDK のバージョンが 2.3.0 から最新 (2.6.1) に更新されました。 .NET Core 2.0 をターゲットとするアプリでは、引き続き 2.1.1 の SDK が使用されます。
2.8.12
ASP.NET Core 2.2 アプリのサポート。
アプリケーションが既に SDK を使用してインストルメント化されている場合でも SDK のインジェクションが発生する原因となっていた ASP.NET Core 拡張機能のバグを修正。 2\.1 および 2.2 アプリの場合、アプリケーション フォルダーに ApplicationInsights.dll が存在すると、拡張機能がバックオフするようになりました。 2\.0 アプリの場合は、ApplicationInsights が
UseApplicationInsights()
呼び出しで有効になっている場合にのみ、拡張機能がバックオフします。ASP.NET Core アプリの不完全な HTML 応答の完全な修正。 この修正は、.NET Core 2.2 アプリでも機能するように拡張されました。
ASP.NET Core アプリの JavaScript インジェクションを無効にするためのサポートを追加 (
APPINSIGHTS_JAVASCRIPT_ENABLED=false appsetting
)。 ASP.NET Core の場合、明示的に無効にしない限り、JavaScript インジェクションは既定で "オプトアウト" モードになっています。 (既定の設定は、現在の動作を保持するためのものです。)ikey が存在しない場合でもインジェクションが発生する原因となっていた ASP.NET Core 拡張機能のバグを修正。
テレメトリで正しくない SDK バージョンの原因となっていた SDK バージョン プレフィックス ロジックのバグを修正。
テレメトリの収集方法を識別するため、ASP.NET Core アプリの SDK バージョン プレフィックスを追加。
プレインストールされている拡張機能のバージョンを正しく表示するため、SCM- ApplicationInsights ページを修正。
2.8.10
- ASP.NET Core アプリの不完全な HTML 応答の修正。
よく寄せられる質問
このセクションでは、一般的な質問への回答を示します。
Application Insights によってどのような変更がプロジェクトに加えられますか?
詳細は、プロジェクトの種類によって異なります。 Web アプリケーションの場合:
- 次のファイルがプロジェクトに追加されます。
- ApplicationInsights.config
- ai.js
- これらの NuGet パッケージをインストールします。
- Application Insights API: コア API
- Application Insights API for Web Applications: サーバーからテレメトリを送信するために使用されます
- Application Insights API for JavaScript Applications: クライアントからテレメトリを送信するために使用されます
- パッケージには、これらのアセンブリが含まれます。
- Microsoft.ApplicationInsights
- Microsoft.ApplicationInsights.Platform
- 次の項目を挿入します。
- web.config
- packages.config
- (新しいプロジェクトの場合のみ。既存のプロジェクトへは Application Insights を手動で追加します)。プロジェクトを Application Insights リソース ID で初期化するためのスニペットを、クライアントとサーバーのコードに挿入します。 たとえば、MVC アプリでは、コードをメイン ページの Views/Shared/_Layout.cshtml に挿入します。
次のステップ
App Service で実行されている .NET Core、.NET、Java、または Nodejs アプリケーションに対して自動インストルメンテーションのアプリケーション監視を有効にする方法を理解する。