Application Insights SDK をインストールし、構成し、初期化する

完了

Application Insights SDK を使用するには、パッケージまたはライブラリを参照し、構成とコードをアプリに追加する必要があります。

動画共有アプリの例では、Application Insights SDK を使用し、アプリケーションに関してさらに多くの情報を得ることが利害関係者に許可されています。

このユニットでは、Application Insights SDK とそれをアプリに追加する方法について学習します。

Application Insights SDK とは何か。

Application Insights SDK は、アプリケーションのコードで参照し、使用するソフトウェア パッケージです。 この SDK は Web アプリケーション フレームワークに接続されてアプリを支援し、HTTP 要求に関するデータ、システム メトリック、サービス依存関係、例外など、詳しいランタイム情報を自動的にキャプチャします。 アプリのビジネスに固有とナルイベントやメトリックに関する情報を記録するコードも追加できます。

SDK によってこのテレメトリ データが Azure の Application Insights リソースに送信されます。 Application Insights サービスによってデータが処理され、クエリや視覚化を簡単にする形式に集約されます。

SDK の使用は Web アプリケーションに限定されません。 テレメトリを記録するあらゆる種類のサービスやコンポーネントをインストルメント化できます。ただし、SDK で自動的に記録できるデータの大半は Web アプリに固有です。 また、SDK は Azure にデプロイされるアプリケーションに限定されません。

Application Insights のアーキテクチャ。

SDK をインストールする理由とは

Application Insights SDK には次のような利点があります。

  • 包括的なデータ収集: ユーザー リテンション、ユニーク ユーザー、ユニーク セッションなどのデータは、Application Insights SDK の使用時にのみ、Application Insights で利用できます。
  • カスタム テレメトリ: SDK を使用すると、アプリやそのビジネス ドメインに固有のイベントやメトリックをキャプチャするコードをアプリケーションに追加できます。
  • 高度な機能: Application Insights の一部の機能は、SDK を使用する場合にのみ利用できます。 たとえば、Live Metrics ストリームでは、ユーザーはリアルタイムでメトリックを監視したり、ドリルダウンしたりできます。
  • Visual Studio のローカル テレメトリ: SDK でインストルメント化されたアプリケーションのテレメトリ データは、デバッガーでアプリを実行するとき、Visual Studio でローカル表示できます。

Azure App Service では、SDK をコードに追加しなくても、アプリケーションの Application Insights を有効にできます。 ランタイム インストルメンテーション と呼ばれるこの機能は、SDK のように分析情報をアプリに提供することはありません。 ランタイム インストルメンテーションは Azure 固有の機能であり、Windows ベースの Web アプリでのみ利用できます。 SDK は、あらゆる場所で実行されているあらゆるアプリケーション、サービス、コンポーネントをインストルメント化する目的で使用できます。

分析情報のカスタマイズ

コードで SDK を構成し、初期化すると、要求との応答のメトリック、HTTP キューの長さ、CPU 使用率やメモリ使用率といったパフォーマンス カウンターなど、あらゆる Web アプリケーションに共通のイベントとメトリックが追跡されます。 ただし、ほとんどのアプリケーションにドメイン固有のイベントとメトリックがあり、開発者はそれに関心があります。 動画共有アプリの場合、顧客がどのように動画を利用しているのか知ることができると有益です。 次に例を示します。

  • ユーザーが動画を最後まで見る頻度はどのくらいか。
  • 最後まで見ないで動画を止める頻度はどのくらいか。
  • バッファリングが視聴の邪魔になる頻度はどのくらいか。
  • 平均では、1 時間ごとにどのくらいの動画が同時に視聴されているか。

SDK を使用してイベントを Application Insights に記録するコードをアプリに追加できます。 それらのイベントを監視し、それに関する要約を Application Insights で提供できます。

SDK を使用する方法

Azure に Web アプリと Application Insights リソースを既に置いている場合、Web アプリ プロジェクトに SDK をインストールするには、次を行う必要があります。

  1. アプリ内で SDK を参照する。
  2. Application Insights リソースのインストルメンテーション キーでアプリを構成する。
  3. コード内の SDK を初期化し、テレメトリの生成を開始する。

厳密な手順は、使用しているツール、プログラミング言語、アプリケーション フレームワークによって異なります。 このモジュールでは、コマンド ラインから ASP.NET Core アプリケーションに対して次の手順を行います。

SDK パッケージをインストールする

次の dotnet コマンドによって、コマンド ラインから Microsoft.ApplicationInsights.AspNetCore NuGet パッケージの参照が ASP.NET Core アプリに追加されます。 このパッケージには、ASP.NET Core アプリケーションからの使用を簡単にする、基本の Application Insights SDK とライブラリが含まれます。

dotnet add package Microsoft.ApplicationInsights.AspNetCore

インストルメンテーション キーを構成する

Azure の Application Insights リソースはすべて、GUID インストルメンテーション キー によって一意に区別されます。 SDK を使用してテレメトリ データを送信するアプリケーションは、データの送信先となる Application Insights リソースのインストルメンテーション キーで構成する必要があります。

Azure portal では、リソースの概要パネルで、Application Insights リソースのインストルメンテーション キーを見つけることができます。 Azure CLI から、次のコマンドを使用して取得することもできます。

az resource show \
    --resource-group <resource_group_name> \
    --name <resource_name> \
    --resource-type "Microsoft.Insights/components" \
    --query properties.InstrumentationKey

キーが手に入ったら、SDK の ASP.NET Core バージョンでは 2 つの構成方法がサポートされます。

  • 構成ファイル: アプリケーションの appsettings.json ファイルで、ApplicationInsights という名前のセクションを作成し、InstrumentationKey という名前の構成値を新しく追加します。

    {
      "ApplicationInsights": {
        "InstrumentationKey": "11111111-2222-3333-4444-555555555555"
      }
    }
    
  • 環境変数: キーの値が含まれる APPINSIGHTS_INSTRUMENTATIONKEY という名前の環境変数を作成します。 この値は、アプリケーションの起動時、環境に存在する必要があります。 Azure App Service にデプロイされているアプリの場合、アプリケーション設定を構成して環境変数を作成します。 App Service Web アプリでランタイム インストルメンテーションを有効にすると、Azure によって正しい値で設定が自動的に作成されます。

ベスト プラクティスは、アプリケーションを実行する環境ごとに異なるインストルメンテーション キーと Application Insights リソースを使用することです。これにより、関連のないテレメトリがグループとしてまとめられることが回避されます。 そのような理由から、多くの場合、環境変数を使用し、アプリのデプロイ環境の設定でこの構成を含める方法が簡単です。

コードの SDK を初期化する

最後に、Web アプリで Application Insights を初期化する必要があります。

Program.csCreateWebHostBuilder() を呼び出すと、ASP.NET Core アプリケーションが起動します。 アプリケーションとランタイムのさまざまな面は、Application Insights など、追加のメソッド呼び出しをここでつなげることで構成できます。 AddApplicationInsightsTelemetry() の呼び出しにより、構成からインストルメンテーション キーが読み込まれ、さまざまなアプリケーション イベントに関するテレメトリを自動生成するように SDK がトリガーされ、カスタムのイベントとメトリックを追跡するためにコントローラーや他のコンポーネントから TelemetryClient オブジェクトへのアクセスが有効になります。

Application Insights を初期化すると、Program.cs の関連セクションは次のようになります。

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .AddApplicationInisghtsTelemetry()
        .UseStartup<Startup>();