Evenimente de telemetrie pentru Microsoft Dataverse
Notă
Noul și îmbunătățit Power Platform Centrul de administrare este acum în previzualizare publică! Am proiectat noul centru de administrare pentru a fi mai ușor de utilizat, cu o navigare orientată către sarcini care vă ajută să obțineți mai rapid rezultate specifice. Vom publica documentație nouă și actualizată pe măsură ce noul Power Platform centru de administrare va trece la disponibilitate generală.
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 cererii. Acestea se împart în două categorii:
- Solicitare API web: o solicitare către punctul final OData v4 care este utilizată în mod obișnuit de către Unified Interface și 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.
- Solicitare serviciu organizație: o solicitare către punctul final al API-ului organizației utilizat de clienții SDK sau clientul web vechi.
Durată: timpul necesar serverului pentru a răspunde la cerere.
Url: adresa URL la care a fost efectuat apelul.
CustomDimensions:
UserAgent: Application Insights populează automat câmpul user agent cu PC , deoarece aceste jurnaluri 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)
Operation_Name: numele lizibil al operațiunii de afișat în vizualizări, cum ar fi vizualizarea tranzacției de la capăt la capăt.
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
- Nume/Target: Numele tip complet calificat pentru plug-in-ul care se execută.
- Durată: timpul necesar pentru a fi executat plug-in-ul.
-
CustomDimensions:
- Adâncime: Adancimea actuală a execuției în stiva de apeluri.
- EntityName: numele entității asupra cărora plug-in-ul acționează.
-
IsolationType: O valoare care indică dacă plug-in-ul este executat în sandbox:
- 1: niciunul
- 2: Sandbox
- 3: Extern
- PluginName: numele ușor de utilizat al plug-in-ului.
- PluginType: numele tipului de plug-in care se execută.
- PluginVersion: versiunea plug-in-ului publicat. Intenția de aici este să puteți utiliza aceste informații pentru a depana actualizările de versiune.
-
Etapa: se afișează la următoarele valori:
- PreValidation = 10
- PreOperation = 20
- PreOperationBeforeExternalPlugins = 15
- PreOperationAfterExternalPlugins = 25
- MainOperation = 30
- PostOperationBeforeExternalPlugins = 35
- PostOperationAfterExternalPlugins = 45
- PostOperation = 40
- PostOperationDeprecated = 50
- StepName: numele pasului 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
- 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.
-
CustomDimensions:
- 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.
exceptions
| take 10
Această interogare va returna toate detaliile atributului din tabelul excepție.
- problemId/type: tipul excepției.
- outerMessage: mesajul de excepție.
-
customDimensions:
- 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 lansată excepția.
- entityName: numele entității utilizate.
- pluginName: numele plug-in-ului în care a fost lansată excepția.
Dacă un utilizator raportează o eroare, puteți utiliza ID-ul utilizatorului (Microsoft Entra ID ID) pentru a înțelege detaliile din tabelul excepție .
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"
Î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
Î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.
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
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ță.
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>