Delen via


Telemetriegebeurtenissen voor Microsoft Dataverse

Notitie

Het nieuwe en verbeterde Power Platform-beheercentrum is nu beschikbaar als openbare preview! We hebben het nieuwe beheercentrum zo ontworpen dat het gebruiksvriendelijker is, met taakgerichte navigatie waarmee u sneller specifieke resultaten kunt behalen. Nieuwe en bijgewerkte documentatie wordt gepubliceerd zodra het nieuwe Power Platform-beheercentrum algemeen beschikbaar is.

De gegevensstroom biedt momenteel prestatiegegevens met betrekking tot inkomende Dataverse-API-oproepen, uitvoeringsoproepen van Dataverse-plug-ins, en Dataverse-SDK-oproepen. Verder biedt de gegevensstroom gegevens voor fouten in plug-in- en Dataverse-SDK-bewerkingen.

Inkomende Dataverse-API-oproepen

Dit zijn oproepen naar de Dataverse-API. Ze kunnen afkomstig zijn van Unified Interface (UCI), de oude webclient, aangepaste clients die gebruikmaken van de SDK, enzovoort. Ze zijn te vinden in de tabel verzoeken van Application Insights, die de volgende velden heeft.

  • Naam: het type aanvraag. Deze vallen in twee categorieën:

    • Web-API-verzoek: een verzoek aan het OData v4-eindpunt, vaak gebruikt door Unified Interface en moderne clients. Dit verzoek wordt omgezet in een bewerking die voor beide geldig is. Web-API is een 'wrapper' om het RESTful-programmeermodel in te schakelen, maar nadat de gegevens zijn ontvangen, wordt alles hetzelfde binnen de server. Wanneer het antwoord wordt geretourneerd, wordt het geconverteerd naar JSON als het verzoek afkomstig is van de Web-API.
    • Organisatieserviceaanvraag: een aanvraag voor het organisatie-API-eindpunt dat wordt gebruikt door SDK-clients of de verouderde webclient.
  • Duur: de hoeveelheid tijd die de server nodig had om op het verzoek te reageren.

  • URL: de URL waarnaar de oproep is gedaan.

  • CustomDimensions:

    • UserAgent: Application Insights vult het veld Gebruikersagent automatisch in met PC omdat deze logboeken van een server naar een datacenter worden gepusht. Application Insights staat niet toe dat het veld Gebruikersagent wordt overschreven. Soms is het veld Gebruikersagent niet beschikbaar om in te vullen. De gebruikersagent vanwaar de oproep is gedaan, kan worden bekeken met behulp van de volgende query:

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

      Application Insights CustomDimensions UserAgent.

  • Operation_Name: de leesbare naam van de bewerking die moet worden weergegeven in weergaven, zoals de end-to-end transactieweergave.

Uitvoeringslogboeken Dataverse-plug-ins

Deze logboeken voor aangepaste plug-ins die voor een bepaalde bewerking worden uitgevoerd, zijn te vinden in de tabel afhankelijkheid. Het volgende is een voorbeeldquery:

dependencies
| where type == "Plugin"
| take 100

Uitvoeringslogboeken  Application Insights Dataverse-plug-ins.

  • Naam/Doel: de volledig gekwalificeerde typenaam voor de plug-in die wordt uitgevoerd.
  • Duur: de hoeveelheid tijd die nodig was om de plug-in uit te voeren.
  • CustomDimensions:
    • Diepte: de huidige diepte van de uitvoering in de callstack.
    • Entiteitsnaam: de naam van de entiteit waarop de plug-in actie onderneemt.
    • IsolatieType: een waarde die aangeeft of de plug-in wordt uitgevoerd in de sandbox:
      • 1: Geen
      • 2: Sandbox
      • 3: Extern
    • PluginName: de gebruikersvriendelijke naam van de plug-in.
    • PluginType: de naam van het type plug-in dat wordt uitgevoerd.
    • PluginVersion: de versie van de gepubliceerde plug-in. Deze informatie is bedoeld om te helpen bij het oplossen van problemen met versie-updates.
    • Stadium: verwijst naar de volgende waarden:
      • PreValidation = 10
      • PreOperation = 20
      • PreOperationBeforeExternalPlugins = 15
      • PreOperationAfterExternalPlugins = 25
      • MainOperation = 30
      • PostOperationBeforeExternalPlugins = 35
      • PostOperationAfterExternalPlugins = 45
      • PostOperation = 40
      • PostOperationDeprecated = 50
    • StepName: de naam van de SDK Message Processing-stap. Dit wordt meestal gegenereerd door de registratietool voor plug-ins aan de hand van informatie over de PluginName, het PluginType en de naam van de bewerking, bijvoorbeeld ErrorMessageTest.ThrowException: Account aanmaken.

Telemetrie in de code van de plug-in

Om te begrijpen wat er gebeurt in de code van uw plug-in, kunt u aangepaste telemetrie opnemen vanuit uw plug-in met behulp van de Microsoft.Xrm.Sdk.PluginTelemetry.ILogger-interface in uw plug-incode om telemetriegegevens rechtstreeks naar uw Application Insights-bron te schrijven. Meer informatie: Telemetrie schrijven naar uw Application Insights-bron met behulp van ILogger (preview)

Dataverse-SDK-logboeken

Dit zijn logboeken voor SDK-bewerkingen die worden geactiveerd als onderdeel van een inkomend verzoek. Deze worden gelogd in de tabel afhankelijkheid in Application Insights, omdat ze worden bijgehouden als afhankelijkheden voor het uitvoeren van de aanvraag. Ze worden geïdentificeerd door de typenaam, beginnend met SDK. Het volgende is een voorbeeldquery:

dependencies
| where type startswith "SDK"
| take 10

Application Insights-query SDK.

  • Type: het type SDK-aanvraag dat is geactiveerd. Voorbeelden zijn Retrieve, RetrieveMultiple, FetchXmlToQueryExpression en WhoAmI.
  • Naam/Doel: dit is de naam van de entiteit waarop de SDK-bewerking is gericht.
  • CustomDimensions:
    • ClientType: het type cliënt waar de oproep vandaan komt. Enkele mogelijke waarden zijn Web, UCIClient en OutlookFull.
    • EntityID: de unieke id van de entiteit die wordt gebruikt.
    • EntityName: de naam van de entiteitset van de entiteit die wordt gebruikt.

Uitzonderingen

U ziet details van fouten in plug-in- en SDK-bewerkingen in Application Insights. Het deelvenster Fouten wordt gevoegd door de tabel met uitzonderingen in Application Insights. Deze foutdetails correleren met de rest van de gebeurtenissen in de plug-in en SDK-aanroepen in de end-to-end-weergave. Alle beschikbare informatie wordt waar mogelijk aan kolommen toegevoegd en aan customDimensions wanneer er geen exacte kolomovereenkomst is.

U zult merken dat sommige velden in de tabel uitzonderingen niet worden ingevuld. Dit komt omdat deze velden alleen kunnen worden ingesteld als de Application Insights-SDK wordt gebruikt voor het uitzenden van logboeken van de bron. Deze functie verzamelt platformtelemetrie en pusht deze vervolgens naar Application Insights overeenkomstig het Application Insights-schema.

Tabel Application Insights-uitzonderingen.

exceptions
| take 10

Deze query retourneert alle attribuutdetails uit de tabel uitzondering.

  • problemId/type: het type uitzondering.
  • outerMessage: het uitzonderingsbericht.
  • customDimensions:
    • clientType: het type cliënt waar de oproep vandaan komt. Enkele mogelijke waarden zijn Web, UCIClient en OutlookFull.
    • exceptionSource: de plug-in of het punt waar de uitzondering is gegenereerd.
    • entityName: de naam van de entiteitset van de entiteit die wordt gebruikt.
    • pluginName: de naam van de plug-in waar de uitzondering is gegenereerd.

Details van kenmerken in de tabel Application Insights-uitzonderingen.

Als een gebruiker een fout meldt, kunt u de gebruikers-ID (Microsoft Entra ID) gebruiken om details uit de tabel uitzondering te begrijpen.

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

De entiteits-ID en entiteitsnaam zijn beschikbaar in customDimensions in de tabel afhankelijkheid.

dependencies
| where type == "SDK Retrieve"

Ophaalquery Application Insights-SDK.

Veelgestelde vragen (FAQ's)

Hieronder volgen enkele veelgestelde vragen over telemetriegebeurtenissen in Dataverse.

Hoe kan ik bepalen of de upgrade van mijn plug-in een prestatievermindering heeft veroorzaakt?

dependencies
| where ['type'] == "Plugin"
| where name startswith "[InsertYourPluginName]"
| summarize avg(duration) by name

De naam van de plug-in moet ook de versie voor aangepaste plug-ins bevatten.

Hoe presteerde de API eerder op een gemeld probleem, op basis van tijd van de dag of locatie? Was de verslechtering van de API geleidelijk of plotseling?

requests
| where url == "https://<URLHere>"
| summarize avg(duration), count() by bin(timestamp, 1h)
| render timechart 

Tijdgrafiek Application Insights-API-prestaties.

In deze grafiek kunnen we de prestaties van het API eindpunt over een bepaalde periode zien ten opzichte van het aantal verzoeken dat wordt gedaan.

U kunt ook een waarschuwing instellen gebaseerd op de prestaties van een bepaalde API binnen Application Insights.

Kan ik inzoomen op fouten of storingen op specifieke tijden of voor specifieke gebruikers om meer inzicht te krijgen in de callstack?

Het paneel Storingen geeft een overzicht van de storingen in een bepaalde periode. U kunt vervolgens inzoomen op een storing op basis van de API-aanroep of het afhankelijkheidstype om de end-to-end-weergave te bekijken.

Application Insights-foutdetails.

Kan ik aangepaste dashboards maken?

Ja. U kunt aangepaste dashboards maken met Application Insights.

Kan ik de gebruiksprestaties van plug-ins (responstijd) en uitvalpercentages tijdens piekgebruik bepalen?

Ja. Zie de volgende voorbeeldquery om te begrijpen hoe uw plug-ins presteren.

dependencies
| where ['type'] == "Plugin"
| where name == "[Plugin name here]"
| summarize avg(duration) by bin(timestamp, 1h)
| render timechart

Gebruiksprestaties van plug-ins.

Beschikt deze telemetrie over aanvraagbeperking?

Ja. Er worden momenteel details verstrekt over Basic 429-fouten.

Kan ik uitvoeringspaden begrijpen? Wordt de plug-in vertraagd door oproepen die door de plug-in worden verricht?

Ja. U kunt alle berichten en plug-ins die voor elk verzoek worden uitgevoerd bekijken.

De duur van de uitvoering van alle berichten en plug-ins wordt vastgelegd. Als een plug-in meer tijd kost, kunt u die plug-in identificeren. Als de plug-in een callback uitvoert naar Dataverse, wordt de duur van die oproep vastgelegd. Meer informatie over plug-ins is gepland voor toekomstige implementatie.

Elke uitgaande oproep die door de plug-in wordt gedaan, wordt automatisch geregistreerd als een afhankelijkheid.

End-to-end-transactie.

Kan ik telemetrie bekijken voor een specifiek verzoek?

Dataverse retourneert x-ms-service-requestId in het headerantwoord op alle aanvragen. Met deze requestId kunt u alle telemetrie opvragen.

union *
| where operation_ParentId contains <requestId>