Risoluzione dei problemi di Diagnostica di Azure

Questo articolo contiene informazioni sulla risoluzione dei problemi relativi all'uso di Diagnostica di Azure. Per altre informazioni sulla diagnostica, vedere panoramica Diagnostica di Azure.

Componenti logici

I componenti sono:

  • Programma di avvio del plug-in di diagnostica (DiagnosticsPluginLauncher.exe): avvia l'estensione Diagnostica. Funge da processo di ingresso.
  • Plug-in di diagnostica (DiagnosticsPlugin.exe): configura, avvia e gestisce la durata dell'agente di monitoraggio. È il processo principale avviato dal launcher.
  • Agente di monitoraggio (MonAgent*.exe processi):Monitoraggi, raccoglie e trasferisce i dati di diagnostica.

Percorsi di log ed elementi

I percorsi seguenti portano ad alcuni log e artefatti importanti. In questo articolo si fa riferimento a queste informazioni.

Servizi cloud di Azure

Elemento Percorso
File di configurazione di Diagnostica di Azure %SystemDrive%\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics<versione>\Config.txt
File di log C:\Logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics<version>\
Archivio locale dei dati di diagnostica C:\Resources\Directory<CloudServiceDeploymentID>.< RoleName>. DiagnosticStore\WAD0107\Tables
File di configurazione dell'agente di monitoraggio C:\Resources\Directory<CloudServiceDeploymentID>.< RoleName>.DiagnosticStore\WAD0107\Configuration\MaConfig.xml
pacchetto di estensione Diagnostica di Azure %SystemDrive%\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics<version>
Percorso dell'utilità di raccolta dei log %SystemDrive%\Packages\GuestAgent\
File di log MonAgentHost C:\Resources\Directory<CloudServiceDeploymentID>.< RoleName>. DiagnosticStore\WAD0107\Configuration\MonAgentHost.<>seq_num.log

Macchine virtuali

Elemento Percorso
File di configurazione di Diagnostica di Azure C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics version>\RuntimeSettings<
File di log C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<DiagnosticsVersion>\
Archivio locale dei dati di diagnostica C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<DiagnosticsVersion>\WAD0107\Tables
File di configurazione dell'agente di monitoraggio C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<DiagnosticsVersion>\WAD0107\Configuration\MaConfig.xml
File di stato C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<version>\Status
pacchetto di estensione Diagnostica di Azure C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics DiagnosticsVersion<>
Percorso dell'utilità di raccolta dei log C:\WindowsAzure\Log\WaAppAgent.log
File di log MonAgentHost C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<DiagnosticsVersion>\WAD0107\Configuration\MonAgentHost.<>seq_num.log

Mancata visualizzazione dei dati relativi alle metriche nel portale di Azure

La diagnostica fornisce i dati delle metriche che possono essere visualizzati nella portale di Azure. Se si verificano problemi durante la visualizzazione dei dati nel portale, controllare la WADMetrics\* tabella nell'account di archiviazione Diagnostica per verificare se i record delle metriche corrispondenti sono presenti e assicurarsi che il provider di risorse Microsoft.Insights sia registrato.

In questo caso, la tabella è l'ID PartitionKey risorsa, la macchina virtuale o il set di scalabilità di macchine virtuali. RowKey è il nome della metrica. È noto anche come nome del contatore delle prestazioni.

Se l'ID risorsa non è corretto, controllare Diagnostics Configuration>Metrics>ResourceId per verificare se l'ID risorsa è impostato correttamente.

Se non sono presenti dati per la metrica specifica, controllareDiagnostica Configurazione> PerformanceCounter per verificare se la metrica (contatore delle prestazioni) è inclusa. Per impostazione predefinita sono abilitati i contatori seguenti:

  • \Processor(_Total)% Tempo processore
  • \Memory\Available Bytes
  • \ASP.NET Applications(Total)\Requests/Sec
  • \ASP.NET Applications(Total)\Errors Total/Sec
  • \ASP.NET\Requests Queued
  • \ASP.NET\Requests Rejected
  • \Processor(w3wp)% Tempo processore
  • \Process(w3wp)\Private Bytes
  • \Process(WaIISHost)% Time processor
  • \Process(WaIISHost)\Private Bytes
  • \Process(WaWorkerHost)% Time processor
  • \Process(WaWorkerHost)\Private Bytes
  • \Memory\Page Faults/sec
  • Memoria CLR .NET(Global)% Time in GC
  • \LogicalDisk(C:)\Disk Write Bytes/sec
  • \LogicalDisk(C:)\Disk Read Bytes/sec
  • \LogicalDisk(D:)\Disk Write Bytes/sec
  • \LogicalDisk(D:)\Disk Read Bytes/sec

Se la configurazione è impostata correttamente ma i dati relativi alle metriche non vengono comunque visualizzati, usare le linee guida seguenti per risolvere il problema.

Diagnostica di Azure non viene avviato

Per informazioni sul motivo per cui diagnostica non è stato avviato, vedere i file DiagnosticsPluginLauncher.log e DiagnosticsPlugin.log nel percorso dei file di log forniti in precedenza.

Se questi log indicano Monitoring Agent not reporting success after launch, significa che si è verificato un errore durante l'avvio diMonAgentHost.exe. Esaminare i log nel percorso indicato per il MonAgentHost file di log nella sezione precedente "Macchine virtuali".

L'ultima riga del file di log contiene il codice di uscita.

DiagnosticsPluginLauncher.exe Information: 0 : [4/16/2016 6:24:15 AM] DiagnosticPlugin exited with code 0

Se si trova un codice di uscita negativo , vedere la tabella del codice di uscita nella sezione Riferimenti.

I dati di diagnostica non vengono registrati in Archiviazione di Azure

Determinare se non viene visualizzato nessuno dei dati o se vengono visualizzati alcuni dei dati.

Log dell'infrastruttura di diagnostica

Diagnostica registra tutti gli errori nei log dell'infrastruttura di diagnostica. Assicurarsi di aver abilitato l'acquisizione dei log dell'infrastruttura di diagnostica nella configurazione. È quindi possibile cercare rapidamente gli errori pertinenti riportati nella tabella DiagnosticInfrastructureLogsTable nell'account di archiviazione configurato.

Non viene visualizzato alcun dato

La causa più comune per cui non viene visualizzato alcun dato di eventi è la definizione non corretta delle informazioni dell'account di archiviazione.

Soluzione: correggere la configurazione della diagnostica e reinstallare Diagnostica.

Se l'account di archiviazione è configurato correttamente, l'accesso remoto nel computer e verificare che DiagnosticsPlugin.exe e MonAgentCore.exe siano in esecuzione. Se non sono in esecuzione, seguire la procedura descritta in Diagnostica di Azure non viene avviata.

Se i processi sono in esecuzione, passare a I dati vengono acquisiti in locale? e seguire le istruzioni riportate in tale sottoparagrafo.

Se è ancora presente un problema, provare a:

  1. Disinstallare l'agente.
  2. Rimuovere la directory C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics.
  3. Installare di nuovo l'agente.

Alcuni dati sono mancanti

Se si ottengono alcuni dati ma non tutti, significa che la pipeline di raccolta/trasferimento dei dati è impostata correttamente. Seguire le istruzioni di questi sottoparagrafi per circoscrivere il problema.

La raccolta è configurata?

La configurazione di Diagnostica contiene istruzioni per la raccolta di un determinato tipo di dati. Esaminare la configurazione per verificare che si stia cercando solo i dati configurati per la raccolta.

L'host genera dati?

  • Contatori delle prestazioni: aprire perfmon e controllare il contatore.
  • Log di traccia: accesso remoto nella macchina virtuale e aggiungere un al TextWriterTraceListener file di configurazione dell'app. Per configurare il listener di testo, vedere Creare e inizializzare i listener di traccia. Verificare che l'elemento <trace> includa <trace autoflush="true">. Se i log di traccia non vengono generati, vedere la sezione "Altre informazioni sui log di traccia mancanti".
  • Tracce di Traccia eventi per Windows (ETW): accesso remoto nella macchina virtuale e installare lo strumento PerfView. In PerfView eseguire comandoutente>file>listen etwprovder1>etwprovider2 e così via. Il comando Listen è distinzione tra maiuscole e minuscole e non è possibile inserire spazi tra l'elenco delimitato da virgole dei provider ETW. Se il comando non riesce a essere eseguito, selezionare Log in basso a destra dello strumento PerfView per visualizzare il tentativo di esecuzione e il risultato. Supponendo che l'input sia corretto, verrà aperta una nuova finestra. In pochi secondi verranno visualizzate tracce ETW.
  • Log eventi: accedere in remoto alla VM. Aprire Visualizzatore eventi e assicurarsi che gli eventi esistano.

I dati vengono acquisiti in locale?

Verificare quindi che i dati vengano acquisiti in locale. I dati vengono archiviati localmente nei file *.tsf nell'archivio locale per i dati di diagnostica. Diversi tipi di log vengono raccolti in file con estensione tsf diversi. I nomi sono simili a quelli delle tabelle in Archiviazione di Azure.

Ad esempio, i contatori delle prestazioni vengono raccolti in PerformanceCountersTable.tsf. I log eventi vengono raccolti in WindowsEventLogsTable.tsf. Usare le istruzioni riportate nella sezione Estrazione dei log locali per aprire i file di raccolta locali e verificare che vengano raccolti su disco.

Se non risulta che i log vengano raccolti in locale e si è già verificato che l'host genera dati, è probabile che sia presente un problema di configurazione. Esaminare attentamente la configurazione.

Esaminare anche la configurazione generata per MonitoringAgent MaConfig.xml. Verificare che sia presente una sezione che descrive l'origine log pertinente. Verificare quindi che non venga perso nella traduzione tra la configurazione diagnostica e la configurazione dell'agente di monitoraggio.

I dati vengono trasferiti?

Se si è verificato che i dati vengono acquisiti in locale, ma ancora non vengono visualizzati nell'account di archiviazione, seguire questa procedura:

  • Verificare di aver fornito un account di archiviazione corretto e di non aver eseguito il roll over delle chiavi per l'account di archiviazione specificato. Per Azure Servizi cloud, a volte gli utenti non aggiornano useDevelopmentStorage=true.
  • Verificare che l'account di archiviazione specificato sia corretto. Assicurarsi di non avere restrizioni di rete che impediscono ai componenti di raggiungere gli endpoint di archiviazione pubblici. Un modo per eseguire questa operazione consiste nell'accesso remoto nel computer e provare a scrivere qualcosa nello stesso account di archiviazione.
  • Infine, è possibile esaminare gli errori segnalati dall'agente di monitoraggio. L'agente di monitoraggio scrive i log in maeventtable.tsf, che si trova nell'archivio locale per i dati di diagnostica. Seguire le istruzioni nella sezione Estrazione log locale per aprire questo file. Provare quindi a determinare se siano presenti errors che indicano errori di lettura nei file locali o scrittura nelle risorse di archiviazione.

Acquisire e archiviare i log

Se si sta pensando di contattare il supporto, la prima cosa che potrebbe chiedere è di raccogliere i log dal computer. È possibile risparmiare tempo eseguendo questa operazione autonomamente. Eseguire l'utilità nel percorso dell'utilità CollectGuestLogs.exe raccolta log. Verrà generato un file ZIP con tutti i log di Azure pertinenti nella stessa cartella.

Tabelle dei dati di diagnostica non trovate

Le tabelle in Archiviazione di Azure che contengono eventi ETW vengono denominate usando il codice seguente:

        if (String.IsNullOrEmpty(eventDestination)) {
            if (e == "DefaultEvents")
                tableName = "WADDefault" + MD5(provider);
            else
                tableName = "WADEvent" + MD5(provider) + eventId;
        }
        else
            tableName = "WAD" + eventDestination;

Ecco un esempio:

        <EtwEventSourceProviderConfiguration provider="prov1">
          <Event id="1" />
          <Event id="2" eventDestination="dest1" />
          <DefaultEvents />
        </EtwEventSourceProviderConfiguration>
        <EtwEventSourceProviderConfiguration provider="prov2">
          <DefaultEvents eventDestination="dest2" />
        </EtwEventSourceProviderConfiguration>
"EtwEventSourceProviderConfiguration": [
    {
        "provider": "prov1",
        "Event": [
            {
                "id": 1
            },
            {
                "id": 2,
                "eventDestination": "dest1"
            }
        ],
        "DefaultEvents": {
            "eventDestination": "DefaultEventDestination",
            "sinks": ""
        }
    },
    {
        "provider": "prov2",
        "DefaultEvents": {
            "eventDestination": "dest2"
        }
    }
]

Questo codice genera quattro tabelle:

Evento Nome tabella
provider="prov1" <Id evento="1" /> WADEvent+MD5("prov1")+"1"
provider="prov1" <Id evento="2" eventDestination="dest1" /> WADdest1
provider="prov1" <DefaultEvents /> WADDefault+MD5("prov1")
provider="prov2" <DefaultEvents eventDestination="dest2" /> WADdest2

Riferimenti

Vedere i riferimenti seguenti

Controllare la configurazione dell'estensione diagnostica

Il modo più semplice per controllare la configurazione dell'estensione consiste nel passare a Esplora risorse di Azure. Passare quindi alla macchina virtuale o al servizio cloud in cui è presente l'estensione Diagnostica (IaaSDiagnostics/PaaDiagnostics).

In alternativa, desktop remoto nel computer e esaminare il file di configurazione diagnostica descritto nella sezione Percorso artefatti log.

In entrambi i casi, cercare Microsoft.Azure.Diagnostics e il campo xmlCfg o WadCfg.

Se si esegue la ricerca su una macchina virtuale ed è presente il campo WadCfg, la configurazione è in formato JSON. Se il campo xmlCfg è presente, significa che la configurazione è in FORMATO XML ed è codificata in base64. Per visualizzare il codice XML caricato da Diagnostica è necessario decodificare il file.

Per il ruolo del servizio cloud, se si seleziona la configurazione dal disco, i dati sono codificati in base64. Sarà necessario decodificarlo per visualizzare il codice XML caricato da Diagnostics.

Diagnostica di Azure codici di uscita plug-in

Il plug-in restituisce i codici di uscita seguenti:

Codice di uscita Descrizione
0 Esito positivo.
-1 Errore generico.
-2 Impossibile caricare il file rcf.

Questo errore interno deve verificarsi solo se il plug-in del plug-in dell'agente guest viene richiamato manualmente in modo errato nella macchina virtuale.

-3 Impossibile caricare il file di configurazione diagnostica.

Soluzione: questo errore si verifica quando un file di configurazione non ha superato la convalida dello schema. La soluzione consiste nel fornire un file di configurazione conforme allo schema.

-4 La directory delle risorse locali è già usata da un'altra istanza dell'agente di monitoraggio di Diagnostica.

Soluzione: specificare un valore diverso per LocalResourceDirectory.

-6 Il plug-in dell'agente guest ha tentato di avviare Diagnostica con una riga di comando non valida.

Questo errore interno deve verificarsi solo se il plug-in del plug-in dell'agente guest viene richiamato manualmente in modo errato nella macchina virtuale.

-10 Il plug-in Diagnostica è stato chiuso con un'eccezione non gestita.
-11 L'agente guest non è stato in grado di creare il processo responsabile dell'avvio e del monitoraggio dell'agente di monitoraggio.

Soluzione: verificare che siano disponibili risorse di sistema sufficienti per avviare nuovi processi.

-101 Argomenti non validi quando si chiama il plug-in Diagnostics.

Questo errore interno deve verificarsi solo se il plug-in del plug-in dell'agente guest viene richiamato manualmente in modo errato nella macchina virtuale.

-102 Il processo plug-in non è in grado di inizializzare se stesso.

Soluzione: verificare che siano disponibili risorse di sistema sufficienti per avviare nuovi processi.

-103 Il processo plug-in non è in grado di inizializzare se stesso. In particolare, non è possibile creare l'oggetto logger.

Soluzione: verificare che siano disponibili risorse di sistema sufficienti per avviare nuovi processi.

-104 Impossibile caricare il file rcf fornito dall'agente guest.

Questo errore interno deve verificarsi solo se il plug-in del plug-in dell'agente guest viene richiamato manualmente in modo errato nella macchina virtuale.

-105 Il plug-in Diagnostica non può aprire il file di configurazione diagnostica.

Questo errore interno deve verificarsi solo se il plug-in Diagnostics viene richiamato manualmente in modo errato nella macchina virtuale.

-106 Non è possibile leggere il file di configurazione diagnostica.

Questo errore si verifica quando un file di configurazione non supera la convalida dello schema.

Soluzione: specificare un file di configurazione conforme allo schema. Per altre informazioni, vedere Controllare la configurazione dell'estensione diagnostica.

-107 La directory delle risorse passata all'agente di monitoraggio non è valida.

Questo errore interno dovrebbe verificarsi solo se l'agente di monitoraggio viene richiamato manualmente in modo non corretto sulla VM.

-108 Impossibile convertire il file di configurazione di Diagnostica nel file di configurazione dell'agente di monitoraggio.

Questo errore interno deve verificarsi solo se il plug-in Diagnostics viene richiamato manualmente con un file di configurazione non valido.

-110 Errore di configurazione generale di Diagnostica.

Questo errore interno deve verificarsi solo se il plug-in Diagnostics viene richiamato manualmente con un file di configurazione non valido.

-111 Impossibile avviare l'agente di monitoraggio.

Soluzione: verificare che siano disponibili risorse di sistema sufficienti.

-112 Errore generale.

Estrazione dei log locali

L'agente di monitoraggio raccoglie log ed elementi come file .tsf. Il .tsf file non è leggibile, ma è possibile convertirlo in un .csv oggetto come segue:

<Azure diagnostics extension package>\Monitor\x64\table2csv.exe <relevantLogFile>.tsf

Un nuovo file denominato <relevantLogFile>.csv verrà creato nello stesso percorso del file con estensione .tsf corrispondente.

Nota

È necessario eseguire questa utilità solo nel file principale .tsf , ad esempio PerformanceCountersTable.tsf. I file di accompagnamento (ad esempio, PerformanceCountersTables_\*\*001.tsf, PerformanceCountersTables_\*\*002.tsf) vengono elaborati automaticamente.

Altre informazioni sui log di traccia mancanti

Nota

Le informazioni seguenti si applicano principalmente ad Azure Servizi cloud a meno che non sia stato configurato DiagnosticsMonitorTraceListener in un'applicazione in esecuzione nell'infrastruttura come servizio (IaaS).

  • Assicurarsi che diagnosticMonitorTraceListener sia configurato nel web.config o app.config. È configurato per impostazione predefinita nei progetti di servizio cloud. Tuttavia, alcuni clienti lo commentano, causando la raccolta delle istruzioni di traccia da Parte di Diagnostica.
  • Se i log non vengono scritti dal metodo OnStart o Run , assicurarsi che diagnosticMonitorTraceListener si trova nel app.config. Per impostazione predefinita, si trova nella web.config, ma si applica solo al codice in esecuzione all'interno di w3wp.exe. È quindi necessario in app.config acquisire tracce in esecuzione in WaIISHost.exe.
  • Assicurarsi di usare Diagnostics.Trace.TraceXXX anziché Diagnostics.Debug.WriteXXX. Le istruzioni Debug vengono rimosse da una build di versione.
  • Assicurarsi che il codice compilato abbia effettivamente le righe Diagnostics.Trace. Usare Reflectionor, ildasm o ILSpy per verificare. I comandi Diagnostics.Trace vengono rimossi dal file binario compilato, a meno che non si usi il simbolo di compilazione condizionale TRACE. Questo problema comune si verifica quando si usa MSBuild per compilare un progetto.

Problemi noti e procedure di prevenzione

I problemi noti seguenti presentano mitigazioni.

Dipendenza .NET 4.5

L'estensione Diagnostica di Azure per Windows ha una dipendenza di runtime da .NET Framework 4.5 o versione successiva. Al momento della scrittura, tutti i computer di cui è stato effettuato il provisioning per Azure Servizi cloud e tutte le immagini ufficiali basate su macchine virtuali di Azure, hanno installato .NET 4.5 o versione successiva.

È ancora possibile riscontrare una situazione in cui si tenta di eseguire l'estensione Diagnostica di Azure per Windows in un computer che non ha .NET 4.5 o versione successiva. Questa situazione si verifica quando si crea il computer da un'immagine o uno snapshot precedente o quando si porta il proprio disco personalizzato.

Questo problema si manifesta in genere come codice di uscita 255 quando si esegue DiagnosticsPluginLauncher.exe. L'errore si verifica a causa dell'eccezione non gestita seguente:

System.IO.FileLoadException: Could not load file or assembly 'System.Threading.Tasks, Version=1.5.11.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies

Prevenzione: installare .NET 4.5 o versione successiva nel computer.

I dati dei contatori delle prestazioni sono disponibili nell'archiviazione, ma non sono visualizzati nel portale

L'esperienza del portale nelle macchine virtuali mostra determinati contatori delle prestazioni per impostazione predefinita. Se non vengono visualizzati i contatori delle prestazioni e si sa che i dati vengono generati perché sono disponibili nell'archiviazione, assicurarsi di verificare:

  • Se i dati nella risorsa di archiviazione contengono i nomi dei contatori in lingua inglese. Se i nomi dei contatori non sono in inglese, il grafico delle metriche del portale non lo riconoscerà.

    • Prevenzione: modificare la lingua del computer impostando l'inglese per gli account di sistema. A tale scopo, selezionare Pannello di controllo>Region>Amministrazione>Copia Impostazioni. Deselezionare quindi la schermata iniziale e gli account di sistema in modo che la lingua personalizzata non venga applicata all'account di sistema.
  • Se si usano caratteri jolly (*) nei nomi dei contatori delle prestazioni, il portale non può correlare il contatore configurato e raccolto quando i contatori delle prestazioni vengono inviati al sink di Archiviazione di Azure.

    • Mitigazione: per assicurarsi di poter usare caratteri jolly e avere il portale espandere (*), instradare i contatori delle prestazioni al sink di Monitoraggio di Azure.