Condividi tramite


Risoluzione dei problemi di Diagnostica di Azure

Questo articolo contiene informazioni sulla risoluzione dei problemi relativi all'uso di Diagnostica di Azure. Per ulteriori informazioni su Diagnostica di Azure, consultare la panoramica di Diagnostica di Azure.

Componenti logici

I componenti sono:

  • Launcher del plug-in di diagnostica (DiagnosticsPluginLauncher.exe): avvia l'estensione Diagnostica di Azure. Funge da processo del punto di ingresso.
  • Plug-in di Diagnostica (DiagnosticsPlugin.exe): configura e avvia l'agente di monitoraggio, e ne gestisce il ciclo di vita. È il processo principale avviato dall'utilità di avvio.
  • Agente di monitoraggio (processi MonAgent.exe): monitora, raccoglie e trasferisce i dati di diagnostica.

Percorsi di log ed elementi

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

Servizi cloud di Azure

Artefatto Percorso
File di configurazione di Diagnostica di Azure %SystemDrive%\Packages\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics<version>\Config.txt
File di registro 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 dell'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

Artefatto Percorso
File di configurazione di Diagnostica di Azure C:\Packages\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<version>\RuntimeSettings
File di registro 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 dell'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

Diagnostica di Azure offre dati relativi alle metriche che si possono visualizzare nel portale di Azure. In caso di problemi con la visualizzazione dei dati nel portale, controllare la tabella WADMetrics\* nell'account di archiviazione di Diagnostica di Azure per verificare la presenza dei record delle metriche corrispondenti e verificare che il provider di risorse Microsoft.Insights sia registrato.

Qui il valore PartitionKey della tabella è l'ID risorsa, la macchina virtuale o il set di scalabilità di macchine virtuali. RowKey è il nome della metrica. Viene chiamato anche nome del contatore delle prestazioni.

Se l'ID risorsa non è corretto, controllare se l'ID risorsa è impostato correttamente nella sezione Configurazione di diagnostica>Metriche>ResourceId.

Se non sono presenti dati per la metrica specifica, controllare in Diagnostics Configuration (Configurazione di diagnostica)>PerformanceCounter se la metrica (contatore delle prestazioni) è inclusa. Per impostazione predefinita sono abilitati i contatori seguenti:

  • \Processor(_Total)% Processor Time
  • \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)% Tempo processore
  • \Process(WaIISHost)\Private Bytes
  • \Process(WaWorkerHost)% Tempo processore
  • \Process(WaWorkerHost)\Private Bytes
  • \Memory\Page Faults/sec
  • .NET CLR Memory(Global)% Tempo 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 si avvia

Per informazioni sui motivi per cui non è stato possibile avviare Diagnostica di Azure, consultare i file DiagnosticsPluginLauncher.log e DiagnosticsPlugin.log nel percorso dei file di log di forniti in precedenza.

Se questi log indicano Monitoring Agent not reporting success after launch, significa che si è verificato un errore all'avvio di MonAgentHost.exe. Esaminare i log nel percorso indicato per il file di log MonAgentHost nella precedente sezione "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, consultare la tabella dei codici di uscita nella sezione Riferimenti.

Mancata registrazione dei dati di diagnostica in Archiviazione di Azure

Stabilire se non viene visualizzato alcun dato o se vengono visualizzati solo alcuni dati.

Log dell'infrastruttura di diagnostica

Diagnostica registra tutti gli errori nei log dell'infrastruttura di diagnostica. Verificare 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, accedere al computer da remoto e verificare che DiagnosticsPlugin.exe e MonAgentCore.exe siano in esecuzione. Se non sono in esecuzione, seguire i passaggi illustrati nella sezione Mancato avvio di Diagnostica di Azure.

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

Se il problema persiste, provare a:

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

Alcuni dati sono mancanti

Se vengono visualizzati alcuni dati ma non tutti, la pipeline di raccolta/trasferimento dati è correttamente impostata. 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 di cercare solo i dati per i quali è stata configurata la raccolta.

L'host genera dati?

  • Contatori delle prestazioni: aprire perfmon e controllare il contatore.
  • Log di traccia: accedere alla macchina virtuale da remoto e aggiungere TextWriterTraceListener al file di configurazione dell'app. Per configurare il listener di testo, consultare la sezione Creare e inizializzare listener di traccia. Verificare che l'elemento <trace> includa <trace autoflush="true">. Se i log di traccia generati non vengono visualizzati, consultare la sezione "Altre informazioni sui log di traccia mancanti".
  • Tracce di Event Tracing for Windows (ETW): accedere da remoto alla macchina virtuale e installare lo strumento PerfView. In PerfView eseguire File>User Command>Listen etwprovder1>etwprovider2 (File > Comando utente -> Ascolto etwprovder1 > etwprovider2) e così via. Il comando Listen distingue tra maiuscole e minuscole e non possono esserci spazi nell'elenco separato da virgole dei provider ETW. Se l'esecuzione del comando non riesce, selezionare Log nella parte inferiore destra dello strumento PerfView per visualizzare il tentativo di esecuzione e il risultato. Se l'input è corretto si apre una nuova finestra. In pochi secondi verranno visualizzate le tracce ETW.
  • Log eventi: accedere in remoto alla VM. Aprire il Visualizzatore eventi e verificare l'esistenza degli eventi.

I dati vengono acquisiti in locale?

Verificare quindi che i dati vengano acquisiti in locale. I dati vengono archiviati nei file *.tsf nell'archivio locale per i dati di diagnostica. I diversi tipi di log vengono raccolti in diversi file .tsf. 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.

Analizzare anche la configurazione generata per MaConfig.xml dell'agente di monitoraggio. Verificare che sia presente una sezione in cui è descritta l'origine del log pertinente. Verificare quindi che non sia andata perduta nella conversione tra la configurazione di Diagnostica e la configurazione dell'agente di monitoraggio.

I dati vengono trasferiti?

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

  • Verificare che sia stato specificato un account di archiviazione corretto e che non sia stato eseguito il rollover di chiavi per l'account di archiviazione indicato. Per Servizi cloud di Azure, talvolta gli utenti non aggiornano useDevelopmentStorage=true.
  • Verificare che l'account di archiviazione specificato sia corretto. Assicurarsi che non siano presenti restrizioni di rete che impediscono ai componenti di raggiungere gli endpoint di archiviazione pubblici. Questa operazione si può eseguire accedendo al computer da remoto e provando a scrivere 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. Per aprire questo file seguire le istruzioni della sezione Estrazione dei log locali. 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

Prima di contattare il supporto tecnico, considerare che i tecnici potrebbe chiedere innanzitutto di raccogliere i log del computer. È possibile risparmiare tempo eseguendo questa operazione autonomamente. Eseguire l'utilità CollectGuestLogs.exe nel percorso dell'utilità di raccolta dei log. Verrà generato un file ZIP con tutti i log di Azure pertinenti nella stessa cartella.

Tabelle dei dati di diagnostica non trovate

I nomi delle tabelle in Archiviazione di Azure contenenti gli eventi ETW sono assegnati con il seguente codice:

        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:

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

Riferimenti

Consultare la i seguenti riferimenti

Controllare la configurazione dell'estensione Diagnostica

Il modo più semplice per controllare la configurazione dell'estensione consiste nell'accedere ad Azure Resource Explorer. Passare quindi alla macchina virtuale o al servizio sul cloud in cui si trova l'estensione Diagnostica (IaaSDiagnostics/PaaDiagnostics).

In alternativa, connettersi al computer tramite desktop remoto ed esaminare il file di configurazione di Diagnostica di Azure descritto nella sezione Percorsi di log ed elementi.

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, la configurazione è in formato XML con codifica base64. Per visualizzare il codice XML caricato da Diagnostica è necessario decodificare il file.

Per il ruolo del servizio sul cloud, se si seleziona la configurazione dal disco, i dati sono codificati in base64. Per visualizzare i contenuti in XML caricati da Diagnostica è necessario decodificare il file.

Codici di uscita del plug-in di Diagnostica di Azure

Il plug-in restituisce i seguenti codici di uscita:

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

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

-3 Impossibile caricare il file di configurazione di 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 lancio del plug-in dell'agente guest ha tentato di avviare Diagnostica con una riga di comando non valida.

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

-10 Il plug-in di Diagnostica ha generato 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 durante la chiamata del plug-in di Diagnostica.

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

-102 Non è stato possibile inizializzare il processo del plug-in.

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

-103 Non è stato possibile inizializzare il processo del plug-in. In particolare, non è possibile a 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 dovrebbe verificarsi solo se il launcher del plug-in dell'agente guest viene richiamato manualmente in modo errato sulla macchina virtuale.

-105 Il plug-in di Diagnostica non riesce ad aprire il file di configurazione di Diagnostica.

Questo errore interno dovrebbe verificarsi solo se il plug-in di Diagnostica viene richiamato manualmente in modo errato sulla macchina virtuale.

-106 Impossibile leggere il file di configurazione di 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 ulteriori informazioni, consultare la sezione 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 dovrebbe verificarsi solo se il plug-in di Diagnostica viene richiamato manualmente con un file di configurazione non valido.

-110 Errore di configurazione generale di Diagnostica.

Questo errore interno dovrebbe verificarsi solo se il plug-in di Diagnostica 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 file con estensione .tsf non è leggibile ma si può convertire in .csv come illustrato di seguito:

<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

È sufficiente eseguire questa utilità sul 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 seguenti informazioni riguardano prevalentemente Servizi cloud di Azure, a meno che sia stato configurato DiagnosticsMonitorTraceListener in un'applicazione eseguita nella VM IaaS.

  • Verificare che in web.config o app.config sia configurato DiagnosticMonitorTraceListener. Nei progetti di servizi sul cloud è configurato per impostazione predefinita. Viene tuttavia impostato come commento da alcuni clienti: in tal caso le istruzioni di traccia non verranno raccolte da Diagnostica.
  • Se i log non vengono scritti dal metodo OnStartRun, verificare che in app.config sia presente DiagnosticMonitorTraceListener. Per impostazione predefinita si trova in web.config, ma questo si applica solo al codice eseguito in w3wp.exe. Per acquisire le tracce in esecuzione in WaIISHost.exe deve quindi essere presente in app.config.
  • Verificare che si in uso Diagnostics.Trace.TraceXXX anziché Diagnostics.Debug.WriteXXX. Le istruzioni di debug vengono rimosse da una build di versione.
  • Verificare che il codice compilato contenga effettivamente le righe Diagnostics.Trace. Per verificarlo, usare Reflector, ildasm o ILSpy. I comandi Diagnostics.Trace vengono rimossi dal file binario compilato a meno che non venga usato il simbolo di compilazione condizionale TRACE. Questo problema comune si verifica quando si utilizza MSBuild per compilare un progetto.

Problemi noti e procedure di prevenzione

Per i seguenti problemi noti ci sono delle mitigazioni.

Dipendenza .NET 4.5

L'estensione Diagnostica di Azure per Windows ha una dipendenza di runtime da .NET Framework 4.5 e versioni successive. Al momento della stesura di questo articolo, in tutti i computer con provisioning per Servizi cloud di Azure e in tutte le immagini ufficiali basate su macchine virtuali di Azure è installato .NET 4.5 o una versione successiva.

Possono comunque verificarsi situazioni in cui si prova a eseguire l'estensione Diagnostica di Microsoft Azure per Windows in un computer in cui non è presente .NET 4.5 o una versione successiva. Questa situazione si verifica quando si crea il computer da un'immagine o uno snapshot meno recente o si usa un disco personalizzato.

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

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 nella risorsa di archiviazione ma non vengono visualizzati nel portale

Nell'esperienza del portale per le macchine virtuali, vengono visualizzati per impostazione predefinita determinati contatori delle prestazioni. Se i contatori non vengono visualizzati e si è certi che i dati vengono generati perché sono disponibili nella risorsa di archiviazione, controllare quanto segue:

  • 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 potrà riconoscerli.

    • Prevenzione: modificare la lingua del computer impostando l'inglese per gli account di sistema. A tale scopo, selezionare Pannello di controllo>Area geografica>Opzioni di amministrazione>Copia impostazioni. Deselezionare quindi Schermata iniziale e account di sistema, affinché 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 il contatore raccolto quando i contatori delle prestazioni vengono inviato al sink di archiviazione di Azure.

    • Mitigazione: per poter usare i caratteri jolly e fare in modo che il portale espanda il carattere (*), indirizzare i contatori di prestazioni al sink di Monitoraggio di Azure.