Dela via


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: Typen av begäran. Dessa indelas i två kategorier:

    • Webb-API-begäran: En förfrågan till OData v4-slutpunkt som vanligtvis 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.
    • Organisationsservicebegäran: En förfrågan till API-slutpunkt för organisation som används av SDK-klienter eller den gamla webbklienten.
  • Varaktighet: Den tid servern tog att besvara förfrågan.

  • Url: DeN URL som anropet gjordes till.

  • CustomDimensions:

    • 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)
      

      Application Insights CustomDimensions UserAgent.

  • Operation_Name: Det läsbara namnet på den åtgärd som ska visas i vyer, till exempel en vy från helhetstransaktionen.

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

Application Insights Dataverse plugin-körningsloggar.

  • Namn/mål: Det fullständiga typnamnet för det plugin-program som körs.
  • Varaktighet: Hur lång tid det tog för plugin-programmet att köras.
  • CustomDimensions:
    • Djup: Det aktuella djupet på körningen i anropsstapeln.
    • EntityName: Namnet på den entitet som ageras på av plugin-programmet.
    • IsolationType: Ett värde som anger om plugin-programmet körs i begränsat läge:
      • 1: Nej
      • 2: Sandbox-miljö
      • 3: Externt
    • PluginName: Eget namn på plugin-programmet.
    • PluginType: Namnet på den typ av plugin-program som körs.
    • PluginVersion: Den version av det publicerade plugin-programmet. Avsikten här är att kunna använda denna information för att felsöka versionuppdateringar.
    • Stadium: 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å SDK-meddelandebearbetningssteget. 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 din plug-in kod, kan du inkludera anpassade telemetri inifrån din plug-in med hjälp av Microsoft.Xrm.Sdk.PluginTelemetry.ILogger gränssnitt i plug-in kod att skriva telemetri data 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

Application Insights fråge-SDK.

  • Typ: Typ av SDK-begäran som utlösts. Exempel inkluderar Retrieve, RetrieveMultiple, FetchXmlToQueryExpression och WhoAmI.
  • Namn/mål: Det här är namnet på den entitet som SDK-åtgärden riktar sig till.
  • CustomDimensions:
    • 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å entiteten 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.

Application Insights undantagstabell.

exceptions
| take 10

Denna fråga returnerar alla attributdetaljer från undantagstabellen.

  • problemId/typ: Typ av undantag.
  • outerMessage: Meddelande om undantaget
  • customDimensions:
    • 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 den punkt där undantaget inträffade.
    • entityName: Namnet på entiteten som används.
    • pluginName: Namnet på det plugin-program som undantagen inträffade i.

Application Insights information om undantagstabellattribut.

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 == '12345678-68cd-4e73-908f-126342b36315'

Enhets-ID och enhetsnamn finns i customDimensions i beroendestabellen.

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

Application Insights SDK hämtar frågan.

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 

Application Insights API-prestandatidsdiagram.

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.

Application Insights felinformation.

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

Plug-in användningsprestanda.

Kommer det att störa denna telemetri?

Ja. Grundläggande 429 felinformation finns för närvarande.

Grundläggande 429-fel.

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.

Transaktion från slut till slut.

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>