Partajați prin


Evenimente de telemetrie pentru Microsoft Dataverse

Fluxul de date oferă în prezent date de performanță legate de apeluri Dataverse API primite, apeluri de execuție inserturi Dataverse și apeluri Dataverse SDK. De asemenea, oferă date pentru eșecuri în insert și operațiuni Dataverse SDK.

Apeluri API Dataverse primite

Acestea sunt apeluri efectuate către API Dataverse. Pot fi de la Interfață unificată (UCI), clientul web moștenit, clienții personalizați care utilizează SDK și așa mai departe. Ele pot fi găsite în tabelul solicitări de Application Insights, care are următoarele câmpuri.

  • Nume: Tipul solicitării. Acestea se împart în două categorii:

    • Cerere API Web: O solicitare către endpoint-ul OData v4 utilizată în mod obișnuit de Interfața unificată și de clienții moderni. Această cerere este transformată într-o operație comună ambelor. Web API este un „wrapper” pentru a activa modelul de programare RESTful, dar după primirea datelor, totul devine același în cadrul serverului. Când răspunsul este returnat, acesta este convertit în JSON dacă cererea a venit de la API-ul Web.
    • Cerere de serviciu organizațional: O solicitare către punctul final al API-ului organizațional utilizat de clienții SDK sau de clientul web vechi.
  • Durată: Timpul necesar serverului pentru a răspunde solicitării.

  • Url: URL-ul către care a fost efectuat apelul.

  • Dimensiuni personalizate:

    • UserAgent: Application Insights populează automat câmpul agentului utilizator cu PC pe măsură ce aceste jurnale sunt transmise de pe un server dintr-un centru de date. Application Insights nu permite ca câmpul agentului utilizator să fie suprascris. Uneori, câmpul agentului utilizator nu este disponibil pentru a fi completat. Agentul utilizator de la care a fost efectuat apelul poate fi vizualizat utilizând următoarea interogare:

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

      Application Insights Agent utilizator CustomDimensions.

  • Operation_Name: Numele lizibil al operației care va fi afișat în vizualizări, cum ar fi vizualizarea tranzacțiilor complete.

Dataverse jurnale de execuție insert

Aceste jurnale pentru inserturile particularizate care rulează pentru o anumită operație se găsesc în tabelul dependenţă. Următorul este un exemplu de interogare:

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

Application Insights Dataverse jurnalele de execuție a plugin-urilor.

  • Nume/Țintă: Numele complet calificat al tipului pentru pluginul executat.
  • Durată: Timpul necesar pentru executarea pluginului.
  • Dimensiuni personalizate:
    • Adâncime: Adâncimea curentă a execuției în stiva de apeluri.
    • EntityName: Numele entității asupra căreia pluginul acționează.
    • IsolationType: O valoare care indică dacă pluginul este executat în sandbox:
      • 1: niciunul
      • 2: Sandbox
      • 3: Extern
    • PluginName: Numele ușor de utilizat al pluginului.
    • PluginType: Numele tipului de plugin care se execută.
    • PluginVersion: Versiunea pluginului publicat. Intenția de aici este să puteți utiliza aceste informații pentru a depana actualizările de versiune.
    • Etapa: Se mapează la următoarele valori:
      • PreValidare = 10
      • PreOperațiune = 20
      • PreOperationBeforeExternalPlugins = 15
      • PreOperationAfterExternalPlugins = 25
      • OperațiunePrincipală = 30
      • PostOperationBeforeExternalPlugins = 35
      • PostOperationAfterExternalPlugins = 45
      • PostOperation = 40
      • PostOperationDeprecated = 50
    • StepName: Numele etapei de procesare a mesajelor SDK. Acest lucru este generat, de obicei, de instrumentul de înregistrare a insertului, utilizând informații despre PluginName, PluginType, și numele operațiunii, de exemplu ErrorMessageTest.ThrowException: crearea contului.

Telemetrie în codul dvs. de insert

Pentru a înțelege ce se întâmplă în codul dvs. de insert, puteți include telemetrie personalizată din interiorul insertului utilizând Interfața Microsoft.Xrm.Sdk.PluginTelemetry.ILogger în codul dvs. de insert pentru a scrie date de telemetrie direct pe resursa Application Insights. Mai multe informații: Scrieți Telemetrie pentru resursa Application Insights folosind ILogger (Previzualizare)

Jurnale Dataverse SDK

Acestea sunt jurnale pentru operațiunile SDK declanșate ca parte a unei cereri primite. Acestea sunt conectate la tabelul dependenţă în Application Insights, deoarece sunt urmărite ca dependențe pentru solicitarea de executare. Acestea sunt identificate după numele tipului, începând cu SDK. Următorul este un exemplu de interogare:

dependencies
| where type startswith "SDK"
| take 10

Application Insights SDK-ul de interogare.

  • Tip: Tipul de solicitare SDK declanșată. Exemplele includ Retrieve, RetrieveMultiple, FetchXmlToQueryExpression și WhoAmI.
  • Nume/Țintă: Acesta este numele entității vizate de operațiunea SDK.
  • Dimensiuni personalizate:
    • ClientType: Tipul de client de la care provine apelul. Unele valori posibile sunt Web, UCIClient și OutlookFull.
    • EntityId: Identificatorul unic al entității utilizate.
    • EntityName: Numele entității utilizate.

Excepții

Veți vedea detalii despre eșecuri în insert și operațiuni SDK în Application Insights. Tabelul de excepții în Application Insights alimentează panoul Eșecuri. Aceste detalii de eșec se corelează cu restul evenimentelor din insert și cu apelurile SDK din vizualizarea de la un capăt la altul. Toate informațiile disponibile sunt adăugate la coloane atunci când este posibil și la customDimensions când nu există o potrivire exactă a coloanei.

Veți observa că unele dintre câmpurile din tabelul excepții nu este completat. Acest lucru se datorează faptului că aceste câmpuri pot fi setate numai dacă Application Insights SDK este utilizat pentru a emite jurnale de la sursă. Această caracteristică colectează telemetria platformei și apoi o împinge în Application Insights în concordanță cu schema Application Insights.

Application Insights tabelul excepțiilor.

exceptions
| take 10

Această interogare va returna toate detaliile atributului din tabelul excepție.

  • problemId/type: Tipul excepției.
  • outerMessage: Mesajul de excepție.
  • Dimensiuni personalizate:
    • clientType: Tipul de client de la care provine apelul. Unele valori posibile sunt Web, UCIClient și OutlookFull.
    • exceptionSource: Pluginul sau punctul în care a fost generată excepția.
    • entityName: Numele entității utilizate.
    • pluginName: Numele pluginului în care a fost generată excepția.

Application Insights detalii despre atributele tabelului de excepții.

Dacă un utilizator raportează o eroare, puteți utiliza ID-ul utilizatorului (Microsoft Entra ID ID) pentru a înțelege detaliile din tabelul de excepții .

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

ID-ul entității și numele entității sunt disponibile în customDimensions în tabelul dependenţă.

dependencies
| where type == "SDK Retrieve"

Application Insights Interogare de preluare SDK.

Întrebări Frecvente (FAQ)

Următoarele sunt câteva întrebări frecvente legate de evenimente de telemetrie pentru Dataverse.

Cum pot determina dacă upgrade-ul meu de insert a cauzat o degradare a performanței?

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

Numele insertului trebuie să conțină și versiunea pentru inserturile particularizate.

Cum funcționa API înainte de o problemă raportată, în funcție de ora din zi sau locație? A fost degradarea API treptată sau bruscă?

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

Application Insights Diagrama temporală a performanței API.

În acest grafic, putem vedea performanța punctului final API pe o perioadă de timp în raport cu numărul de solicitări efectuate.

Puteți de asemenea să configurați o alertă pe baza performanței unui anumit API aici în cadrul Application Insights.

Pot face drill down asupra erorilor sau eșecurilor la anumite ore sau pentru anumiți utilizatori pentru a permite înțelegerea stivei de apeluri?

Privind panoul Eșecuri oferă o prezentare generală a eșecurilor într-o anumită perioadă de timp. Puteți restrânge apoi la un eșec specific pe baza apelului API sau a tipului de dependență pentru a vedea vizualizarea de la un capăt la altul.

Application Insights detalii despre eșecuri.

Pot crea tablouri de bord particularizate?

Da. Puteți construi tablouri de bord personalizate cu Application Insights.

Pot determina performanța utilizării insertului (timpul de răspuns) și ratele de eșec în timpul utilizării de vârf?

Da. Consultați următorul exemplu de interogare pentru a înțelege performanța inserturilor dvs.

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

Performanța de utilizare a plugin-urilor.

Va avea această telemetrie o restricție?

Da. În prezent sunt furnizate detalii de bază despre eroare 429.

Pot să înțeleg căile de execuție? Apelurile efectuate de insert încetinesc insertul?

Da. Puteți vizualiza toate mesajele și inserturile care sunt executate pentru orice solicitare.

Durata tuturor mesajelor și a execuției insertului este înregistrată. Dacă vreun insert necesită mai mult timp, îl puteți identifica. Dacă insertul efectuează un apel invers către Dataverse, durata acelui apel este înregistrată. Mai multe informații despre inserturi sunt planificate pentru implementarea viitoare.

Orice apel de ieșire efectuat de insert va fi înregistrat automat ca dependență.

Tranzacție end-to-end.

Pot vizualiza telemetria pentru o anumită solicitare?

Dataverse returnează x-ms-service-requestId în răspunsul antetului la toate cererile. Folosind acest requestId, puteți solicita toate telemetriile.

union *
| where operation_ParentId contains <requestId>