次の方法で共有


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 エンド ポイントへのリクエスト。
  • 期間: サーバーが要求に応答するのにかかった時間。

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

  • CustomDimensions:

    • 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 プラグインの実行ログ。

  • 名前/ターゲット: 実行中のプラグインの完全修飾型名。
  • 期間: プラグインの実行にかかった時間。
  • CustomDimensions:
    • 深さ: コール スタックにおける実行回数の現在の深さ
    • 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: アカウントの作成 などの操作の名前に関する情報を使用して生成されます。

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

プラグインコード 内で 何が起こっているのかを理解するには、自分のプラグイン コードの Microsoft.Xrm.Sdk.PluginTelemetry.ILogger インターフェイス を使用してプラグイン内からカスタムテレメトリを含めて、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 操作の対象となるエンティティの名前です。
  • CustomDimensions:
    • 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: 例外のエラー メッセージ。
  • customDimensions:
    • clientType: 呼び出し元のクライアントのタイプ。 可能な値には、Web、UCIClient、OutlookFull があります。
    • exceptionSource: プラグインまたは例外がスローされたポイント。
    • entityName: 使用するエンティティのエンティティの名前。
    • pluginName: 例外がスローされたプラグインの名前。

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

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

exceptions
| where user_Id == '12345678-68cd-4e73-908f-126342b36315'

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

dependencies<br />
| 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 エラーの詳細が現在提供されています。

基本的な 429 エラー。

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

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

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

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

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

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

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

union *
| where operation_ParentId contains <requestId>