Поделиться через


События телеметрии для Microsoft Dataverse

Поток данных в настоящее время предоставляет данные о производительности, связанные с входящие вызовы API Dataverse, вызовы выполнения подключаемого модуля Dataverse и вызовы SDK Dataverse. Он также предоставляет данные о сбоях в подключаемый модуль и операциях SDK Dataverse.

Входящие вызовы API Dataverse

Это вызовы выполнены к API Dataverse. Это могут быть единый интерфейс (UCI), устаревший веб-клиент, настраиваемые клиенты, использующие SDK, и т.д. Их можно найти в таблица Запросы в Application Insights, которая имеет следующие поля.

  • Имя: тип запроса. Они делятся на две категории:

    • Запрос веб-API: запрос к конечная точка OData v4, который обычно используется единым интерфейсом и современными клиентами. Этот запрос преобразуется в операцию, общую для обоих. Веб-API — это "программа-оболочка" для включения модели программирования RESTful, но после получения данных на сервере все становится таким же. Когда ответ возвращается, он преобразуется в JSON, если запрос поступил из веб-API.
    • Запрос службы организации: запрос к конечная точка API организации, который используется клиентами SDK или устаревшим веб-клиентом.
  • Продолжительность: время, в течение которого сервер ответил на запрос.

  • URL-адрес: URL-адрес, по которому был сделан вызов.

  • CustomDimensions:

    • UserAgent: Application Insights автоматически заполняет поле пользовательского агента ПК поскольку эти журналы отправляются с сервера в центре обработки данных. 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. Обычно это генерируется инструментом регистрации подключаемого модуля с использованием информации о PluginName, PluginType и название операции — например ErrorMessageTest.ThrowException: создание учетной записи.

Телеметрия в коде вашего подключаемого модуля

Чтобы понять, что происходит в коде вашего подключаемого модуля, вы можете включить настраиваемую телеметрию из своего подключаемого модуля, используя Интерфейс Microsoft.Xrm.Sdk.PluginTelemetry.ILogger в коде вашего подключаемого модуля, чтобы записывать данные телеметрии прямо в ваш ресурс Application Insights. Дополнительные сведения: Запишите телеметрию на ваш Application Insights ресурс с использованием ILogger (предварительная версия)

Журналы SDK Dataverse

Это журналы для операций SDK, запущенных как часть входящего запроса. Они регистрируются в таблице зависимость в Application Insights, потому что они отслеживаются как зависимости для выполняемого запроса. Они идентифицируются по имени типа, начиная с SDK. Ниже приводится пример запроса:

dependencies
| where type startswith "SDK"
| take 10

Запрос SDK Application Insights.

  • Тип: тип активированного запроса SDK. Примеры включают Retrieve, RetrieveMultiple, FetchXmlToQueryExpression и WhoAmI.
  • Имя/Цель: это имя сущности, на который нацелена операция SDK.
  • CustomDimensions:
    • ClientType: тип клиента, от которого поступает вызов. Некоторые возможные значения: Web, UCIClient и OutlookFull.
    • EntityId: уникальный идентификатор используемой сущности.
    • EntityName: имя набора используемой сущности.

Исключения

Вы увидите сведения о сбоях в подключаемый модуль и операциях SDK в Application Insights. В таблице исключения в Application Insights приводит в действие панель Сбои. Эти сведения об ошибках коррелируют с остальными событиями в подключаемый модуль и вызовах SDK в сквозном представлении. Вся доступная информация по возможности добавляется в столбцы и в customDimensions когда нет точного совпадения столбца.

Вы заметите, что некоторые поля в таблица исключения не заполнены. Это потому, что эти поля могут быть заданы только в том случае, если SDK Application Insights используется для отправки журналов из источника. Эта функция собирает телеметрию платформы и затем помещает ее в Application Insights в соответствии с схема Application Insights.

Таблица исключений Application Insights.

exceptions
| take 10

Этот запрос вернет все сведения об атрибутах из таблицы исключение.

  • problemId/type: тип исключения.
  • outerMessage: сообщение исключения.
  • customDimensions:
    • clientType: тип клиента, от которого поступает вызов. Некоторые возможные значения: Web, UCIClient и OutlookFull.
    • exceptionSource: подключаемый модуль или точка, в которой возникло исключение.
    • entityName: имя набора используемой сущности.
    • pluginName: имя подключаемого модуля, в котором возникло исключение.

Сведения об атрибутах таблицы исключений Application Insights.

Если пользователь сообщает об ошибке, вы можете использовать ИД пользователя (ИД Microsoft Entra ID), чтобы проанализировать сведения из таблицы исключений.

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

ИД и имя сущности доступны в customDimensions в таблице зависимость.

dependencies<br />
| where type == "SDK Retrieve"

Запрос на получение SDK Application Insights.

Часто задаваемые вопросы (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 

Временная диаграмма производительности API Application Insights.

На этой диаграмме мы можем увидеть производительность конечной точки API за период времени в зависимости от количества сделанных запросов.

Вы также можете настроить оповещение на основе производительности конкретного API здесь, в Application Insights.

Могу ли я выполнить детализацию об ошибках или сбоях в определенное время или для конкретных пользователей, чтобы понять стек вызовов?

Взгляд на панель Сбои дает обзор сбоев за определенный период времени. Затем вы можете сузить поиск до определенного сбоя на основе вызова 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>