Eventi di telemetria per Microsoft Dataverse

Il flusso dei dati attualmente fornisce dati sulle prestazioni relativi alle chiamate in arrivo dell'API Dataverse, alle chiamate di esecuzione del plug-in Dataverse e alle chiamate dell'SDK Dataverse. Fornisce anche dati relativi a errori nelle operazione dell'SDK Dataverse e del plug-in.

Chiamate in arrivo dell'API Dataverse

Queste sono le chiamate all'API Dataverse. Possono provenire da Unified Interface (UCI), dal client Web legacy, da client personalizzati che utilizzano l'SDK e così via. Si trovano nella tabella richieste di Application Insights, che ha i seguenti campi.

  • Nome: il tipo di richiesta. Rientrano in due categorie:

    • Richiesta API Web: una richiesta all'endpoint OData v4 comunemente usata da Unified Interface e dai client moderni. Questa richiesta viene trasformata in un'operazione comune ad entrambi. L'API Web è un "wrapper" per abilitare il modello di programmazione RESTful, ma dopo la ricezione dei dati, tutto diventa uguale nel server. La risposta restituita viene convertita in JSON se la richiesta proviene dall'API Web.
    • Richiesta di servizio organizzativo: una richiesta all'endpoint API dell'organizzazione utilizzato dai client SDK o dal client Web legacy.
  • Durata: il tempo impiegato dal server per rispondere alla richiesta.

  • URL: l'URL a cui è stata effettuata la chiamata.

  • CustomDimensions:

    • UserAgent: Application Insights popola automaticamente il campo agente utente con PC poiché viene eseguito il push di questi log da un server in un data center. Application Insights non consente l'override del campo agente utente. A volte, il campo dell'agente utente non può essere popolato. L'agente utente da cui è stata effettuata la chiamata può essere visualizzato utilizzando la seguente query:

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

      Application Insights CustomDimensions UserAgent.

  • Operation_Name: il nome leggibile dell'operazione da visualizzare nelle viste, come la vista delle transazioni end-to-end.

Log delle esecuzioni del plug-in Dataverse

Questi log per i plug-in personalizzati in esecuzione per una determinata operazione si trovano nella tabella dipendenza. Quella che segue è una query di esempio:

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

Log delle esecuzioni del plug-in Application Insights Dataverse.

  • Nome/Destinazione: il nome di tipo completo del plug-in in esecuzione.
  • Durata: il tempo impiegato per l'esecuzione del plug-in.
  • CustomDimensions:
    • Profondità: la Profondità corrente dell'esecuzione nello stack di chiamate.
    • EntityName: il nome dell'entità attivata dal plug-in.
    • IsolationType: un valore che indica se il plug-in viene eseguito nella sandbox:
      • 1: Nessuno
      • 2: Sandbox
      • 3: Esterno
    • PluginName: il nome descrittivo dell'utente del plug-in.
    • PluginType: il nome del tipo di plug-in in esecuzione.
    • PluginVersion: la versione del plug-in pubblicato. L'intenzione è quella di poter utilizzare queste informazioni per risolvere i problemi relativi agli aggiornamenti di versione.
    • Fase: esegue il mapping ai seguenti valori:
      • PreValidation = 10
      • PreOperation = 20
      • PreOperationBeforeExternalPlugins = 15
      • PreOperationAfterExternalPlugins = 25
      • MainOperation = 30
      • PostOperationBeforeExternalPlugins = 35
      • PostOperationAfterExternalPlugins = 45
      • PostOperation = 40
      • PostOperationDeprecated = 50
    • StepName: il nome del passaggio di elaborazione messaggi SDK. Di solito viene generato dallo strumento per la registrazione del plug-in mediante le informazioni PluginName, PluginType e il nome dell'operazione, ad esempio ErrorMessageTest.ThrowException: creazione dell'account.

Telemetria nel codice del plug-in

Per capire cosa succede nel codice del plug-in, è possibile includere la telemetria personalizzata del plug-in utilizzando l'Interfaccia Microsoft.Xrm.Sdk.PluginTelemetry.ILogger nel codice del plug-in per scrivere i dati di telemetria direttamente nella risorsa Application Insights. Maggiori informazioni: Scrivere dati di telemetria nella risorsa Application Insights utilizzando ILogger (anteprima)

Log dell'SDK Dataverse

Questi sono i log per le operazioni SDK attivate nell'ambito di una richiesta in entrata. Questi sono registrati nella tabella dipendenza in Application Insights, poiché vengono registrati come dipendenze per la richiesta da eseguire. Sono identificati dal nome del tipo, che inizia con SDK. Quella che segue è una query di esempio:

dependencies
| where type startswith "SDK"
| take 10

SDK query Application Insights.

  • Tipo: il tipo di richiesta SDK attivata. Gli esempi includono Retrieve, RetrieveMultiple, FetchXmlToQueryExpression e WhoAmI.
  • Nome/Destinazione: il nome dell'entità interessata dall'operazione SDK.
  • CustomDimensions:
    • ClientType: il tipo di client da cui proviene la chiamata. Alcuni valori possibili sono Web, UCIClient e OutlookFull.
    • EntityId: l'identificatore univoco dell'entità in uso.
    • EntityName: il nome dell'entità utilizzata.

Eccezioni

Verranno visualizzati i dettagli degli errori nelle operazioni SDK e del plug-in in Application Insights. La tabella eccezioni in Application Insights alimenta il pannello Errori. Questi dettagli sull'errore sono correlati al resto degli eventi nelle chiamate del plug-in e dell'SDK nella visualizzazione end-to-end. Tutte le informazioni disponibili vengono aggiunte alle colonne quando possibile e a customDimensions quando non esiste una corrispondenza esatta della colonna.

Noterai che alcuni dei campi nella tabella eccezioni non sono popolati. Questo perché tali campi possono essere impostati solo se l'SDK di Application Insights viene utilizzato per emettere log dall'origine. Questa funzionalità raccoglie i dati di telemetria della piattaforma e ne esegue il push in Application Insights in conformità con lo schema di Application Insights.

Tabella delle eccezioni in Application Insights.

exceptions
| take 10

Questa query restituirà tutti i dettagli dell'attributo dalla tabella eccezioni.

  • problemId/type: il tipo di eccezione.
  • outerMessage: il messaggio dell'eccezione.
  • customDimensions:
    • clientType: il tipo di client da cui proviene la chiamata. Alcuni valori possibili sono Web, UCIClient e OutlookFull.
    • exceptionSource: il plug-in o il punto in cui è stata generata l'eccezione.
    • entityName: il nome dell'entità utilizzata.
    • pluginName: il nome del plug-in in cui è stata generata l'eccezione.

Dettagli dell'attributo della tabella delle eccezioni di Application Insights.

Se un utente segnala un errore, puoi utilizzare l'ID utente (ID di Microsoft Entra ID) per comprendere i dettagli della tabella eccezioni.

exceptions
| where user_Id == '12345678-68cd-4e73-908f-126342b36315'

L'ID entità e il nome dell'entità sono disponibili in customDimensions nella tabella dipendenze.

dependencies
| where type == "SDK Retrieve"

Query di recupero dell'SDK Application Insights.

Domande frequenti

Di seguito sono riportate alcune domande frequenti relative agli eventi di telemetria per Dataverse.

Come posso determinare se l'aggiornamento del plug-in ha causato un peggioramento delle prestazioni?

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

Il nome del plug-in deve contenere anche la versione per i plug-in personalizzati.

Quali erano le prestazioni dell'API prima di un problema segnalato, in base all'ora del giorno o al luogo? La degradazione dell'API è stata graduale o improvvisa?

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

Grafico temporale delle prestazioni di Application Insights.

In questo grafico, possiamo vedere le prestazioni dell'endpoint API in un periodo di tempo rispetto al numero di richieste effettuate.

Puoi anche impostare un avviso in base alle prestazioni di una particolare API qui in Application Insights.

Posso eseguire il drill-down degli errori in determinati momenti o per utenti specifici per comprendere dello stack di chiamate?

Il pannello Errori fornisce una panoramica degli errori in un determinato periodo di tempo. È quindi possibile visualizzare uno specifico errore in base alla chiamata API o al tipo di dipendenza per visualizzare la visualizzazione end-to-end.

Dettagli degli errori in Application Insights.

Posso creare dashboard personalizzati?

Sì. Puoi creare dashboard personalizzati con Application Insights.

Posso determinare le prestazioni di utilizzo del plug-in (tempo di risposta) e i tassi di errore durante i picchi di utilizzo?

Sì. Consulta la seguente query di esempio per capire come si comportano i plug-in.

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

Prestazioni di utilizzo dei plug-in.

Esiste una limitazione per questa telemetria?

Sì. Attualmente vengono forniti i dettagli dell'errore di base 429.

È possibile comprendere i percorsi di esecuzione? Le chiamate effettuate dal plug-in rallentano il plug-in?

Sì. Puoi visualizzare tutti i messaggi e i plug-in eseguiti per qualsiasi richiesta.

Viene registrata la durata di tutti i messaggi e l'esecuzione dei plug-in. Se un plug-in richiede più tempo, puoi identificarlo. Se il plug-in sta effettuando una richiamata a Dataverse, la durata della chiamata viene registrata. Ulteriori informazioni sui plug-in sono previste per distribuzioni future.

Qualsiasi chiamata in uscita effettuata dal plug-in verrà automaticamente registrata come dipendenza.

Transazione end-to-end.

Posso visualizzare la telemetria per una richiesta specifica?

Dataverse restituisce x-ms-service-requestId nella risposta dell'intestazione a tutte le richieste. Usando questo requestId, puoi eseguire query per tutti i dati di telemetria.

union *
| where operation_ParentId contains <requestId>