Trovare e diagnosticare le eccezioni di runtime con Application Insights

Application Insights raccoglie i dati di telemetria dall'applicazione per identificare e diagnosticare le eccezioni di runtime. Questa esercitazione illustra l'esecuzione di questo processo con l'applicazione in uso. Si apprenderà come:

  • Modificare il progetto per abilitare il rilevamento delle eccezioni.
  • Identificare le eccezioni per i diversi componenti dell'applicazione.
  • Visualizzare i dettagli di un'eccezione.
  • Scaricare uno snapshot dell'eccezione in Visual Studio per il debug.
  • Analizzare i dettagli delle richieste non riuscite usando il linguaggio di query.
  • Creare un nuovo elemento di lavoro per correggere il codice difettoso.

Prerequisiti

Per completare questa esercitazione:

  • Installare Visual Studio 2019 con i carichi di lavoro seguenti:
    • Sviluppo Web e ASP.NET
    • Sviluppo di Azure
  • Scaricare e installare il debugger di snapshot di Visual Studio.
  • Abilitare il debugger snapshot di Visual Studio
  • Distribuire un'applicazione .NET in Azure e abilitare Application Insights SDK
  • Modificare il codice nell'ambiente di sviluppo o test per generare un'eccezione perché l'esercitazione tiene traccia dell'identificazione di un'eccezione nell'applicazione.

Accedere ad Azure

Accedere al portale di Azure.

Analizzare gli errori

Application Insights raccoglie eventuali errori nell'applicazione. Consente di visualizzare la frequenza tra diverse operazioni per concentrare gli sforzi su tali problemi con l'impatto più elevato. È quindi possibile eseguire il drill-down sui dettagli di questi errori per identificare la causa radice.

  1. Selezionare Application Insights e quindi selezionare la sottoscrizione in uso.

  2. Per aprire il riquadro Errori , selezionare Errori nel menu Analisi oppure selezionare il grafico Richieste non riuscite .

    Screenshot che mostra le richieste non riuscite.

  3. Il riquadro Richieste non riuscite mostra il numero di richieste non riuscite e il numero di utenti interessati per ogni operazione per l'applicazione. Ordinando queste informazioni in base all'utente, è possibile identificare gli errori che influiscono maggiormente sugli utenti. In questo esempio GET Employees/Create and GET Customers/Details sono probabilmente candidati da analizzare a causa del numero elevato di errori e degli utenti interessati. Selezionando un'operazione vengono visualizzate altre informazioni su questa operazione nel riquadro destro.

    Screenshot che mostra il riquadro Richieste non riuscite.

  4. Ridurre l'intervallo di tempo per ingrandire il periodo in cui la frequenza degli errori mostra un picco.

    Screenshot che mostra la finestra Richieste non riuscite.

  5. Per visualizzare gli esempi correlati, selezionare il pulsante con il numero di risultati filtrati. Gli esempi suggeriti hanno dati di telemetria correlati da tutti i componenti, anche se il campionamento potrebbe essere stato applicato in uno di essi. Selezionare un risultato della ricerca per visualizzare i dettagli dell'errore.

    Screenshot che mostra gli esempi di richiesta non riuscita.

  6. I dettagli della richiesta non riuscita mostrano il diagramma di Gantt che mostra che si sono verificati due errori di dipendenza in questa transazione, che hanno contribuito anche a più del 50% della durata totale della transazione. Questa esperienza presenta tutti i dati di telemetria tra i componenti di un'applicazione distribuita correlata a questo ID operazione. È possibile selezionare uno qualsiasi degli elementi per visualizzare i relativi dettagli sul lato destro.

    Screenshot che mostra i dettagli della richiesta non riuscita.

  7. Il dettaglio delle operazioni mostra anche un'eccezione di formato, che sembra aver causato l'errore. È possibile notare che si tratta di un cap non valido. È possibile aprire lo snapshot di debug per visualizzare le informazioni di debug a livello di codice in Visual Studio.

    Screenshot che mostra i dettagli dell'eccezione.

Identificare il codice responsabile dell'errore

Il debugger di snapshot raccoglie gli snapshot delle eccezioni più frequenti nell'applicazione per agevolare la diagnosi della causa radice nell'ambiente di produzione. È possibile visualizzare gli snapshot di debug nel portale per vedere lo stack di chiamate e ispezionare le variabili in ogni stack frame di chiamate. Successivamente, è possibile eseguire il debug del codice sorgente scaricando lo snapshot e aprendolo in Visual Studio 2019 Enterprise.

  1. Nelle proprietà dell'eccezione selezionare Apri snapshot di debug.

  2. Viene visualizzato il riquadro Snapshot di debug con lo stack di chiamate per la richiesta. Selezionare qualsiasi metodo per visualizzare i valori di tutte le variabili locali al momento della richiesta. A partire dal metodo top in questo esempio, è possibile visualizzare variabili locali senza valore.

    Screenshot che mostra il riquadro Debug snapshot.

  3. La prima chiamata con valori validi è ValidZipCode. È possibile notare che è stato fornito un cap con lettere che non possono essere convertite in un numero intero. Questo problema sembra essere l'errore nel codice che deve essere corretto.

    Screenshot che mostra un errore nel codice che deve essere corretto.

  4. È quindi possibile scaricare questo snapshot in Visual Studio in cui è possibile individuare il codice effettivo che deve essere corretto. A tale scopo, selezionare Scarica snapshot.

  5. Lo snapshot viene caricato in Visual Studio.

  6. È ora possibile eseguire una sessione di debug in Visual Studio Enterprise per identificare rapidamente la riga di codice che ha causato l'eccezione.

    Screenshot che mostra un'eccezione nel codice.

Usare i dati di analisi

Tutti i dati raccolti da Application Insights vengono archiviati in Azure Log Analytics, che offre un linguaggio di query avanzato che è possibile usare per analizzare i dati in diversi modi. È possibile usare questi dati per analizzare le richieste che hanno generato l'eccezione in corso di ricerca.

  1. Selezionare le informazioni di CodeLens sopra il codice per visualizzare i dati di telemetria forniti da Application Insights.

    Screenshot che mostra il codice in CodeLens.

  2. Selezionare Analizza impatto per aprire Application Insights Analytics. Viene popolata con diverse query che forniscono dettagli sulle richieste non riuscite, ad esempio utenti, browser e aree interessate.

    Screenshot che mostra la finestra di Application Insights che include diverse query.

Aggiungere un elemento di lavoro

Se si connette Application Insights a un sistema di rilevamento, ad esempio Azure DevOps o GitHub, è possibile creare un elemento di lavoro direttamente da Application Insights.

  1. Tornare al riquadro Proprietà eccezione in Application Insights.

  2. Selezionare Nuovo elemento di lavoro.

  3. Viene visualizzato il riquadro Nuovo elemento di lavoro con i dettagli sull'eccezione già popolata. È possibile aggiungere altre informazioni prima di salvarle.

    Screenshot che mostra il riquadro Nuovo elemento di lavoro.

Passaggi successivi

Dopo aver appreso come identificare le eccezioni di runtime, passare all'esercitazione successiva per informazioni su come identificare e diagnosticare i problemi di prestazioni.