Споделяне чрез


Телеметрични събития за Microsoft Dataverse

Бележка

Новият и подобрен Power Platform център за администриране вече е в публичен преглед! Проектирахме новия център за администриране така, че да бъде по-лесен за използване, с ориентирана към задачите навигация, която ви помага да постигате конкретни резултати по-бързо. Ще публикуваме нова и актуализирана документация, когато новият Power Platform център за администриране премине към обща наличност.

Потокът от данни понастоящем предоставя данни за ефективността, свързани с Dataverse API входящи повиквания, Dataverse повиквания за изпълнение на приставки и Dataverse SDK разговори. Той също така предоставя данни за грешки в приставката и Dataverse SDK операции.

Входящи обаждания на API на Dataverse

Това са обаждания към Dataverse API. Те могат да бъдат от Унифициран интерфейс (UCI), наследения уеб клиент, потребителски клиенти, които използват SDK и т.н. Те могат да бъдат намерени в заявки таблица на Application Insights, който има следните полета.

  • Име: Видът на заявката. Те попадат в две категории:

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

  • URL адрес: URL адресът, към който е извършено обаждането.

  • Персонализирани размери:

    • UserAgent: Application Insights автоматично попълва полето на потребителския агент с компютър , тъй като тези регистрационни файлове се изпращат от сървър в център за данни. Application Insights не позволява полето на потребителския агент да бъде заменено. Понякога полето на потребителския агент не е налично за попълване. Потребителският агент, от който е осъществено повикването, може да бъде видян чрез следната заявка:

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

      Application Insights Потребителски агент на CustomDimensions.

  • 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
    • Име на стъпка: Името на стъпката за обработка на съобщения на SDK. Обикновено това се генерира от инструмента за регистрация на плъгини, като се използва информация за PluginName, PluginType и името на операцията - например ErrorMessageTest.ThrowException: Creation of account.

Телеметрия в рамките на вашия код за приставки

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

Регистрационни SDK файлове на Dataverse

Това са регистрационни файлове за 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: Името на използвания обект.

Изключения

Ще видите подробности за грешки в операциите на приставките и SDK в Application Insights. Таблицата изключения в 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 подробности за атрибута на таблицата изключения.

Ако потребител съобщи за грешка, можете да използвате ИД на потребителя (Microsoft Entra ИД), за да разберете подробностите от таблицата с изключения .

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

Идентификаторът на обекта и името на обекта са налични в customDimensions в таблицата за зависимости.

dependencies
| where type == "SDK Retrieve"

Application Insights SDK заявка за извличане.

Често задавани въпроси (ЧЗВ)

Следват някои често задавани въпроси, свързани с телеметрични събития за 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 за определен период от време спрямо броя на направените заявки.

Можете също да настроите сигнал въз основа на ефективността на определен 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.

Мога ли да разбера пътищата за изпълнение? Повикванията, направени от приставката, забавят ли приставката?

Да. Можете да видите всички съобщения и приставки, които се изпълняват за всяка заявка.

Продължителността на цялото изпълнение на съобщения и приставки се регистрира. Ако някой приставка отнема повече време, можете да го идентифицирате. Ако приставката прави обратно повикване към Dataverse, продължителността на това обаждане се регистрира. Повече информация за приставките се планира за бъдещо внедряване.

Всяко изходящо повикване, направено от приставката, автоматично ще се регистрира като зависимост.

Транзакция от край до край.

Мога ли да видя телеметрия за конкретна заявка?

Dataverse връща x-ms-service-requestId в отговора на заглавката на всички заявки. Използвайки този requestId, можете да направите заявка за цялата телеметрия.

union *
| where operation_ParentId contains <requestId>