Del via


Telemetrihendelser for Microsoft Dataverse

Dataflyten leverer for øyeblikket ytelsesdata relatert til Dataverse API-innkommende samtaler, Dataverse-utføringskall for programtillegg og Dataverse-SDK-kall. Den inneholder også data for feil i plugin-modul og Dataverse-SDK-operasjoner.

Dataverse API-innkommende anrop

Dette er kall som gjøres til Dataverse API. De kan komme fra Enhetlig grensesnitt (UCI), den eldre webklienten, tilpassede klienter som bruker SDK, og så videre. Du finner dem i forespørsler-tabellen i Application Insights, som har følgende felt:

  • Navn: Forespørselstypen. Disse faller inn under to kategorier:

    • Web-API-forespørsel: En forespørsel til OData v4-endepunktet som ofte brukes av Enhetlig grensesnitt og moderne klienter. Denne forespørselen transformeres til en operasjon som er felles for begge. Web-API er en "wrapper" for å aktivere RESTful-programmeringsmodellen, men når dataene er mottatt, blir alt det samme på serveren. Når svaret returneres, konverteres det til JSON hvis forespørselen kom fra web-API-en.
    • Organisasjonstjenesteforespørsel: En forespørsel til organisasjons-API-endepunktet som brukes av SDK-klienter eller den eldre webklienten.
  • Varighet: Hvor lang tid serveren brukte på å svare på forespørselen.

  • URL: URL-adressen som kallet ble foretatt til.

  • Tilpassede dimensjoner:

    • UserAgent: Application Insights fyller automatisk ut brukeragentfeltet med PC ettersom disse loggene sendes fra en server i et datasenter. Application Insights tillater ikke at brukeragentfeltet overstyres. Noen ganger er ikke brukeragentfeltet tilgjengelig for utfylling. Brukeragenten som samtalen ble utført fra, kan vises ved å bruke følgende spørring:

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

      Application Insights CustomDimensions UserAgent.

  • Operation_Name: Det lesbare navnet på operasjonen som skal vises i visninger, for eksempel ende-til-ende-transaksjonsvisningen.

Dataverse-logger for plugin-modulkjøringer

Disse loggene for egendefinerte plugin-moduler som kjører for en gitt operasjon, finnes i avhengighet-tabellen. Følgende er et eksempel på spørring:

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

Application Insights Dataverse-logger for plugin-modulkjøringer.

  • Navn/mål: Det fullstendige typenavnet for plugin-modulen som kjøres.
  • Varighet: Hvor lang tid det tok før plugin-modulen ble utført.
  • Tilpassede dimensjoner:
    • Dybde: Gjeldende dybde for utførelsen i anropsstabelen.
    • EntityName: Navnet på enheten som brukes av plugin-modulen.
    • IsolationType: En verdi som angir om plugin-modulen kjøres i sandkassen:
      • 1: Ingen
      • 2: Sandkasse
      • 3: Ekstern
    • PluginName: Det brukervennlige navnet på plugin-modulen.
    • PluginType: Navnet på typen plugin-modul som kjøres.
    • PluginVersion: Versjonen av den publiserte plugin-modulen. Intensjonen her er å kunne bruke denne informasjonen til å feilsøke versjonsoppdateringer.
    • Fase: Tilordner følgende verdier:
      • PreValidation = 10
      • PreOperation = 20
      • PreOperationBeforeExternalPlugins = 15
      • PreOperationAfterExternalPlugins = 25
      • MainOperation = 30
      • PostOperationBeforeExternalPlugins = 35
      • PostOperationAfterExternalPlugins = 45
      • PostOperation = 40
      • PostOperationDeprecated = 50
    • StepName: Navnet på SDK-meldingsbehandlingstrinnet. Dette genereres vanligvis av verktøyet for registrering av plugin-modul ved å bruke informasjon om PluginName, PluginType, og navnet på operasjonenfor eksempel ErrorMessageTest.ThrowException: Oppretting av konto.

Telemetri i plugin-kode

Hvis du vil forstå hva som skjer i plugin-modulkoden, kan du inkludere egendefinert telemetri fra plugin-modulen ved hjelp av Microsoft. Xrm.Sdk.PluginTelemetry.ILogger Grensesnitt i plugin-koden for å skrive telemetridata direkte til ressursen Application Insights . Mer informasjon: Skrive telemetri til Application Insights-ressursen ved hjelp av ILogger (forhåndsvesjon)

Dataverse SDK-logger

Dette er logger for SDK-operasjoner som utløses som en del av en innkommende forespørsel. Disse logges til -tabellen i avhengighet-tabellen i Application Insights, fordi de spores som avhengigheter for forespørselen som skal kjøres. De identifiseres med typenavnet og starter med SDK. Følgende er et eksempel på spørring:

dependencies
| where type startswith "SDK"
| take 10

Application Insights-spørrings-SDK.

  • Type: Typen SDK-forespørsel som utløses. Eksempler inkluderer Retrieve, RetrieveMultiple, FetchXmlToQueryExpression og WhoAmI.
  • Navn/mål: Dette er navnet på enheten som SDK-operasjonen er målrettet mot.
  • Tilpassede dimensjoner:
    • ClientType: Klienttypen samtalen kommer fra. Noen mulige verdier er Web, UCIClient og OutlookFull.
    • EntityId: Den unike identifikatoren for enheten som brukes.
    • EntityName: Navnet på enheten som brukes.

Unntak

Du vil se detaljer om feil i plugin-modul- og SDK-operasjoner i Application Insights. Unntak-tabellen i Application Insights driver Feil-panelen. Disse feildetaljene samsvarer med resten av hendelsene i plugin-modulen og SDK-kall i ende-til-ende-visning. All tilgjengelig informasjon legges til i kolonner når det er mulig, og til customDimensions når det ikke er nøyaktig samsvar med kolonner.

Du vil legge merke til at noen av feltene i unntak-tabellen ikke er fylt ut. Dette skyldes at disse feltene bare kan angis hvis Application Insights SDK brukes til å sende ut logger fra kilden. Denne funksjonen samler plattformtemetri og skyver den deretter til Application Insights i samsvar med Application Insights-skjemaet.

Application Insights-unntakstabell.

exceptions
| take 10

Denne spørringen returnerer alle attributtdetaljene fra unntak-tabellen.

  • problemId/type: Typen unntak.
  • outerMessage: Unntaksmeldingen.
  • tilpassede dimensjoner:
    • clientType: Klienttypen samtalen kommer fra. Noen mulige verdier er Web, UCIClient og OutlookFull.
    • exceptionSource: Plugin-modulen eller punktet der unntaket ble utløst.
    • entityName: Navnet på enheten som brukes.
    • pluginName: Navnet på plugin-modulen der unntaket ble utløst.

Application Insights-attributtdetaljer for unntakstabell.

Hvis en bruker rapporterer en feil, kan du bruke bruker-ID-en (Microsoft Entra ID) for å forstå detaljer fra unntakstabellen.

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

Enhets-ID-en og enhetsnavnet er tilgjengelige i customDimensions i avhengighet-tabellen.

dependencies
| where type == "SDK Retrieve"

Application Insights-spørring hent SDK.

Vanlige spørsmål

Her er noen vanlige spørsmål som er knyttet til telemetrihendelser for Dataverse.

Hvordan kan jeg finne ut om oppgraderingen av plugin-modulen forårsaket en ytelsesreduksjon?

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

Navnet på plugin-modulen må også inneholde versjonen for tilpassede plugin-moduler.

Hvordan var API-ens resultater før et rapportert problem, basert på klokkeslett eller plassering? Var API-forringelsesreduksjon gradvis eller plutselig?

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

Application Insights Tidsdiagram for API-ytelse.

I dette diagrammet kan vi se ytelsen til API-endepunkt over et tidsrom i tillegg til antall forespørsler som blir utført.

Du kan også konfigurere et varsel basert på ytelsen til en bestemt API her i Application Insights.

Kan jeg drille ned på feil på bestemte tidspunkt, eller for bestemte brukere slik at jeg kan forstå samtalestakken?

Hvis du ser på Feil-panelet, får du en oversikt over feilene i en angitt tidsperiode. Du kan deretter begrense til en bestemt feil basert på API-kallet eller avhengighetstypen for å se ende-til-ende-visningen.

Application Insights-feildetaljer.

Kan jeg oppretteegendefinert instrumentbord?

Ja. Du kan bygge egendefinerte instrumentbord med Application Insights.

Kan jeg finne ytelse (svartid) for bruk av plugin-moduler og feilrater under maksimal bruk?

Ja. Se følgende eksempelspørring for å finne ut hvordan plugin-modulene gjør det.

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

Ytelse for bruk av plugin-modul.

Skjer begrensning av telemetrien?

Ja. Grunnleggende 429-feildetaljer finnes for øyeblikket.

Kan jeg forstå utføringsbaner? Reduseres plugin-modulen av kall?

Ja. Du kan vise alle meldingene og plugin-modulene som kjøres for alle forespørsler.

Varigheten av all kjøring av meldinger og plugin-moduler logges. Hvis det tar mer tid å koble til en plugin-modul, kan du identifisere denne plugin-modulen. Hvis plugin-modulen foretar en tilbakekalling til Dataverse, logges varigheten av samtalen. Du finner mer informasjon om plugin-moduler i en fremtidig distribusjon.

Alle utgående anrop som utføres av plugin-modulen, logges automatisk som en avhengighet.

Ende-til-ende-transaksjon.

Kan jeg vise telemetri for en bestemt forespørsel?

Dataverse returnerer x-ms-service-requestId i hodesvaret for alle forespørsler. Ved hjelp av denne requestId kan du spørre etter all telemetri.

union *
| where operation_ParentId contains <requestId>