Application Insights で ASP.NET 5 アプリケーションをサポート

このポストは、4 月 30 日に投稿された Application Insights now supports ASP.NET 5 applications の翻訳です。

ASP.NET 5 (英語) Web アプリケーション向け Application Insights の最初のプレビュー版がリリースされました。NuGet (英語) からパッケージを入手すると、アプリケーションのサーバー要求や例外を監視し、エンド ユーザーの情報やブラウザー ページのパフォーマンスを収集することができます。

この入門ガイド (英語) に従って、ASP.NET 5 アプリケーションを Application Insights に組み込んでください。

ASP.NET アプリケーション モデルは、次世代 ASP.NET の登場と共に大きく変化しました。とりわけ大きな変化の 1 つが、今やトップクラスの機能となった依存関係挿入 (英語) です。この機能により、ASP.NET 5 Web アプリケーションで SDK を使用してテレメトリ データを扱う方法が一変しました。

お気付きかもしれませんが、ASP.NET 5 アプリケーション向け Application Insights SDK は、従来の ASP.NET アプリケーション監視用の “基本 API” NuGet パッケージ (英語) に依存しています。このため、使用するテレメトリ タイプ、データ コントラクト、チャネルも同一のものです。ただし、1 つだけ重要な違いがあります。それは、ASP.NET 5 アプリケーションではシングルトン TelemetryConfiguration . Active が初期化されなくなるため、依存関係挿入を使用する必要があるという点です。

従来の ASP.NET アプリケーションで Application Insights SDK を使用する方法については、こちらの記事 (英語) をご覧ください。通常は次のようなコードを作成します。

 var tc = new TelemetryClient(); 
tc.TrackEvent("Order complete");

このコードにはちょっとしたトリックがあります。TelemetryClient は適切なインストルメンテーション キーによって初期化されるため、イベントの送信先を把握することができるのです。技術的には、次のコードでコンストラクターにグローバル シングルトン TelemetryConfiguration . Active が渡されたのと同等です。

 var tc = new TelemetryClient(TelemetryConfiguration.Active);
tc.TrackEvent("Order complete");

このコードは ASP.NET 5 Application Insights SDK では使用できません。 ASP.NET 5 には、シングルトンを避けて依存関係挿入を使用するという特性があります。依存関係挿入を使用して TelemetryClient クラスを取得しイベントを追跡する方法については、こちらの Wiki ページ (英語) をご覧ください。

TelemetryClient のインスタンスは先に作成する必要があります。Home コントローラーからイベントを追跡するには、引数として TelemetryClient を受け取るコンストラクターを作成します。

 public class HomeController : Controller
{
    private TelemetryClient telemetry;
    public HomeController(TelemetryClient telemetry)
    {
        this.telemetry = telemetry;
    }

このテレメトリ クライアントを使用して、イベントやその他のカスタム テレメトリを追跡することができます。

      public IActionResult Index() 
    {
        this.telemetry.TrackEvent("HomePageRequested"); 
        return View(); 
    }

この SDK 開発のすべてのソース コードと履歴は GitHb (英語) から入手できます。シングルトンベースから依存関係挿入の手法に至る、SDK の実装の進化をご覧いただけます。皆様からのご意見とフィードバックをお待ちしております。こちら (英語) からイシューを作成していただき、ご意見をお聞かせください。