Application Insightsを使ったアプリケーション監視
WebアプリやWeb API, サーバーレスアーキテクチャなどの利用状況,状態を知るのは重要.
どれだけリクエストが来ていて,サーバーのCPU使用率がいくつで,どれだけ失敗しているかなど,データをとって分析して改善,改良する.
そのためのサービスがAzureに用意されていて,それがApplication Insights.
これを使うととても簡単にWebアプリケーションなどのパフォーマンス,利用状況を監視することができる.
今回はすでにあるApp Serviceに対して,Application Insightsを有効にする手順をメモとして残す.
Azureポータルで設定する
Azureポータルから,Application Insightsを組み込みたいリソースのページを開く.
今回対象とするのはパスワードをランダムに生成する自作Web APIで名前はPasswordGenerateService.
すると,Application Insightsというパネルがあるので,クリック.
次のページで有効にするボタンを押す.
新しいリソースを追加する.場所は東日本にした.
下にスクロールすると,アプリケーションのインストルメンテーションという領域があるので,ここで必要な設定をオン・オフする.
最後に「適用」を押して,アプリが再起動される.しばらく待つ.
Application Insightsリソースを開いてみると,以下のようにアプリケーションがApplication Insightsに接続されていることが表示されます.
これでApplication Insightsが有効になり,サーバーの状態をダッシュボードでグラフで確認することができるようになる.
でも,ダッシュボードグラフはいくら待っても何の変化もない.
なぜだろう.
今回のアプリは.NET Core 3.1 previewを使ったWeb API.
以下のドキュメントによると,3.1はサポートされていないので,手動で導入する必要があるとのこと.
次のバージョンの .NET Core がサポートされます。 ASP.NET Core 2.0、ASP.NET Core 2.1、ASP.NET Core 2.2
Visual Studioにおける手動での導入
手動導入の方法の中で一番お手軽なのが,Visual Studioを使った方法.
[プロジェクト] > [Application Insights Telemetry の追加] を選択
「Get Started」を押す.
Azure Portalで作成したApplication Insightsリソースを選択して「Register」を押す.
完了すると,以下の画面が表示される.
これで,appsettings.json
ファイルに "InstrumentationKey": ****-****.....
というApplication Insightsに接続するためのキーが記述される.
アプリケーションはこのキーを使用してApplication Insightsに接続してデータを送る.
NugetからMicrosoft.ApplicationInsights.AspNetCore
をインストールする.
Startup.csのConfigureServicesメソッドに以下を追加する.
services.AddApplicationInsightsTelemetry();
Visual Studioを使わずに導入する
Visual Studioを使わない場合は,appsettings.jsonを直接編集する.
Application Insightsリソースのページの右上にインストルメンテーションキーがあるのでコピーする.
以下の形式で***の部分にAzureポータルでコピーしたインストルメンテーションキーを貼り付ける.
"ApplicationInsights": { "InstrumentationKey": "*********-****-****-****-************" }
Startup.csのConfigureServicesへの変更はもちろんVisual Studioのときと同じ.
使ってみる
ここまでの設定でApplication Insightsが有効になり,アプリケーション実行中はアプリケーションの様々な情報がApplication Insightsに送られていくようになる.
これはApplication Insightsに接続さえできればAzureにデプロイされていようがPC上でデバッグ実行中だろうが動作する.
Azure PortalでApplication Insightsリソースのページを開き,ライブメトリックストリームという機能を使うと,リアルタイムでアプリケーションのアクセス状態がわかる.
このライブメトリックストリームを開きながら,アプリケーションを実行してリクエストを送ると以下のようにリアルタイムにグラフが変化する.