Telemetrihändelser för Microsoft Dataverse
Dataflödet tillhandahåller för närvarande prestandadata relaterade till Dataverse API inkommande anrop, Dataverse plugin-körningsanrop och Dataverse SDK-anrop. Det innehåller även data för fel i plugin-program och Dataverse SDK-åtgärder.
Dataverse API inkommande samtal
Det här är anrop till Dataverse API:et. De kan vara från enhetligt gränssnitt (3DN), den gamla webbklienten, anpassade klienter som använder SDK och så vidare. De finns i begäranstabellen för Application Insights, som har följande fält.
Namn: Typ av begäran. Dessa indelas i två kategorier:
- Webb-API-begäran: En begäran till OData v4-slutpunkten som ofta används av enhetligt gränssnitt och moderna klienter. Förfrågan omvandlas till en åtgärd som är vanlig för båda. Web API är ett "omslag" för att aktivera RESTful-programmeringsmodellen, men efter att data har mottagits blir allt detsamma inom servern. När svaret returneras konverteras det till JSON om begäran kom från webb-API.
- Begäran om organisationstjänst: En begäran till organisationens API-slutpunkt som används av SDK-klienter eller den äldre webbklienten.
Varaktighet: Den tid det tog för servern att svara på begäran.
Url: URL:en som anropet gjordes till.
Anpassade mått:
UserAgent: Application Insights fyller automatiskt i användaragentfältet med PC när dessa loggar skickas från en server i ett datacenter. Application Insights tillåter inte att användaragentfältet åsidosätts. Ibland är användaragentfältet inte tillgängligt att fylla i. Användaragenten som anropet gjordes från kan visas med följande fråga:
requests | summarize count() by tostring(customDimensions.userAgent)
Operation_Name: Det läsbara namnet på åtgärden som ska visas i vyer, till exempel transaktionsvyn från slutpunkt till slutpunkt.
Dataverse plugin-körningsloggar
Dessa loggar för anpassade plugin-program som körs för en viss åtgärd finns i beroendestabellen. Följande är ett exempel på en fråga:
dependencies
| where type == "Plugin"
| take 100
- Namn/mål: Det fullständigt kvalificerade typnamnet för plugin-programmet som körs.
- Varaktighet: Den tid det tog för plugin-programmet att köras.
- Anpassade mått:
- Djup: Det aktuella djupet för körningen i anropsstacken.
- EntityName: Namnet på den entitet som åtgärden vidtas av plugin-programmet.
- IsolationType: Ett värde som anger om plugin-programmet körs i sandbox-miljön:
- 1: Nej
- 2: Sandbox-miljö
- 3: Externt
- PluginName: Det användarvänliga namnet på plugin-programmet.
- PluginType: Namnet på den typ av plugin-program som körs.
- PluginVersion: Versionen av det publicerade plugin-programmet. Avsikten här är att kunna använda denna information för att felsöka versionuppdateringar.
- Steg: Mappar till följande värden:
- PreValidation = 10
- PreOperation = 20
- PreOperationBeforeExternalPlugins = 15
- PreOperationAfterExternalPlugins = 25
- MainOperation = 30
- PostOperationBeforeExternalPlugins = 35
- PostOperationAfterExternalPlugins = 45
- PostOperation = 40
- PostOperationDeprecated = 50
- StepName: Namnet på steget SDK-meddelandebearbetning. Detta genereras vanligtvis av verktyget Registrering av plugin-program med hjälp av information om PluginName, PluginType och namnet på åtgärden, t.ex. ErrorMessageTest.ThrowException: Creation of account.
Telemetri inom din plugin-kod
För att förstå vad som händer i plugin-koden kan du inkludera anpassad telemetri inifrån plugin-programmet med hjälp Microsoft av. Xrm.Sdk.PluginTelemetry.ILogger Gränssnitt i plugin-koden för att skriva telemetridata direkt till din Application Insights resurs. Mer information: Skriva telemetri till resursen Application Insights med hjälp av ILogger (Preview)
Dataverse SDK-loggar
Det här är loggar för SDK-åtgärder som utlöses som en del av en inkommande begäran. Dessa loggas till beroendestabellen i Application Insights, eftersom de spåras som beroenden för begäran att köra. De identifieras av typnamnet, börjar med SDK. Följande är ett exempel på en fråga:
dependencies
| where type startswith "SDK"
| take 10
- Typ: Den typ av SDK-begäran som utlöses. Exempel inkluderar Retrieve, RetrieveMultiple, FetchXmlToQueryExpression och WhoAmI.
- Namn/mål: Det här är namnet på den entitet som SDK-åtgärden riktar sig mot.
- Anpassade mått:
- ClientType: Den typ av klient som anropet kommer från. Några möjliga värden är Web, UCIClient och OutlookFull.
- EntityId: Den unika identifieraren för den entitet som används.
- EntityName: Namnet på den entitet som används.
Undantag
Du kommer att se detaljer om fel i plugin-program och SDK-åtgärder i Application Insights. Undantagstabellen i Application Insights aktiverar panelen Fel. Dessa feldetaljer korrelerar med resten av händelserna i plugin-programmet och SDK-samtal i end-to-end-vyn. All tillgänglig information läggs till i kolumner när det är möjligt och till anpassade dimensioner när det inte finns någon exakt kolumnmatchning.
Du kommer att märka att vissa av fälten i undantagstabellen inte är befolkade. Detta beror på att dessa fält bara kan ställas in om Application Insights SDK används för att avge loggar från källan. Den här funktionen samlar in plattformstelemetri och trycker sedan in Application Insights i enlighet med Application Insights schema.
exceptions
| take 10
Denna fråga returnerar alla attributdetaljer från undantagstabellen.
- problemId/type: Typen av undantag.
- outerMessage: Undantagsmeddelandet.
- customDimensioner:
- clientType: Den typ av klient som anropet kommer från. Några möjliga värden är Web, UCIClient och OutlookFull.
- exceptionSource: Plugin-programmet eller punkten där undantaget utlöstes.
- entityName: Namnet på den entitet som används.
- pluginName: Namnet på plugin-programmet där undantaget utlöstes.
Om en användare rapporterar ett fel kan du använda användar-ID:t (Microsoft Entra ID) för att förstå detaljer från undantagstabellen.
exceptions
| where user_Id == '00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
Enhets-ID och enhetsnamn finns i customDimensions i beroendestabellen.
dependencies
| where type == "SDK Retrieve"
Vanliga frågor (FAQ)
Följande är några vanliga frågor relaterade till telemetrihändelser för Dataverse.
Hur kan jag avgöra om min insticksuppgradering orsakade en prestandaförsämring?
dependencies
| where ['type'] == "Plugin"
| where name startswith "[InsertYourPluginName]"
| summarize avg(duration) by name
Plugin-namnet ska också innehålla versionen för anpassade plug-ins.
Hur presterade API: et före ett rapporterat problem baserat på tid på dagen eller plats? Var API-nedbrytning gradvis eller plötslig?
requests
| where url == "https://<URLHere>"
| summarize avg(duration), count() by bin(timestamp, 1h)
| render timechart
I det här diagrammet kan vi se prestanda för API-slutpunkten över en tidsperiod mot antalet begäranden som görs.
Du kan också ställa in en varning baserat på prestanda för ett visst API här inom Application Insights.
Kan jag gå igenom fel eller fel vid specifika tider eller för specifika användare för att förstå samtalsstacken?
Att titta på panelen Fel ger en överblick över fel under en viss tidsperiod. Du kan sedan begränsa till ett specifikt fel baserat på API-samtalet eller beroendestypen för att se end-to-end-vyn.
Kan jag skapa anpassade instrumentpaneler?
Ja. Du kan skapa anpassade instrumentpaneler med Application Insights.
Kan jag fastställa användarprestanda för plugin-program (svarstid) och felfrekvenser vid toppanvändning?
Ja. Se följande exempelfråga för att förstå hur dina plugin-program fungerar.
dependencies
| where ['type'] == "Plugin"
| where name == "[Plugin name here]"
| summarize avg(duration) by bin(timestamp, 1h)
| render timechart
Kommer det att störa denna telemetri?
Ja. Grundläggande 429 felinformation finns för närvarande.
Kan jag förstå körvägar? Gör plugin-programmets anrop plugin-programmet långsammare?
Ja. Du kan visa alla meddelanden och plugin-program som körs för alla förfrågningar.
Varaktigheten för alla meddelanden och plugin-program körs loggas. Om någon plugin tar längre tid kan du identifiera plugin-programmet. Om plug-in gör en återuppringning till Dataverse, varaktigheten för det samtalet loggas. Mer information om tillägg planeras för framtida distribution.
Alla utgående samtal som görs av plugin-programmet loggas automatiskt som beroende.
Kan jag se telemetri för en specifik begäran?
Dataverse returnerar x-ms-service-requestId i rubriksvaret för alla förfrågningar. Med hjälp av denna requestId kan du fråga efter all telemetri.
union *
| where operation_ParentId contains <requestId>