Application Insights を使用してシステム生成ログを分析します

キャンバス アプリを、Azure Monitor の機能である Application Insights に接続することができます。 Application Insights には、問題を診断し、およびユーザーがアプリで実際に行うことを理解するのに役立つ強力な分析ツールが含まれています。 より適切なビジネス上の意思決定に役立つ情報を収集し、およびアプリの品質を向上することができます。

このクイックスタートでは、Kudos というキャンバス アプリを使用して、キャンバス アプリでシステム生成されたログの概念を調べ、それをアプリに適用します。 サンプルの Kudos アプリは、従業員エクスペリエンス スターター キット からダウンロード可能な従業員エンゲージメント アプリ スイートの一部です。

前提条件

注意

テレメトリ情報を表示するには、テナント管理者が キャンバス アプリの分析情報 を有効にする必要があります。 Power Platform 管理センター に管理者としてサインインします。 設定 > テナント設定 > キャンバス アプリの分析情報 に移動します。 キャンバス アプリの分析情報 ペインで、切り替えを オン に設定し、変更を保存します。 詳細については、テナントの設定 を参照してください。

オプション

Application Insights リソースの作成

アプリからシステム生成ログを送信する前に、イベントを格納する Application Insights リソースを作成する必要があります。

  1.  Azure Portal にサインインします。

  2. Application Insights を検索します。

    Application Insights。

  3. Application Insights リソースを作成します。

    Application Insights リソースを追加する。

  4. 適切な値を入力し、およびレビュー + 作成を選択します。

    詳細については、Application Insights リソースを作成 をお読みください。

    リソースを作成する。

  5. Application Insights インスタンスが作成されたら、次の手順で使用するために、インスタンスの概要で インストルメンテーション キー をコピーします。

    インストルメンテーション キーをコピーする。

アプリを Application Insights に接続する

注意

  • インストルメンテーション キーを指定する際は、データがテナント間で送信される可能性があることに注意してください。 トレースイベントは、対象の App Insights インスタンスがアプリと異なるテナントにある場合でも、アプリに設定したインストルメンテーション キーに対応する App Insights リソースに送信されます。
  • App Insights のインストルメンテーション キーが存在する可能性があるため、既存の .msapp ファイルをインポートする場合は注意してください。 インポート後にアプリを手動で開き、正しい App Insights インストルメンテーション キーが使用されていることを確認します。
  1. Power Apps にサインインします。

  2. 左側のナビゲーション ウィンドウで、アプリを選択します。 アプリのリストから Kudos アプリを選択し、次に編集を選択します。

    Kudos アプリを編集する。

    注意

    新しいアプリを作成するまたは代わりに既存のアプリを編集する こともできます。

  3. 左側のナビゲーション ツリー ビューからアプリ オブジェクトを選択し、インストルメンテーション キーを貼り付けます。

    インストルメンテーション キーを追加する。

  4. アプリを保存および公開します。

  5. 別のスクリーンによって公開されているアプリを再生および参照します。

アプリ スクリーンを閲覧すると、次のような使用詳細などを含むイベントが自動的に Application Insights に記録されます。

  • アプリへのアクセス元
  • 使用されているデバイス
  • 使用されているブラウザーの種類

重要

Application Insights にイベントを送信するには公開されているアプリを再生する必要があります。 Power Apps Studio でアプリをプレビューした場合、イベントは Application Insights に送信されません。

Application Insights でイベントを表示する

  1.  Azure Portal にサインインし、および先ほど 作成した Application Insights リソースを開きます。

  2. 左側のナビゲーション ウィンドウで下方向へスクロールし、および使用セクションでユーザーを選択します。

    注意

    ユーザー ビューには、次のようなアプリの使用詳細が表示されます。

    • アプリを表示したユーザーの数
    • ユーザー セッションの数
    • ログされたイベントの数
    • ユーザーのオペレーティング システムおよびブラウザー バージョンの詳細
    • ユーザーのリージョンと場所

    ユーザー、セッション、イベント分析の詳細については、 Application Insights をご覧ください。

  3. ユーザー セッションの 1 つを選択して、特定の詳細をより細かく調べます。 セッションの長さおよび表示したスクリーンなどの情報を参照できます。

    ユーザーの使用詳細。

  4. 使用セクションの左側のナビゲーション ウィンドウでイベント ビューを選択します。 すべてのアプリ セッションの間で表示されたすべてのスクリーンの概要を参照できます。

    アプリのイベントの詳細。

ヒント

次のようなその他の Application Insights 機能も利用できます。

カスタム トレース イベントを作成する

カスタム トレースを Application Insights に直接書き込み、シナリオに特有の情報の分析を開始できます。 トレース 機能を使用すると以下を収集できます。

  • スクリーンのコントロールの詳細な使用情報
  • アプリにアクセスしている特定のユーザー
  • 発生したエラー

ユーザーがアプリを参照してさまざまなアクションを実行しながら情報の記録を送信できるので、トレースは問題を診断するのにも役立ちます。 Application Insights に送信されたトレース メッセージには、次の 3 つの重大度のいずれかが割り当てられています。

  • 情報
  • 警告
  • Error

シナリオに応じて、適切な重大度のトレース メッセージを送信するように選択できます。 データをクエリし、および重大度に基づいて特定のアクションを実行できます。

注意

個人データを記録する場合は、さまざまなプライバシー法および規制に関する義務に注意してください。 詳細については、 Microsoft セキュリティ センター および Service Trust Portal を参照してください。

ここで、アプリで新しいコンポーネントを作成して、各スクリーンでフィードバックを収集し、Application Insights にイベントを書き込みます。

  1. Power Apps にサインインします。

  2. 左側のナビゲーション ウィンドウで、アプリを選択します。 アプリのリストから Kudos アプリを選択し、次に編集を選択します。

    注意

    新しいアプリを作成するまたは代わりに既存のアプリを編集する こともできます。

  3. ツリー ビューコンポーネント オプションを選択します。

    コンポーネント。

  4. 新しいコンポーネントを選択し、次に幅を 200 および高さを 75 にサイズ変更します。

    高さおよび幅。

  5. メニューから挿入を選択し、次にアイコンを選択して絵文字 - しかめっ面アイコンおよび絵文字 - 笑顔アイコンを選択します。

    アイコンを追加する。

  6. 新しいカスタム プロパティを選択して、カスタム プロパティを作成します。

    カスタム プロパティを作成する。

  7. FeedbackSceen などのプロパティおよび表示名を入力します。

  8. プロパティの内容を入力します。

  9. プロパティの種類入力、およびデータ型スクリーンとして選択します。

    カスタム プロパティ。

    注意

    プロパティを入力すると、スクリーン名およびそのコンポーネントを取り込むことができるので、Application Insights にこの情報を記録することができます。

  10. ツリー ビューのコンポーネントを選択し、その他の操作 () を選択し、次に名前の変更を選択し、FeedbackComponent などのわかりやすい名前にコンポーネントの名前を変更をします。

    コンポーネントおよびアイコンの名前を変更する。

  11. アイコンを選択し、その他の操作 () を選択し、次に名前の変更を選択して FrownIcon および SmileIcon などのわかりやすい名前にアイコンの名前を変更します。

  12. FrownIcon を選択し、OnSelect プロパティを選択し、次に数式バーに次のような式を入力します。

    Trace(
       "App Feedback",
       TraceSeverity.Information,
           {
             UserName: User().FullName,
             UserEmail: User().Email,
             Screen: FeedbackComponent.FeedbackScreen.Name,
             FeedbackValue: "-1"
           }
         );
    Notify("Thanks for your feedback!");
    

    しかめっ面アイコンの数式。

    注意

    数式の式はユーザー名UserEmailスクリーン、およびフィードバック (値が -1) を Application Insights に送信します。

  13. SmileIcon を選択し、OnSelect プロパティを選択し、次に数式バーに次のような式を入力します。

    Trace(
       "App Feedback",
       TraceSeverity.Information,
           {
             UserName: User().FullName,
             UserEmail: User().Email,
             Screen: FeedbackComponent.FeedbackScreen.Name,
             FeebackValue: "1"
           }
         );
    Notify("Thanks for your feedback!");
    
  14. アプリのいずれかの画面にコンポーネントを追加します。

    フィードバック コンポーネントを追加する。

  15. 保存を選択し、次に公開を選択してアプリを保存および公開します。

  16. 公開されたアプリを再生し、スクリーンから笑顔およびしかめっ面フィードバックを送信します。

    重要

    Application Insights にイベントを送信するには公開されているアプリを再生する必要があります。 Power Apps Studio でアプリをプレビューした場合、イベントは Application Insights に送信されません。

    公開アプリを再生する。

Application Insights でデータを分析する

これで、Application Insights でアプリからトレース 機能を使用して送信したデータの分析を開始することができます。

  1.  Azure Portal にサインインし、先ほど 作成した Application Insights リソースを開きます。

    Application Insights を選択します。

  2. 左側のナビゲーション ウィンドウで監査の下のログを選択します。

    ロゴを選択する。

  3. 次のクエリを入力し、実行 を選択して、アプリから受け取ったフィードバックを表示します。

    traces
    | where message == "App Feedback"
    | order by timestamp
    

    アプリのフィードバッグを表示する。

  4. 結果の行を選択し、customDimensions フィールドを展開します。

    コンポーネントの中の笑顔またはしかめっ面アイコンのOnSelectイベントのためのスクリーンユーザー名UserEmail、および FeedbackValue の値が記録されました。 appIdappName、および appSessionId など、Application Insights に送信される各イベントに対も値が記録されます。

    カスタム ディメンションを展開する。

  5. 次のクエリ例では、JSON カスタム ディメンションのプロパティを拡張し、および結果ビューに列を表示できます。

    traces
        | extend customdims = parse_json(customDimensions)
        | where message == "App Feedback"
        | project timestamp
            , message
            , AppName = customdims.['ms-appName']
            , AppId = customdims.['ms-appId']
            , FeedbackFrom = customdims.UserEmail
            , Screen = customdims.Screen
            , FeedbackValue = customdims.FeedbackValue
        | order by timestamp desc
    

    customDimensions クエリを拡張する。

    ヒント

    ログ クエリは非常に強力です。 これらを使用して、複数のテーブルを結合し、大量のデータを集計し、および複雑な操作を実行できます。 ログ クエリに関する詳細情報

未処理のエラーを監視する (実験段階)

[このセクションにはリリース前の ドキュメントが含まれているため、変更される場合があります。]

重要

  • これは試験段階の機能です。
  • 実験段階の機能は運用環境での使用を想定しておらず、機能が制限されている場合があります。 これらの機能を公式リリースの前に使用できるようにすることで、顧客が一足先にアクセスし、そこからフィードバックを得ることができます。

アプリの実行中に発生する可能性のあるすべてのエラーを常に予測して計画することはできません。 未処理の Power Fx 式エラーは、バナー メッセージとしてユーザーに報告されます。 また、Application Insights に報告することもできるため、アプリのユーザーによる問題の報告に依存せずに、その頻度と重大度を把握できます。 ランタイム エラーが発生したときに リアルタイム アラートを設定 して、より積極的なアプローチをとることもできます。

Application Insights にエラーを受け渡しできるようにする

Power Apps が未処理のランタイム エラーを Azure Application Insights に渡すのを許可する設定を有効にする必要があります。

警告

この設定を有効にすると、Application Insights ログのストレージに関連する追加コストが発生する場合があります。

エラーを渡せるようにするには、設定 > 今後の機能 > 実験的 > Azure Application Insights にエラーを渡すに移動して、キャンバス アプリを編集用に開いたままにします。 アプリを保存して公開します。

Azure Application Insights にエラーを渡す設定を有効にする。

Application Insights でのエラー イベント

アプリの実行時にユーザーが経験した未処理 Power Fx エラーは、 トレース テーブルに報告されます。 未処理のエラーは、イベント メッセージ「未処理のエラー」によって識別され、他のエラー イベントと区別されます。 これらのイベントの "severityLevel" ディメンションは 3 (TraceSeverity.Error) です。

詳細なエラー メッセージは、customDimension プロパティの "errors" ディメンションにあります。 同じ操作中に複数のエラーが発生した場合、エラーは 1 つのトレース イベントの "errors" ディメンションに統合されます。 エラー メッセージは、ライブ デバッグ セッション中に Monitor で報告されるものと同じです。

次のクエリ例は、未処理のエラーを特定し、トレース イベントに含まれるすべてのエラー メッセージを展開します。

traces
    | where message == "Unhandled error"
    | extend customdims = parse_json(customDimensions)
    | extend errors = parse_json(tostring(customdims.['errors']))
    | mv-expand errors
    | project timestamp
        , itemId //unique identifier for the trace event
        , AppName = customdims.['ms-appName']
        , AppId = customdims.['ms-appId']
        , errors = errors.['Message']
    | order by timestamp desc

サンプル クエリのサンプル出力。

相関トレース (実験段階)

[このセクションにはリリース前の ドキュメントが含まれているため、変更される場合があります。]

重要

  • これは試験段階の機能です。
  • 実験段階の機能は運用環境での使用を想定しておらず、機能が制限されている場合があります。 これらの機能を公式リリースの前に使用できるようにすることで、顧客が一足先にアクセスし、そこからフィードバックを得ることができます。

外部データおよびサービスへの接続は、ほとんどのアプリの基本です。 関連付けトレースは、特定の 制限に従って、キャンバス アプリとその接続全体でシステム生成のログを結合するためにコンテキスト情報を生成および伝播します。 たとえば、アプリがカスタム コネクタを呼び出し、それが Azure 関数またはその他の REST API を呼び出す場合があります。 関連付けトレースを使用すると、アプリ内で実行されたアクションと層全体の基礎となる API 呼び出しを関連付けることができます。 これは、トラブルシューティングに役立ちます。

キャンバス アプリ関連付けトレースはコンテキスト トレースの実装であり、W3C 仕様 に従っています。

相関トレースの有効化

警告

この設定を有効にすると、Application Insights ログのストレージに関連する追加コストが発生する場合があります。

相関トレース機能を有効にするには、編集用にキャンバス アプリを開いたまま、設定 > 今後の機能 > 実験的 > Azure Application Insights 相関トレースを有効にするに移動します。 アプリを保存して公開します。

Azure Application Insights 相関トレースの有効化。

制限

  • 関連付けトレースは、カスタム コネクタでのみ使用できます。 他のタイプのコネクタはサポートされていません。
  • HTTP リクエストは、接続されたサービスが Application Insights にも接続されている場合にのみ、Application Insights でキャプチャされます。

相関トレースの使用

相関トレースを有効にすると、キャンバス アプリの Application Insights インスタンスの 依存関係 テーブルに新しいシステム生成ログ イベントが追加されます。 このイベントは、ネットワーク呼び出しからの応答を受信したときに記録されます。 依存関係イベントは、要求ヘッダーと応答ヘッダー、応答ステータス コード、呼び出しの継続時間など、ネットワーク呼び出しの詳細をキャプチャします。

依存関係テーブルに記録されたサンプル イベント。

接続済みサービスが Application Insights にも接続されている場合、要求をキャプチャする追加のシステム生成ログ イベントがサービスの Application Insights インスタンスの要求テーブルで生成されます。 Azure Functions などの一部の Azure サービスは、コーディングなしで Azure portal から接続できます。 キャンバス アプリまたは複数のアプリと接続されたサービスの両方を同じ Application Insights インスタンスに接続できます。

要求テーブルに記録されたサンプル イベント。

サポートされているコネクタのネットワーク呼び出しは、 "operation_Id" ディメンションで他のシステム生成ログと結合できます。 次のクエリの例は、アプリ セッション中に発行されたトレース イベントとともに行われるネットワーク呼び出しを示しています。

traces | union dependencies | union requests | union pageViews | union customEvents
| project timestamp
    , itemType
    , name
    , operation_Name
    , message
    , severityLevel
    , customDimensions
    , operation_Id
    , operation_ParentId
| where operation_Id == "0a7729e3e83c4e4d93cb4f51149f73b9" //placeholder operation_Id, replace
| order by timestamp asc

前述のサンプル クエリのサンプル出力。

Power BI へのデータのエクスポート

Application Insights データおよびクエリ結果を Power BI にエクスポートして、分析およびデータ プレゼンテーションをすることができます。

  1.  Azure Portal にサインインし、先ほど 作成した Application Insights リソースを開きます。

  2. 左側のナビゲーション ウィンドウで監査の下のログを選択します。

  3. ログ分析クエリ ウィンドウからエクスポート メニューを選択します。

  4. Power BI (M クエリ) にエクスポート オプションを選択して、 Power BI クエリ ファイルをダウンロードします。

    Power BI クエリをエクスポートする。

  5. ダウンロードしたファイルをテキスト エディターで開き、クエリをクリップボードにコピーします。

  6. Power BI を開きます。

  7. ホームリボンのデータ取得 メニューを選択し、次に空のクエリを選択します。

    Power BI の空白のクエリ。

  8. クエリのウィンドウで、詳細エディターを選択します。 クエリをウィンドウに貼り付け、完了を選択し、次に閉じる & 適用を選択します。

    Power BI の事前クエリ。

Power BI でグラフおよびビジュアル化を作成して、アプリで受け取ったフィードバックを表示するだけでなく、データに基づく決定および操作を行なうこともできます。

グラフおよびビジュアル化。

既定のトレース イベント コンテキストおよびディメンション

既定のディメンションのセットは各トレース イベントの customDimensions プロパティにも追加されます。 これらのディメンションは、イベントが発生したアプリケーションとアプリケーションのセッションを識別するために使用できます。 Trace 関数を使用して追加のカスタム データを記録する場合、それらもカスタム ディメンションに表示されます。

ディメンション名 説明
ms-appId イベントを送信したアプリのアプリケーション ID。
ms-appname イベントを送信したアプリのアプリケーションの名前。
ms-appSessionId アプリケーション セッション ID。 一部のシナリオでは、この値が入力されない場合があります。 使用可能な場合、この値は標準の Application Insights sessionID ディメンションを上書きします。
ms-tenantID アプリケーションが公開されるテナントの一意識別子。
ms-environmentId アプリケーションが公開される環境の名前。
userId セッションに関連付けられたユーザーの一意識別子。
ms-duration ユーザーがある画面から別の画面に移動するのにかかる時間を測定する帰属値。 この値は標準の Application Insights PageView 期間ディメンションを上書きします。
sessionId 1 つのアプリケーション セッションに関連付けられたすべてのイベントを関連付けるために使用できるセッション ID。 この値は常に存在し、一意のセッション数を理解するために推奨されます。 この値は、プレーヤーのセッション ID から取得され、アプリの再生中にセッションの詳細を表示するときに表示されます。 セッション ID は、デフォルト、ランダム、および一意の Application Insights 生成値を取得することがあります。 この既定値は信頼性が低く、アプリ固有のパラメーターとは関連付けられていません。
期間 ユーザーがある画面から別の画面に移動するのにかかる時間を測定する帰属値。 この値は、ms-duration ディメンションによって報告される期間と同じです。
ms-isTest セッションが Test Studio テスト ランナーに関連付けられているかどうかを示します。
ms-currentScreenName ユーザーの移動元のページの名前 (ページ ナビゲーション イベントの場合に表示されます)。
ms-targetScreenName ユーザーの移動先のページの名前 (ページ ナビゲーション イベントの場合に表示されます)。

サポートされていないシナリオ

Application Insights では、次のシナリオをサポートしていません。

  • オフラインのプレーヤー イベントはキャプチャされません。
  • アプリが一時停止されている場合、モバイル アプリ (iOS と Android の両方) イベントはキャプチャされません。
  • GCC およびパブリック クラウド以外はサポートされていません。

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。