Raccogliere i dati su diagnosi e prestazioni IntelliTrace in produzione con Microsoft Monitoring Agent
È possibile monitorare localmente le app Web ASP.NET ospitate su IIS e le applicazioni SharePoint 2010 o 2013 per rilevare errori, problemi relativi alle prestazioni o altri problemi con Microsoft Monitoring Agent. È possibile salvare gli eventi di diagnostica dell'agente in un file di log IntelliTrace (con estensione iTrace). È quindi possibile aprire il log in Visual Studio Ultimate 2013 per eseguire il debug dei problemi con tutti gli strumenti di diagnostica di Visual Studio. È anche possibile raccogliere dati relativi a diagnosi e metodi di IntelliTrace eseguendo l'agente in modalità Traccia. Microsoft Monitoring Agent può essere integrato con Application Insights e System Center Operation Manager. Microsoft Monitoring Agent non modifica l'ambiente del sistema di destinazione quando viene installato.
Nota
È anche possibile raccogliere dati relativi a diagnosi e metodi di IntelliTrace per le app Web, Sharepoint, WPF e Windows Form nei computer remoti senza modificare l'ambiente di destinazione usando l'agente di raccolta autonomo IntelliTrace.L'agente di raccolta autonomo ha un impatto sulle prestazioni maggiore rispetto all'esecuzione di Microsoft Monitoring Agent in modalità Monitor.Vedere Raccogliere i dati diagnostici in produzione usando l'agente di raccolta autonomo IntelliTrace.
Se è in uso System Center 2012, usare Microsoft Monitoring Agent con Operations Manager per ottenere avvisi relativi ai problemi e creare elementi di lavoro di Team Foundation Server con collegamenti ai log IntelliTrace salvati. Successivamente è possibile assegnare questi elementi di lavoro ad altri per un'ulteriore debug. Vedere Integrazione di Operations Manager con i processi di sviluppo e Monitoraggio con Microsoft Monitoring Agent.
Prima di iniziare, verificare di disporre dell'origine e dei simboli corrispondenti per il codice compilato e distribuito. In questo modo è possibile passare direttamente al codice dell'applicazione quando si avvia il debug e la navigazione degli eventi di diagnostica nel log IntelliTrace. Configurare le compilazioni in modo che tramite Visual Studio sia possibile rilevare e aprire automaticamente l'origine corrispondente per il codice distribuito.
Configurazione di Microsoft Monitoring Agent.
Avvio del monitoraggio dell'applicazione.
salvataggio degli eventi registrati.
Passaggio 1: configurazione di Microsoft Monitoring Agent
Configurare l'agente autonomo nel server Web in modo che il monitoraggio locale venga eseguito senza modificare l'applicazione. Se si usa System Center 2012, vedere Installazione di Microsoft Monitoring Agent.
Configurare l'agente autonomo
Verificare che:
Il server Web stia eseguendo versioni supportate di Internet Information Services (IIS).
Nel server Web è disponibile .NET Framework 3.5, 4 o 4.5.
Nel server Web è in esecuzione Windows PowerShell 3.0 o versione successiva. Cosa fare se nel computer è installato Windows PowerShell 2.0?
L'utente dispone di autorizzazioni di amministratore per il server Web per eseguire comandi di PowerShell e riciclare il pool di applicazioni all'avvio del monitoraggio.
Qualsiasi versione precedente di Microsoft Monitoring Agent è stata disinstallata.
Scaricare nel server Web la versione MMASetup-i386.exe a 32 bit o la versione MMASetup-AMD64.exe a 64 bit dello strumento gratuito Microsoft Monitoring Agent dall'Area download Microsoft.
Eseguire il file eseguibile scaricato per avviare l'installazione guidata.
Creare una directory sicura nel server Web dove archiviare i log di IntelliTrace, ad esempio C:\IntelliTraceLogs.
Assicurarsi di creare questa directory prima di iniziare il monitoraggio. Per evitare il rallentamento dell'app, scegliere una posizione in un disco ad alta velocità locale non troppo attivo.
Nota sulla sicurezza Nei log IntelliTrace possono essere contenuti dati personali e sensibili.Limitare questa directory solo alle identità in cui devono essere usati i file.Controllare i criteri aziendali sulla privacy.
Per eseguire un monitoraggio dettagliato a livello di funzione o per monitorare le applicazioni SharePoint, concedere al pool di applicazioni in cui è ospitata l'applicazione Web o SharePoint le autorizzazioni di lettura e scrittura per la directory dei log IntelliTrace. Come è possibile configurare le autorizzazioni per il pool di applicazioni?
Domande e risposte
D: Cosa fare se nel computer è installato Windows PowerShell 2.0?
R: Si consiglia di usare PowerShell 3.0. In caso contrario, sarà necessario importare i cmdlet di PowerShell di Microsoft Monitoring Agent ogni volta che si esegue PowerShell. Inoltre non sarà possibile accedere al contenuto scaricabile della Guida.
Aprire una finestra del prompt dei comandi Windows PowerShell ISE o Windows PowerShell come amministratore.
Importare il modulo di PowerShell di Microsoft Monitoring Agent dal percorso di installazione predefinito:
PS C:>Import-Module "C:\Program Files\Microsoft Monitoring Agent\Agent\PowerShell\Microsoft.MonitoringAgent.PowerShell\Microsoft.MonitoringAgent.PowerShell.dll"
Visitare TechNet per ottenere il contenuto della Guida più recente.
D: come è possibile configurare le autorizzazioni per il pool di applicazioni?
R: usare il comando icacls di Windows o Esplora risorse (o Esplora file). Ad esempio:
Per configurare le autorizzazioni con il comando Windows icacls:
Per un'app Web nel pool di applicazioni DefaultAppPool:
icacls "C:\IntelliTraceLogs" /grant "IIS APPPOOL\DefaultAppPool":RX
Per un'applicazione SharePoint nel pool di applicazioni SharePoint - 80:
icacls "C:\IntelliTraceLogs" /grant "IIS APPPOOL\SharePoint - 80":RX
-oppure-
Per configurare le autorizzazioni con Esplora risorse (o Esplora file):
Aprire Proprietà per la directory dei log IntelliTrace.
Nella scheda Sicurezza, scegliere Modifica, Aggiungi.
Assicurarsi che nella casella Selezionare questo tipo di oggetto sia visualizzato Entità di sicurezza predefinite. Se non è disponibile, scegliere Tipi di oggetto per aggiungerlo.
Verificare che il computer locale sia visualizzato nella casella Da questo percorso. Se non è disponibile, scegliere Percorsi per modificarlo.
Nella casella Immettere i nomi degli oggetti da selezionare aggiungere il pool di applicazioni per l'app Web o l'applicazione SharePoint.
Scegliere Controlla nomi per risolvere il nome. Scegliere OK.
Verificare che il pool di applicazioni disponga delle autorizzazioni di lettura ed esecuzione.
Passaggio 2: avvio del monitoraggio dell'applicazione
Usare il comando Start-WebApplicationMonitoring di Windows PowerShell per avviare il monitoraggio dell'applicazione. Se si usa System Center 2012, vedere Monitoraggio delle applicazioni Web con Microsoft Monitoring Agent.
Nel server Web aprire una finestra del prompt dei comandi di Windows PowerShell o Windows PowerShell ISE come amministratore.
Eseguire il comando Start-WebApplicationMonitoring per avviare il monitoraggio dell'applicazione. In questo modo verranno riavviate tutte le applicazioni Web nel server Web.
Di seguito è riportata la sintassi breve:
Start-WebApplicationMonitoring "<appName>" <monitoringMode> "<outputPath>" <UInt32> "<collectionPlanPathAndFileName>"
Di seguito è riportato un esempio in cui vengono usati solo il nome dell'applicazione Web e la modalità Monitor semplice:
PS C:\>Start-WebApplicationMonitoring "Fabrikam\FabrikamFiber.Web" Monitor "C:\IntelliTraceLogs"
Di seguito è riportato un esempio in cui vengono usati il percorso di IIS e la modalità Monitor semplice:
PS C:\>Start-WebApplicationMonitoring "IIS:\sites\Fabrikam\FabrikamFiber.Web" Monitor "C:\IntelliTraceLogs"
Dopo aver avviato il monitoraggio, Microsoft Monitoring Agent potrebbe essere messo in pausa durante il riavvio delle applicazioni.
"<appName>"
Specificare il percorso del sito Web e il nome dell'applicazione Web in IIS. Se si preferisce, è possibile includere anche il percorso di IIS.
"<IISWebsiteName>\<IISWebAppName>"
-oppure-
"IIS:\sites\<IISWebsiteName>\<IISWebAppName>"
Questo percorso è disponibile in Gestione IIS. Ad esempio:
È possibile usare anche i comandi Get-WebSite e Get WebApplication.
<monitoringMode>
Specificare la modalità di monitoraggio:
Monitor: vengono registrati dettagli minimi sugli eventi relativi a eccezioni e prestazioni. In questa modalità viene usato il piano di raccolta predefinito.
Trace: vengono registrati dettagli a livello di funzione o monitorate le applicazioni SharePoint 2010 e SharePoint 2013 tramite il piano di raccolta specificato. In questa modalità l'esecuzione dell'applicazione potrebbe essere più lenta.
Come è possibile configurare le autorizzazioni per il pool di applicazioni?
How can I get the most data without slowing down my app?
In questo esempio vengono registrati gli eventi per un'applicazione SharePoint ospitata in un sito SharePoint:
Start-WebApplicationMonitoring "FabrikamSharePointSite\FabrikamSharePointApp" Trace "C:\Program Files\Microsoft Monitoring Agent\Agent\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" "C:\IntelliTraceLogs"
Custom: vengono registrati i dettagli personalizzati usando un piano di raccolta personalizzato specificato. Sarà necessario riavviare il monitoraggio se si modifica il piano di raccolta dopo l'avvio del monitoraggio.
"<outputPath>"
Specificare il percorso completo della directory per archiviare i log IntelliTrace. Assicurarsi di creare questa directory prima di iniziare il monitoraggio.
<UInt32>
Specificare la dimensione massima per il log IntelliTrace. La dimensione massima predefinita del log IntelliTrace è 250 MB.
Quando viene raggiunto il limite, le voci immesse per prime vengono sovrascritte dall'agente per fare spazio a ulteriori voci. Per modificare questo limite, usare l'opzione -MaximumFileSizeInMegabytes o modificare l'attributo MaximumLogFileSize nel piano di raccolta.
"<collectionPlanPathAndFileName>"
Specificare il percorso completo o relativo e il nome del file del piano di raccolta. Questo piano è un file con estensione xml tramite cui vengono configurate le impostazioni dell'agente.
Questi piani vengono inclusi con l'agente e funzionano con le applicazioni Web e SharePoint:
collection_plan.ASP.NET.default.xml
Vengono raccolti solo gli eventi, come eccezioni, eventi di prestazioni, chiamate a database e richieste del server Web.
collection_plan.ASP.NET.trace.xml
Vengono raccolte le chiamate a livello di funzione e tutti i dati presenti nel piano di raccolta predefinito. Questo piano è ideale per l'analisi dettagliata, ma l'applicazione potrebbe risultare rallentata.
Nelle sottocartelle dell'agente sono disponibili le versioni localizzate di questi piani. È anche possibile personalizzare questi piani o crearne di propri per evitare di rallentare l'applicazione. Inserire tutti i piani personalizzati nella stessa posizione sicura dell'agente.
How else can I get the most data without slowing down my app?
Per altre informazioni sulla sintassi completa e altri esempi, eseguire il comando get-help Start-WebApplicationMonitoring –detailed o get-help Start-WebApplicationMonitoring –examples.
Per controllare lo stato di tutte le applicazioni Web monitorate, eseguire il comando Get-WebApplicationMonitoringStatus.
Domande e risposte
D: come è possibile ottenere il maggior numero possibile di dati senza rallentare l'applicazione?
R: tramite Microsoft Monitoring Agent è possibile raccogliere moltissimi dati e l'impatto sulle prestazioni dell'applicazione dipende dai dati che si sceglie di raccogliere e da come avviene la raccolta. Esistono dei metodi per ottenere la maggior quantità di dati possibile senza rallentare l'app:
Per le applicazioni Web e SharePoint, tramite l'agente vengono registrati i dati per ogni applicazione in cui è condiviso il pool di applicazioni specificato. Ciò potrebbe rallentare qualsiasi applicazione in cui è condiviso lo stesso pool di applicazioni, anche se è possibile limitare la raccolta ai moduli per una singola applicazione. Per evitare di rallentare le altre applicazioni, inserire ogni applicazione nel proprio pool di applicazioni.
Rivedere gli eventi per i quali tramite l'agente vengono raccolti i dati nel piano di raccolta. Modificare il piano di raccolta per disabilitare gli eventi non rilevanti o interessanti. Ciò può migliorare le prestazioni di avvio e di runtime.
Per disabilitare un evento, impostare l'attributo enabled per l'elemento <DiagnosticEventSpecification> su false:
<DiagnosticEventSpecification enabled="false">
Se l'attributo enabled non esiste, l'evento è abilitato.
Ad esempio:
Disabilitare gli eventi di Windows Workflow per le applicazioni in cui non è usato Windows Workflow.
Disabilitare gli eventi del Registro di sistema per le applicazioni tramite cui viene effettuato l'accesso a questo registro, senza tuttavia riscontrare problemi con le relative impostazioni.
Rivedere i moduli per i quali tramite l'agente vengono raccolti i dati nel piano di raccolta. Modificare il piano di raccolta per includere solo i moduli desiderati.
In questo modo viene ridotta la quantità di informazioni relative alle chiamate ai metodi e altri dati di strumentazione raccolti dall'agente durante l'avvio e l'esecuzione dell'applicazione. Questi dati consentono di scorrere il codice quando si esegue il debug e di rivedere i valori passati e restituiti dalle chiamate di funzione.
Aprire il piano di raccolta. Trovare l'elemento <ModuleList>.
In <ModuleList>, impostare l'attributo isExclusionList su false.
Usare l'elemento <Name> per specificare i singoli moduli con uno degli elementi seguenti: nome file, valore della stringa per includere tutti i moduli il cui nome contiene la stringa specificata oppure chiave pubblica.
In questo esempio viene creato un elenco tramite cui vengono raccolti i dati solo dal modulo principale dell'applicazione Web Fabrikam Fiber:
<ModuleList isExclusionList="false"> <Name>FabrikamFiber.Web.dll</Name> </ModuleList>
Per raccogliere i dati dai moduli il cui nome include "Fabrikam", creare un elenco come questo visualizzato di seguito:
<ModuleList isExclusionList="false"> <Name>Fabrikam</Name> </ModuleList>
Per raccogliere i dati dai moduli specificando i relativi token della chiave pubblica, creare un elenco come questo visualizzato di seguito:
<ModuleList isExclusionList="false"> <Name>PublicKeyToken:B77A5C561934E089</Name> <Name>PublicKeyToken:B03F5F7F11D50A3A</Name> <Name>PublicKeyToken:31BF3856AD364E35</Name> <Name>PublicKeyToken:89845DCD8080CC91</Name> <Name>PublicKeyToken:71E9BCE111E9429C</Name> </ModuleList>
D: perché non escludere semplicemente i moduli?
R: per impostazione predefinita, i moduli vengono esclusi dai piani di raccolta impostando l'attributo isExclusionList su true. Tuttavia, in questo modo è possibile che vengano comunque raccolti dati da moduli che non soddisfano i criteri dell'elenco o non desiderati, ad esempio moduli di terze parti oppure open-source.
D: quali valori vengono raccolti dall'agente?
R: per ridurre l'impatto sulle prestazioni, tramite l'agente vengono raccolti solo i valori seguenti:
Tipi di dati primitivi che vengono passati e restituiti dai metodi
Tipi di dati primitivi nei campi per gli oggetti di livello superiore passati e restituiti dai metodi
Ad esempio, si supponga di avere una firma del metodo AlterEmployee che accetta un id Integer e un oggetto Employee oldemployee:
public Employee AlterEmployee(int id, Employee oldemployee)
Il tipo Employee ha i seguenti attributi: Id, Name e HomeAddress. Esiste una relazione di associazione tra Employee e il tipo Address.
Tramite l'agente vengono registrati valori per id, Employee.Id, Employee.Name e per l'oggetto Employee restituito dal metodo AlterEmployee. Tuttavia, tramite l'agente non vengono registrate informazioni sull'oggetto Address, eccetto se era Null oppure no. Inoltre, tramite l'agente non vengono registrati i dati sulle variabili locali nel metodo AlterEmployee, a meno che non vengano usate da altri metodi come parametri; in questo caso vengono registrate come parametri di metodo.
Passaggio 3: salvataggio degli eventi registrati
Quando si rileva un errore o un problema di prestazioni, salvare gli eventi registrati in un log IntelliTrace. Il log viene creato dall'agente solo se sono stati registrati degli eventi. Se si usa System Center 2012, vedere Monitoraggio delle applicazioni Web con Microsoft Monitoring Agent.
Salvataggio degli eventi registrati continuando il monitoraggio
Attenersi a questi passaggi se si desidera creare il log IntelliTrace senza riavviare l'applicazione o arrestare il monitoraggio. Il monitoraggio viene continuato dall'agente anche in caso di riavvio dell'applicazione o del server.
Nel server Web aprire una finestra del prompt dei comandi di Windows PowerShell come amministratore.
Eseguire il comando Checkpoint-WebApplicationMonitoring per salvare uno snapshot del log IntelliTrace:
Checkpoint-WebApplicationMonitoring "<IISWebsiteName>\<IISWebAppName>"
-oppure-
Checkpoint-WebApplicationMonitoring "IIS:\sites\<IISWebsiteName>\<IISWebAppName>"
Ad esempio:
PS C:\>Checkpoint-WebApplicationMonitoring "Fabrikam\FabrikamFiber.Web"
-oppure-
PS C:\>Checkpoint-WebApplicationMonitoring "IIS:\sites\Fabrikam\FabrikamFiber.Web"
Per altre informazioni, eseguire il comando get-help Checkpoint-WebApplicationMonitoring –detailed o get-help Checkpoint-WebApplicationMonitoring –examples.
Copiare il log in una cartella condivisa sicura, quindi aprirlo da un computer con Visual Studio Ultimate 2013.
Nota sulla sicurezza Prestare attenzione quando si condividono i log IntelliTrace poiché potrebbero essere inclusi dati personali e sensibili.Assicurarsi che chiunque possa accedere a questi log disponga delle autorizzazioni per esaminare questi dati.Controllare i criteri aziendali sulla privacy.
Operazione successiva: Diagnosticare gli eventi registrati in Visual Studio Ultimate 2013
Salvataggio degli eventi registrati e arresto del monitoraggio
Attenersi ai passaggi seguenti se si desidera ottenere informazioni diagnostiche durante la riproduzione di un problema specifico. In questo modo verranno riavviate tutte le applicazioni Web nel server Web.
Nel server Web aprire una finestra del prompt dei comandi di Windows PowerShell come amministratore.
Eseguire il comando Stop-WebApplicationMonitoring per creare il log IntelliTrace e arrestare il monitoraggio di un'applicazione Web specifica:
Stop-WebApplicationMonitoring "<IISWebsiteName>\<IISWebAppName>"
-oppure-
Stop-WebApplicationMonitoring "IIS:\sites\<IISWebsiteName>\<IISWebAppName>"
Oppure, per arrestare il monitoraggio di tutte le app Web:
Stop-WebApplicationMonitoring -All
Ad esempio:
PS C:\>Stop-WebApplicationMonitoring "Fabrikam\iFabrikamFiber.Web"
-oppure-
PS C:\>Stop-WebApplicationMonitoring "IIS:\sites\Fabrikam\FabrikamFiber.Web"
Per altre informazioni, eseguire il comando get-help Stop-WebApplicationMonitoring –detailed o get-help Stop-WebApplicationMonitoring –examples.
Copiare il log in una cartella condivisa sicura, quindi aprirlo da un computer con Visual Studio Ultimate 2013.
Operazione successiva: Diagnosticare gli eventi registrati in Visual Studio Ultimate 2013
Domande e risposte
D: dove è possibile ottenere ulteriori informazioni?
Blog
Pagina relativa all'introduzione a Microsoft Monitoring Agent
Ottimizzazione della raccolta IntelliTrace nei server di produzione