演習 - アプリケーションをインストルメント化する

完了

カスタムのイベントとメトリックは、Application Insights SDK の TelemetryClient オブジェクトを使用し、アプリから生成できます。

動画アプリについては、開発チームはコード内に SDK を追加し、初期化しており、アプリケーション固有のイベントと測定に関するデータを生成するロジックを追加する準備ができています。

この演習では、カスタム イベントでコードをインストルメント化し、それを実行してイベントを発生させ、Azure portal に結果を表示します。

アクションをアプリに追加する

この演習では、ユーザー アクションに基づいてイベントを追跡します。 動画アプリのユーザーに、[いいね] ボタンを表示します。 それを選択すると、実行されるコードがその処理の一部として Liked という名前のイベントの発生を追跡します。

アプリのメイン ページで、ボタンとアクションを追加しましょう。

  1. まだ開いていない場合は Cloud Shell エディターを開いてください。

    cd videowebapp
    code .
    
  2. Views/Home/Index.cshtml を開くには、Azure Cloud Shell エディターのファイル ナビゲーターを使用します。

  3. ファイルの一番下で次のコードを貼り付け、ボタンを追加します。

    <div>
        @using (Html.BeginForm("Like","Home"))
        {
            <input type="submit" value="Like" />
            <div>@ViewBag.Message</div>
        }  
    </div>
    
  4. Controllers/HomeController.cs を開くには、ファイル ナビゲーターを使用します。

  5. ボタン クリックに応答して実行されるアクションを追加するには、HomeController クラス内に次のメソッドを追加します。

    [HttpPost]
    public ActionResult Like(string button)
    {
        ViewBag.Message = "Thank you for your response";
        return View("Index");
    }
    

TelemetryClient オブジェクトをインスタンス化し、メトリックを追跡する

これで、アプリのボタンと、ユーザーがそれを選択すると実行されるコードが追加されたので、テレメトリを送信するために、Application Insights SDK を使用するコードを追加します。

  1. 引き続き HomeController.cs で作業し、コード ファイルの先頭に、次のステートメントを使用して ApplicationInsights を追加します。

    using Microsoft.ApplicationInsights;
    
  2. HomeController クラスの先頭に、aiClient という名前の TelemetryClient フィールドを作成します。

    private TelemetryClient aiClient;
    
  3. TelemetryClient オブジェクトを受け取ってそれを aiClient フィールドに割り当てるコンストラクターを、HomeController クラスに追加します。

    public HomeController(TelemetryClient aiClient)
    {
        this.aiClient = aiClient;
    }
    
  4. Like アクション内の、2 つの既存コード行の前で、aiClientTrackEvent を呼び出します。

    this.aiClient.TrackEvent("LikeClicked");
    
  5. 開いているファイルがあればそれを閉じ、コード エディターを終了します。

Web アプリをデプロイし、データを生成する

videowebapp フォルダー内から Cloud Shell で次のコマンドを実行し、アプリケーションをビルドして App Service にそれをデプロイします。

dotnet publish -o pub
cd pub
zip -r site.zip *

az webapp deployment source config-zip \
    --src site.zip \
    --resource-group <rgn>[sandbox resource group name]</rgn> \
    --name <your-App-Service-name>

アプリを実行してテレメトリ データを生成する

  1. デプロイが完了したら、Azure portal に切り替えます。 Web アプリに移動するには、[すべてのリソース] ビューを使用します。

  2. Web アプリの [概要] ページで [参照] を選択します。 新しいタブで Web アプリが開きます。

  3. ページの下部にある [いいね] を選択します。 ページが再読み込みされ、"Thank you for your response" (応答いただきありがとうございます) というメッセージが表示されます。 アプリに入る複数のクリックをシミュレーションするには、[いいね] ボタンをさらに数回選択します。

  4. [ブラウザー] タブを閉じ、Azure portal に戻ります。

Azure portal で情報を表示する

先ほど作成したイベントを見つけて表示するには、Application Insights の検索ツールを使用します。 次の手順に従います。

  1. 左側のナビゲーション バーの [設定] で、[Application Insights] を選択します。 [Application Insights] ウィンドウで、上部のメニューから [アプリケーション ダッシュボード] を選択し、アプリの Application Insights リソースに移動します。

  2. 左側のナビゲーション バーの [調査] で、[トランザクションで検索] を選択します。

    Application Insights で検索ツールにアクセスする。

  3. ウィンドウの上部にある [フィルター] アイコンを選択し、[フィルターのクリア] を選択します。

  4. [フィルター] ウィンドウで下にスクロールして [プロパティ] セクションを見つけ、[イベント名] を展開します。

  5. [LikeClicked] を選択し、[完了] を選択します。

    LikeClicked イベントを検索する。

    注意

    LikeClicked[イベント名] セクションで使用できない場合、[フィルター] ウィンドウを閉じ、[Application Insights] ウィンドウの一番上付近にある [更新] ボタンを選択し、少し待って [フィルター] ウィンドウが再び開いたらもう一度試してみます。 アプリによって生成されたテレメトリ データはバッファー処理され、Application Insights リソースにまとめて送信されます。 イベントの発生後から 1、2 分では到着しないことがあります。 LikeClicked イベントが最初に発生するまで、フィルタリングに利用できません。

  6. [フィルター] ウィンドウを閉じます。 この検索ツールでは、記録したすべての LikeClicked イベントがタイムラインに一覧表示されます。