次の方法で共有


Microsoft Dataverse のテレメトリ イベント

データ ストリームは現在、Dataverse API 着信呼び出し、Dataverse プラグイン実行呼び出し、および Dataverse SDK 呼び出しに関連するパフォーマンス データを提供しています。 また、プラグインのエラーおよび Dataverse SDK 操作に関するデータも提供します。

Dataverse API 着信通話

これらは Dataverse API に行われた呼び出しです。 それらは、統一インターフェイス (UCI)、レガシー Web クライアント、SDK を使用するカスタム クライアントなどからのものである可能性があります。 それらは Application Insights の リクエスト のテーブルで見つけることができ、次のフィールドがあります。

  • 名前: リクエストのタイプ。 これらは 2 つのカテゴリに分類されます。

    • Web APIリクエスト: 統一インターフェイス および最新のクライアントでよく使用されるOData v4エンドポイント へのリクエスト。 このリクエストは、両方に共通の操作に変換されます。 Web API は、RESTful プログラミング モデルを有効にする "ラッパー" ですが、データを受信すると、サーバー内ですべてが同じになります。 応答が返されると、要求が Web API からのものである場合、JSON に変換されます。
    • 組織サービス リクエスト: SDKクライアントまたは従来のWebクライアントによって使用される組織APIエンドポイント へのリクエスト。
  • 期間: サーバーがリクエストに応答するのにかかった時間。

  • Url: 呼び出しが行われたURL。

  • カスタムディメンション:

    • UserAgent: Application Insights これらのログはデータセンターのサーバーからプッシュされるため、ユーザー エージェント フィールドに PC が自動的に入力されます。 Application Insights はユーザー エージェント フィールドを上書きすることはできません。 場合によっては、ユーザー エージェント フィールドに入力できないことがあります。 呼び出しが行われたユーザー エージェントは、次のクエリを使用して表示できます。

      requests
      | summarize count() by tostring(customDimensions.userAgent)
      

      Application Insights CustomDimensions UserAgent。

  • Operation_Name: エンドツーエンドのトランザクション ビューなどのビューに表示される操作の判読可能な名前。

Dataverse プラグインの実行回数ログ

特定の操作で実行されているカスタム プラグインのこれらのログは、依存 テーブルにあります。 以下がクエリ例です。

dependencies
| where type == "Plugin"
| take 100

Application Insights Dataverse プラグインの実行ログ。

  • 名前/ターゲット: 実行されるプラグインの完全修飾型名。
  • 期間: プラグインの実行にかかった時間。
  • カスタムディメンション:
    • 深さ: コールスタック内の実行の現在の 深さ
    • EntityName: プラグインによって操作されるエンティティの名前。
    • IsolationType: プラグインがサンドボックス内で実行されているかどうかを示す :
      • 1: なし
      • 2: サンドボックス
      • 3: 外部
    • PluginName: プラグインのユーザーフレンドリな名前。
    • PluginType: 実行されるプラグインの種類の名前。
    • PluginVersion: 公開されたプラグインのバージョン。 ここでの目的は、この情報を使用してバージョン更新のトラブルシューティングを行えるようにすることです。
    • ステージ: 次の値にマップされます。
      • PreValidation = 10
      • PreOperation = 20
      • PreOperationBeforeExternalPlugins = 15
      • PreOperationAfterExternalPlugins = 25
      • MainOperation = 30
      • PostOperationBeforeExternalPlugins = 35
      • PostOperationAfterExternalPlugins = 45
      • PostOperation = 40
      • PostOperationDeprecated = 50
    • StepName: SDKメッセージ処理 手順 の名前。 これは通常、プラグイン登録ツールによって、PluginNamePluginType、たとえばErrorMessageTest.ThrowException: アカウントの作成 などの操作の名前に関する情報を使用して生成されます。

プラグイン コード内のテレメトリ

プラグイン コード内で何が起こっているかを理解するには、プラグイン コードで .Xrm.Sdk.PluginTelemetry.ILoggerインターフェイスを使用して、プラグイン内からカスタム テレメトリを組み込み、テレメトリ データをリソースに直接書き込むことができます。 Microsoft Application Insights 詳細: ILogger を使用して、テレメトリを Application Insights リソースに書き込む (プレビュー)

Dataverse SDK ログ

これらは、着信リクエストの一部としてトリガーされた SDK 操作のログです。 これらは Application Insights の 依存 テーブルに記録されますが、それは実行するリクエストの依存関係として追跡されるためです。 それらは、SDK で始まるタイプ名で識別されます。 以下がクエリ例です。

dependencies
| where type startswith "SDK"
| take 10

Application Insights クエリ SDK。

  • タイプ: トリガーされたSDKリクエストのタイプ。 例には、Retrieve、RetrieveMultiple、FetchXmlToQueryExpression、WhoAmI などがあります。
  • 名前/ターゲット: これは、SDK操作の対象となるエンティティの名前です。
  • カスタムディメンション:
    • ClientType: 通話元のクライアントのタイプ。 可能な値には、Web、UCIClient、OutlookFull があります。
    • EntityId: 使用されているエンティティの一意の識別子。
    • EntityName: 使用されているエンティティの名前。

例外

Application Insights のプラグインと SDK 操作の失敗の詳細は次の場所に表示されます。 Application Insights の 例外 テーブルが、失敗 パネルを強化します。 これらのエラーの詳細は、エンド ツー エンドビューのプラグインおよび SDK 呼び出しの残りのイベントと相関しています。 利用可能なすべての情報は、可能な場合は列に追加され、完全に一致する列がない場合は customDimensions に追加されます。

のフィールドのいくつかに気付くでしょう例外テーブルにデータが入力されていません。 これは、これらのフィールドは Application Insights SDK は、ソースからログを発行するために使用された場合にのみ設定できるためです。 この機能は、プラットフォームのテレメトリを収集し、それを Application Insights スキーマに従って Application Insights にプッシュします。

Application Insights 例外テーブル。

exceptions
| take 10

このクエリは、例外 テーブルからすべての属性の詳細を返します。

  • problemId/type: 例外のタイプ。
  • outerMessage: 例外メッセージ。
  • カスタムディメンション:
    • clientType: 通話元のクライアントのタイプ。 可能な値には、Web、UCIClient、OutlookFull があります。
    • exceptionSource: 例外がスローされたプラグインまたは ポイントする。
    • entityName: 使用されているエンティティの名前。
    • pluginName: 例外がスローされたプラグインの名前。

Application Insights 例外テーブル属性の詳細。

ユーザーがエラーを報告した場合は、ユーザー ID (Microsoft Entra ID ID) を使用して、例外テーブルから詳細を理解できます。

exceptions
| where user_Id == '00aa00aa-bb11-cc22-dd33-44ee44ee44ee'

エンティティ ID とエンティティ名は、依存 テーブルの customDimensions の中で利用可能です。

dependencies
| where type == "SDK Retrieve"

Application Insights SDK 取得クエリ。

よく寄せられる質問 (FAQ)

以下は、Dataverse のテレメトリイベントに関連するいくつかのよくある質問です。

プラグインのアップグレードによってパフォーマンスが低下したかどうかを確認するにはどうすればよいですか?

dependencies
| where ['type'] == "Plugin"
| where name startswith "[InsertYourPluginName]"
| summarize avg(duration) by name

プラグイン名には、カスタム プラグインのバージョンも含まれている必要があります。

時間帯や場所に基づいて、問題が報告される前に API はどのように機能していましたか? API の劣化は段階的ですか、それとも突然ですか?

requests
| where url == "https://<URLHere>"
| summarize avg(duration), count() by bin(timestamp, 1h)
| render timechart 

Application Insights API パフォーマンスのタイム チャート。

このグラフでは、行われたリクエストの数に対する一定期間の API エンド ポイントのパフォーマンスを確認できます。

Application Insights 内のここにある特定の API のパフォーマンスに基づいて、アラートを設定する こともできます。

特定の時間にエラーや失敗が発生した場合、または特定のユーザーがコール スタックを理解できるようにするために、ドリルダウンを使用できますか?

エラー パネルを見て、特定の期間のエラーの概要が表示されます。 次に、API 呼び出しまたは依存関係のタイプに基づいて特定のエラーに絞り込み、エンド ツー エンドのビューを表示できます。

Application Insights 失敗の詳細。

カスタム ダッシュボードを作成できますか?

はい カスタム ダッシュボード を Application Insights でビルドできます。

プラグインの使用パフォーマンス (応答時間) とピーク使用時のエラー率を判断できますか?

有効。 プラグインのパフォーマンスを理解するには、次のサンプル クエリを参照してください。

dependencies
| where ['type'] == "Plugin"
| where name == "[Plugin name here]"
| summarize avg(duration) by bin(timestamp, 1h)
| render timechart

プラグインの使用パフォーマンス。

このテレメトリにはスロットルがありますか?

はい 基本的な 429 エラーの詳細が現在提供されています。

実行パスを理解できますか? プラグインによって行われた呼び出しはプラグインの速度を低下させますか?

有効。 任意のリクエストに対して実行されるすべてのメッセージとプラグインを表示できます。

すべてのメッセージとプラグインの実行期間がログに記録されます。 プラグインに時間がかかっている場合は、そのプラグインを特定できます。 プラグインがコールバックを Dataverse に作っている場合、その通話の継続時間がログに記録されます。 プラグインに関する詳細は、将来の展開で計画されています。

プラグインによって行われたアウト バウンド コールはすべて、依存関係として自動的にログに記録されます。

エンドツーエンド トランザクション。

特定のリクエストのテレメトリを表示できますか?

Dataverse は、すべてのリクエストへのヘッダー応答で x-ms-service-requestId を返します。 この requestId を使用して、すべてのテレメトリをクエリできます。

union *
| where operation_ParentId contains <requestId>