Risolvere i problemi relativi all'abilitazione di Application Insights Snapshot Debugger o alla visualizzazione di snapshot
Se Application Insights Snapshot Debugger è stato abilitato per l'applicazione, ma non vengono visualizzati snapshot per le eccezioni, è possibile usare queste istruzioni per risolvere i problemi.
Esistono molti motivi diversi per cui gli snapshot non vengono generati. È possibile iniziare eseguendo il controllo dell'integrità dello snapshot per identificare alcune delle possibili cause comuni.
Scenari non supportati
Di seguito sono disponibili scenari in cui Snapshot Collector non è supportato:
Scenario | Effetti collaterali | Consiglio |
---|---|---|
Quando si usa direttamente Snapshot Collector SDK nell'applicazione (con estensione csproj) e si è abilitata l'opzione avanzata "Interop". | L'SDK di Application Insights locale (inclusi i dati di telemetria dell'agente di raccolta snapshot) andrà perso; pertanto, non saranno disponibili snapshot. L'applicazione potrebbe arrestarsi in modo anomalo all'avvio con System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor Per altre informazioni sulla funzionalità "Interoperabilità" di Application Insights, vedere Monitoraggio delle applicazioni per Servizio app di Azure e ASP.NET Core. |
Se si usa l'opzione avanzata "Interop", usare l'inserimento senza codice dell'agente di raccolta snapshot (abilitato tramite l'esperienza utente portale di Azure). |
Assicurarsi di usare l'endpoint snapshot debugger appropriato
Attualmente le uniche aree che richiedono modifiche dell'endpoint sono Azure per enti pubblici e Azure Cina.
Per servizio app e le applicazioni che usano Application Insights SDK, è necessario aggiornare il stringa di connessione usando le sostituzioni supportate per Snapshot Debugger, come definito di seguito:
Proprietà stringa di connessione | Cloud per enti pubblici degli Stati Uniti | China Cloud |
---|---|---|
SnapshotEndpoint | https://snapshot.monitor.azure.us |
https://snapshot.monitor.azure.cn |
Per altre informazioni su altre sostituzioni di connessione, vedere la documentazione di Application Insights.
Per l'app per le host.json
funzioni, è necessario aggiornare usando le sostituzioni supportate di seguito:
Proprietà | Cloud per enti pubblici degli Stati Uniti | China Cloud |
---|---|---|
AgentEndpoint | https://snapshot.monitor.azure.us |
https://snapshot.monitor.azure.cn |
Di seguito è riportato un esempio dell'aggiornamento host.json
con l'endpoint dell'agente cloud us government:
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingExcludedTypes": "Request",
"samplingSettings": {
"isEnabled": true
},
"snapshotConfiguration": {
"isEnabled": true,
"agentEndpoint": "https://snapshot.monitor.azure.us"
}
}
}
}
Usare il controllo di integrità dello snapshot
Diversi problemi comuni provocano la mancata visualizzazione dello snapshot di debug aperto. Ad esempio, viene usato un agente di raccolta snapshot obsoleto; viene raggiunto il limite di caricamento giornaliero; o forse lo snapshot richiede molto tempo per il caricamento. Usare Controllo integrità snapshot per risolvere i problemi comuni.
Nel riquadro eccezioni della visualizzazione di traccia end-to-end è presente un collegamento che consente di accedere al controllo integrità snapshot.
L'interfaccia interattiva, simile a una chat, cerca i problemi comuni e guida l'utente a risolverli.
Se il problema non viene risolto, fare riferimento alla procedura di risoluzione manuale seguente.
Verificare la chiave di strumentazione
Assicurarsi di usare la chiave di strumentazione corretta nell'applicazione pubblicata. In genere, la chiave di strumentazione viene letta dal file ApplicationInsights.config . Verificare che il valore corrisponda alla chiave di strumentazione per la risorsa di Application Insights visualizzata nel portale.
Il 31 marzo 2025 il supporto per l'inserimento di chiavi di strumentazione terminerà. L'inserimento della chiave di strumentazione continuerà a funzionare, ma non verranno più forniti aggiornamenti o supporto per la funzionalità. Passare alle stringhe di connessione per sfruttare le nuove funzionalità.
Controllare le impostazioni client TLS/SSL (ASP.NET)
Se si dispone di un'applicazione ASP.NET ospitata in Servizio app di Azure o iis in una macchina virtuale, l'applicazione potrebbe non riuscire a connettersi al servizio Snapshot Debugger a causa di un protocollo di sicurezza SSL mancante.
L'endpoint snapshot debugger richiede TLS versione 1.2. Il set di protocolli di sicurezza SSL è una delle stranezze abilitate dal httpRuntime targetFramework
valore nella system.web
sezione di web.config
.
Se è httpRuntime targetFramework
4.5.2 o inferiore, TLS 1.2 non è incluso per impostazione predefinita.
Nota
Il httpRuntime targetFramework
valore è indipendente dal framework di destinazione usato durante la compilazione dell'applicazione.
Per controllare l'impostazione, aprire il file web.config e trovare la sezione system.web. Assicurarsi che per targetFramework
httpRuntime
sia impostato su 4.6 o versione successiva.
<system.web>
...
<httpRuntime targetFramework="4.7.2" />
...
</system.web>
Nota
La modifica del httpRuntime targetFramework
valore modifica le caratteristiche di runtime applicate all'applicazione e può causare altre modifiche al comportamento sottili. Assicurarsi di testare accuratamente l'applicazione dopo aver apportato questa modifica. Per un elenco completo delle modifiche di compatibilità, vedere Reindirizzamento delle modifiche.
Nota
Se è targetFramework
4.7 o versione successiva, Windows determina i protocolli disponibili. In Servizio app di Azure È disponibile TLS 1.2. Tuttavia, se si usa una macchina virtuale personalizzata, potrebbe essere necessario abilitare TLS 1.2 nel sistema operativo.
Versioni di anteprima di .NET Core
Se si usa una versione di anteprima di .NET Core o l'applicazione fa riferimento ad Application Insights SDK, direttamente o indirettamente tramite un assembly dipendente, seguire le istruzioni per Abilitare snapshot debugger per altri ambienti.
Controllare la pagina stato dell'estensione del sito Servizi di diagnostica
Se Snapshot Debugger è stato abilitato tramite il riquadro Application Insights nel portale, è stato abilitato dall'estensione del sito Servizi di diagnostica.
Nota
L'installazione senza codice di Application Insights Snapshot Debugger segue i criteri di supporto di .NET Core. Per altre informazioni sui runtime supportati, vedere Criteri di supporto di .NET Core.
È possibile controllare la pagina stato di questa estensione passando all'URL seguente: https://{site-name}.scm.azurewebsites.net/DiagnosticServices
Nota
Il dominio del collegamento Pagina stato varia a seconda del cloud. Questo dominio sarà lo stesso del sito di gestione Kudu per servizio app.
Questa pagina di stato mostra lo stato di installazione degli agenti Profiler e Snapshot Collector. Se si è verificato un errore imprevisto, verrà visualizzato e verrà illustrato come risolverlo.
È possibile usare il sito di gestione Kudu per servizio app per ottenere l'URL di base di questa pagina di stato:
- Aprire l'applicazione servizio app nel portale di Azure.
- Selezionare Strumenti avanzati o cercare Kudu.
- Seleziona Vai.
- Una volta che si è nel sito di gestione Kudu, nell'URL aggiungere e
/DiagnosticServices
premere INVIO. Terminerà come segue:https://<kudu-url>/DiagnosticServices
.
Eseguire l'aggiornamento alla versione più recente del pacchetto NuGet
In base alla modalità di abilitazione di Snapshot Debugger, vedere le opzioni seguenti:
Se Snapshot Debugger è stato abilitato tramite il riquadro Application Insights nel portale, l'applicazione deve già eseguire il pacchetto NuGet più recente.
Se Snapshot Debugger è stato abilitato includendo il pacchetto NuGet Microsoft.ApplicationInsights.SnapshotCollector , usare Gestione pacchetti NuGet di Visual Studio per assicurarsi di usare la versione più recente di
Microsoft.ApplicationInsights.SnapshotCollector
.
Per gli aggiornamenti e le correzioni di bug più recenti, vedere le note sulla versione.
Controllare i log del caricatore
Dopo aver creato uno snapshot, viene creato un file minidump (.dmp) sul disco. Un processo di caricamento separato crea il file minidump e lo carica, insieme a tutti i PDB associati, nell'archiviazione del debugger snapshot di Application Insights. Dopo che il minidump è stato caricato correttamente, viene eliminato dal disco. I file di log per il processo di caricamento vengono mantenuti su disco. In un ambiente servizio app è possibile trovare questi log in D:\Home\LogFiles
. Usare il sito di gestione Kudu per servizio app per trovare questi file di log.
- Aprire l'applicazione servizio app nel portale di Azure.
- Selezionare Strumenti avanzati o cercare Kudu.
- Seleziona Vai.
- Nell'elenco a discesa Console di debug selezionare CMD.
- Selezionare LogFiles.
Dovrebbe essere visualizzato almeno un file con un nome che inizia con Uploader_
o SnapshotUploader_
e un'estensione .log
. Selezionare l'icona appropriata per scaricare i file di log o aprirli in un browser.
Il nome del file include un suffisso univoco che identifica l'istanza di servizio app. Se l'istanza di servizio app è ospitata in più computer, sono presenti file di log separati per ogni computer. Quando il caricatore rileva un nuovo file minidump, viene registrato nel file di log. Ecco un esempio di uno snapshot e un caricamento riusciti:
SnapshotUploader.exe Information: 0 : Received Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Creating minidump from Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Dump placeholder file created: 139e411a23934dc0b9ea08a626db16c5.dm_
DateTime=2018-03-09T01:42:41.8728496Z
SnapshotUploader.exe Information: 0 : Dump available 139e411a23934dc0b9ea08a626db16c5.dmp
DateTime=2018-03-09T01:42:45.7525022Z
SnapshotUploader.exe Information: 0 : Successfully wrote minidump to D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Uploading D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp, 214.42 MB (uncompressed)
DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Upload successful. Compressed size 86.56 MB
DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Extracting PDB info from D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp.
DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Matched 2 PDB(s) with local files.
DateTime=2018-03-09T01:42:59.6809606Z
SnapshotUploader.exe Information: 0 : Stamp does not want any of our matched PDBs.
DateTime=2018-03-09T01:42:59.8059929Z
SnapshotUploader.exe Information: 0 : Deleted D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
DateTime=2018-03-09T01:42:59.8530649Z
Nota
L'esempio precedente è della versione 1.2.0 del Microsoft.ApplicationInsights.SnapshotCollector
pacchetto NuGet. Nelle versioni precedenti viene chiamato MinidumpUploader.exe
il processo di caricamento e il log è meno dettagliato.
Nell'esempio precedente la chiave di strumentazione è c12a605e73c44346a984e00000000000
. Questo valore deve corrispondere alla chiave di strumentazione per l'applicazione.
Il minidump è associato a uno snapshot con l'ID 139e411a23934dc0b9ea08a626db16c5
. È possibile usare questo ID in un secondo momento per individuare il record di eccezione associato in Application Insights Analytics.
Il caricatore analizza la ricerca di nuovi PDB circa una volta ogni 15 minuti. Ecco un esempio:
SnapshotUploader.exe Information: 0 : PDB rescan requested.
DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Scanning D:\home\site\wwwroot for local PDBs.
DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Local PDB scan complete. Found 2 PDB(s).
DateTime=2018-03-09T01:47:19.4614027Z
SnapshotUploader.exe Information: 0 : Deleted PDB scan marker : D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\6368.pdbscan
DateTime=2018-03-09T01:47:19.4614027Z
Per le applicazioni non ospitate in servizio app, i log del caricatore si trovano nella stessa cartella dei minidump: %TEMP%\Dumps\<ikey>
(dove <ikey>
è la chiave di strumentazione).
Risolvere i problemi di Servizi cloud
In Servizi cloud, la cartella temporanea predefinita potrebbe essere troppo piccola per contenere i file minidump, causando la perdita di snapshot.
Lo spazio necessario dipende dal working set totale dell'applicazione e dal numero di snapshot simultanei.
Il working set di un ruolo Web ASP.NET a 32 bit è in genere compreso tra 200 MB e 500 MB. Consentire almeno due snapshot simultanei.
Ad esempio, se l'applicazione usa 1 GB di working set totale, è necessario assicurarsi che siano presenti almeno 2 GB di spazio su disco per archiviare gli snapshot.
Seguire questa procedura per configurare il ruolo del servizio cloud con una risorsa locale dedicata per gli snapshot.
Aggiungere una nuova risorsa locale al servizio cloud modificando il file di definizione del servizio cloud (con estensione csdef). Nell'esempio seguente viene definita una risorsa denominata
SnapshotStore
con dimensioni pari a 5 GB.<LocalResources> <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" /> </LocalResources>
Modificare il codice di avvio del ruolo per aggiungere una variabile di ambiente che punta alla
SnapshotStore
risorsa locale. Per i ruoli di lavoro, il codice deve essere aggiunto al metodo delOnStart
ruolo:public override bool OnStart() { Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath); return base.OnStart(); }
Per i ruoli Web (ASP.NET), il codice deve essere aggiunto al metodo dell'applicazione
Application_Start
Web:using Microsoft.WindowsAzure.ServiceRuntime; using System; namespace MyWebRoleApp { public class MyMvcApplication : System.Web.HttpApplication { protected void Application_Start() { Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath); // TODO: The rest of your application startup code } } }
Aggiornare il fileApplicationInsights.config del ruolo per eseguire l'override del percorso della cartella temporanea usato da
SnapshotCollector
.<TelemetryProcessors> <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector"> <!-- Use the SnapshotStore local resource for snapshots --> <TempFolder>%SNAPSHOTSTORE%</TempFolder> <!-- Other SnapshotCollector configuration options --> </Add> </TelemetryProcessors>
Eseguire l'override della cartella Copia shadow
All'avvio dell'agente di raccolta snapshot, tenta di trovare una cartella su disco adatta per l'esecuzione del processo di Caricamento snapshot. La cartella scelta è nota come cartella Copia shadow.
Snapshot Collector controlla alcuni percorsi noti, assicurandosi che disponga delle autorizzazioni per copiare i file binari di Snapshot Uploader. Vengono usate le variabili di ambiente seguenti:
Fabric_Folder_App_Temp
LOCALAPPDATA
APPDATA
TEMP
Se non è possibile trovare una cartella appropriata, Snapshot Collector segnala un errore che indica "Impossibile trovare una cartella di copia shadow appropriata".
Se la copia non riesce, Snapshot Collector segnala un ShadowCopyFailed
errore.
Se non è possibile avviare l'utilità di caricamento, Snapshot Collector segnala un UploaderCannotStartFromShadowCopy
errore. Il corpo del messaggio contiene System.UnauthorizedAccessException
spesso . Questo errore si verifica in genere perché l'applicazione è in esecuzione con un account con autorizzazioni ridotte. L'account dispone dell'autorizzazione per scrivere nella cartella copia shadow, ma non dispone dell'autorizzazione per l'esecuzione del codice.
Poiché questi errori si verificano in genere durante l'avvio, in genere vengono seguiti da un ExceptionDuringConnect
errore che indica che l'uploader non è stato avviato.
Per risolvere questi errori, è possibile specificare manualmente la cartella copia shadow tramite l'opzione ShadowCopyFolder
di configurazione . Ad esempio, usando ApplicationInsights.config:
<TelemetryProcessors>
<Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
<!-- Override the default shadow copy folder. -->
<ShadowCopyFolder>D:\SnapshotUploader</ShadowCopyFolder>
<!-- Other SnapshotCollector configuration options -->
</Add>
</TelemetryProcessors>
In alternativa, se si usa appsettings.json con un'applicazione .NET Core:
{
"ApplicationInsights": {
"InstrumentationKey": "<your instrumentation key>"
},
"SnapshotCollectorConfiguration": {
"ShadowCopyFolder": "D:\\SnapshotUploader"
}
}
Usare la ricerca di Application Insights per trovare eccezioni con snapshot
Quando viene creato uno snapshot, l'eccezione di generazione viene contrassegnata con un ID snapshot. Tale ID snapshot viene incluso come proprietà personalizzata quando l'eccezione viene segnalata ad Application Insights. Usando Search in Application Insights, è possibile trovare tutti i record con la ai.snapshot.id
proprietà personalizzata.
- Passare alla risorsa di Application Insights nel portale di Azure.
- Selezionare Cerca.
- Digitare
ai.snapshot.id
nella casella di testo Search e premere INVIO.
Se questa ricerca non restituisce risultati, non sono stati segnalati snapshot ad Application Insights nell'intervallo di tempo selezionato.
Per cercare un ID snapshot specifico dai log di Uploader, digitare tale ID nella casella Search. Se non è possibile trovare record per uno snapshot caricato, seguire questa procedura:
Verificare che si stia esaminando la risorsa di Application Insights corretta verificando la chiave di strumentazione.
Modificare il filtro Intervallo di tempo della ricerca per coprire tale intervallo di tempo usando il timestamp del log uploader.
Se non viene ancora visualizzata un'eccezione con tale ID snapshot, il record di eccezione non è stato segnalato ad Application Insights. Questa situazione può verificarsi se l'applicazione si è arrestata in modo anomalo dopo l'acquisizione dello snapshot, ma prima di segnalare il record di eccezione. In questo caso, controllare i log servizio app in Diagnose and solve problems
per verificare se sono stati eseguiti riavvii imprevisti o eccezioni non gestite.
Modificare le regole del proxy di rete o del firewall
Se l'applicazione si connette a Internet tramite un proxy o un firewall, potrebbe essere necessario aggiornare le regole per comunicare con il servizio Snapshot Debugger.
Gli INDIRIZZI IP usati da Application Insights Snapshot Debugger sono inclusi nel tag del servizio Monitoraggio di Azure. Per altre informazioni, vedere la documentazione relativa ai tag del servizio.
Contattaci per ricevere assistenza
In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per