Raccogliere i dati diagnostici in produzione usando l'agente di raccolta autonomo IntelliTrace
L'agente di raccolta autonomo IntelliTrace consente di raccogliere i dati diagnostici di IntelliTrace per le app nei server di produzione o in altri ambienti senza installare Visual Studio nel computer di destinazione e senza cambiare l'ambiente del sistema di destinazione. L'agente di raccolta autonomo IntelliTrace funziona nelle app Web, SharePoint, WPF e Windows Form. Al termine della raccolta dei dati, eliminare semplicemente l'agente di raccolta per disinstallarlo.
IntelliTrace in azione: guardare il video sulla raccolta e l'analisi dei dati IntelliTrace in produzione per il debug (video su Channel 9)
Nota
È anche possibile raccogliere gli stessi dati IntelliTrace per le app Web e SharePoint in esecuzione nei computer remoti usando Microsoft Monitoring Agent in modalità Traccia.
È possibile raccogliere gli eventi relativi alle prestazioni nei dati IntelliTrace eseguendo l'agente in modalità Monitor.La modalità Monitor ha un impatto minore sulle prestazioni rispetto alla modalità Traccia o all'agente di raccolta autonomo IntelliTrace.Microsoft Monitoring Agent non modifica l'ambiente del sistema di destinazione quando viene installato.Vedere Raccogliere i dati su diagnosi e prestazioni IntelliTrace in produzione con Microsoft Monitoring Agent.
Requisiti
.NET Framework
Visual Studio Ultimate 2015 in un computer di sviluppo o in altri computer per aprire i file .iTrace
Nota
Assicurarsi di salvare i file di simboli (PDB).Per eseguire il debug con IntelliTrace ed eseguire il codice seguendo un'istruzione alla volta sono necessari i file di origine corrispondenti e i file di simboli.Vedere Configurare la versione per diagnosticare i problemi dopo la distribuzione.
Domande frequenti
Quali app funzionano con l'agente di raccolta?
Come iniziare
Come è possibile ottenere il maggior numero possibile di dati senza rallentare l'applicazione?
In quali altre posizioni è possibile ottenere i dati IntelliTrace?
Quali app funzionano con l'agente di raccolta?
App Web ASP.NET ospitate in Internet Information Services (IIS)
Applicazioni SharePoint 2010 e SharePoint 2013
App Windows Presentation Foundation (WPF) e Windows Form.
Come iniziare
Install the collector.
Set up permissions for the collector directory.
For Web apps and SharePoint applications, install the IntelliTrace PowerShell cmdlets.
Set up permissions for the .iTrace file directory.
Collect data from a Web app or SharePoint application.
-oppure-
Collect data from a managed app.
Open the .iTrace file in Visual Studio Ultimate.
Installare l'agente di raccolta
Nel server dell'app, creare la directory dell'agente di raccolta, ad esempio C:\IntelliTraceCollector
Scaricare l'agente di raccolta dall'Area download Microsoft o dalla cartella di installazione di Visual Studio 2103 Update 3. Agente di raccolta IntelliTrace per Visual Studio 2013 Update 4:
Area download Microsoft:
Accanto a IntelliTraceCollector.exe, scegliere carica.
Salvare IntelliTraceCollector.exe nella directory dell'agente di raccolta, ad esempio C:\IntelliTraceCollector
Eseguire IntelliTraceCollector.exe. Il file IntelliTraceCollection.cab viene estratto.
-oppure-
Cartella di installazione di Visual Studio:
Copiare IntelliTraceCollection.cab dalla seguente cartella:
.. \Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\12.0.0
Inserire IntelliTraceCollection.cab nella directory dell'agente di raccolta, ad esempio: C:\IntelliTraceCollector
Espandere IntelliTraceCollection.cab:
Nel server dell'app aprire una finestra del prompt dei comandi come amministratore.
Cercare la directory dell'agente di raccolta, ad esempio: C:\IntelliTraceCollector
Usare il comando expand, incluso il punto (.) alla fine, per espandere IntelliTraceCollection.cab:
expand /f:* IntelliTraceCollection.cab .
Nota
Il punto (.) lascia inalterate le sottocartelle che contengono i piani di raccolta localizzati.
Impostare autorizzazioni per la directory dell'agente di raccolta
Nel server dell'app aprire una finestra del prompt dei comandi come amministratore.
Usare il comando di Windows icacls per concedere all'amministratore del server le autorizzazioni complete per la directory dell'agente di raccolta. Ad esempio:
icacls "C:\IntelliTraceCollector" /grant " <Domain\AdministratorID> ":F
Per raccogliere dati per un'app Web o un'applicazione SharePoint:
Concedere alla persona che esegue i cmdlet PowerShell di IntelliTrace le autorizzazioni complete per la directory dell'agente di raccolta.
Ad esempio:
icacls "C:\IntelliTraceCollector" /grant " <Domain\UserID> ":F
Concedere al pool di applicazioni per l'app Web o l'applicazione SharePoint le autorizzazioni di lettura ed esecuzione per la directory dell'agente di raccolta.
Ad esempio:
Per un'app Web nel pool di applicazioni DefaultAppPool:
icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\DefaultAppPool":RX
Per un'applicazione SharePoint nel pool di applicazioni SharePoint - 80:
icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\SharePoint - 80":RX
Installare i cmdlet di PowerShell IntelliTrace per raccogliere dati per le applicazioni Web o le applicazioni di SharePoint
Nel server dell'app, verificare che PowerShell sia abilitato. Nella maggior parte delle versioni di Windows Server, è possibile aggiungere questa funzionalità nello strumento di amministrazione Server Manager.
Installare i cmdlet PowerShell di IntelliTrace.
Aprire una finestra di comando PowerShell come amministratore.
Scegliere Start, Tutti i programmi, Accessori, Windows PowerShell.
Scegliere uno dei passaggi seguenti:
Nei sistemi operativi a 64 bit, aprire il menu di scelta rapida per Windows PowerShell. Scegliere Esegui come amministratore.
Nei sistemi operativi a 32 bit, aprire il menu di scelta rapida per Windows PowerShell (x86). Scegliere Esegui come amministratore.
Nella finestra di comando PowerShell, usare il comando Import-Module per importare Microsoft.VisualStudio.IntelliTrace.PowerShell.dll.
Ad esempio:
Import-Module "C:\IntelliTraceCollector\Microsoft.VisualStudio.IntelliTrace.PowerShell.dll"
Impostare autorizzazioni per la directory di file con estensione iTrace
Nel server dell'app, creare la directory di file .iTrace, ad esempio: C:\IntelliTraceLogFiles
Nota
-
Per evitare il rallentamento dell'app, scegliere una posizione in un disco ad alta velocità locale non troppo attivo.
-
I file .iTrace e quelli dell'agente di raccolta possono essere inseriti nella stessa posizione.Tuttavia, se si ha un'app Web o un'applicazione SharePoint, verificare che questa posizione non sia all'interno della directory che ospita l'applicazione.
Nota sulla sicurezza Limitare la directory di file .iTrace solo alle identità che devono lavorare con l'agente di raccolta.Un file .iTrace può contenere informazioni riservate, ad esempio dati degli utenti, database, altri percorsi di origine e stringhe di connessione, perché IntelliTrace è in grado di registrare tutti i dati che passano nei parametri del metodo o come valori restituiti.
Assicurarsi che le persone che possono aprire i file .iTrace dispongano delle autorizzazioni per la visualizzazione dei dati riservati.Usare prudenza quando si condividono file .iTrace.Se è necessario concedere l'accesso ad altri, copiare i file in un percorso condiviso sicuro.
-
Per un'app Web o un'applicazione SharePoint, concedere al pool di applicazioni le autorizzazioni complete per la directory di file .iTrace. È possibile usare il comando Windows icacls oppure 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:\IntelliTraceLogFiles" /grant "IIS APPPOOL\DefaultAppPool":F
Per un'applicazione SharePoint nel pool di applicazioni SharePoint - 80:
icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\SharePoint - 80":F
-oppure-
Per configurare le autorizzazioni con Esplora risorse (o Esplora file):
Aprire Proprietà per directory di file .iTrace.
Nella scheda Sicurezza, scegliere Modifica, Aggiungi.
Verificare che Entità di sicurezza predefinite sia visualizzato nella casella Selezionare questo tipo di oggetto. 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 abbia il Controllo completo.
Raccogliere i dati da un'applicazione Web o da un'applicazione SharePoint
Per avviare la raccolta dei dati, aprire una finestra di comando PowerShell come amministratore, quindi eseguire il comando:
Start-IntelliTraceCollection "<ApplicationPool>" <PathToCollectionPlan> <FullPathToITraceFileDirectory>
Importante
Dopo aver eseguito il comando, digitare Y per confermare che si vuole iniziare la raccolta dei dati.
Ad esempio, per raccogliere i dati da un'applicazione SharePoint nel pool di applicazioni SharePoint - 80:
Start-IntelliTraceCollection "SharePoint - 80" "C:\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" "C:\IntelliTraceLogFiles"
ApplicationPool
Il nome del pool di applicazioni in cui viene eseguita l'applicazione
PathToCollectionPlan
Il percorso di un piano di raccolta, un file XML che configura le impostazioni per l'agente di raccolta.
È possibile specificare un piano fornito insieme all'agente di raccolta. I seguenti piani si applicano alle app Web e alle applicazioni:
collection_plan.ASP.NET.default.xml
Raccoglie solo gli eventi IntelliTrace e SharePoint, incluse le eccezioni, le chiamate al database e le richieste del server Web.
collection_plan.ASP.NET.trace.xml
Raccoglie le chiamate di funzione e tutti i dati in collection_plan.ASP.NET.default.xml. Questo piano è utile per un'analisi dettagliata, ma può causare un rallentamento dell'app maggiore rispetto a collection_plan.ASP.NET.default.xml.
Per evitare il rallentamento dell'app, personalizzare i piani o creare proprio piano. Per garantire la sicurezza, inserire i piani personalizzati nello stesso percorso sicuro in cui si trovano i file dell'agente di raccolta. Vedere Creazione e personalizzazione dei piani di raccolta IntelliTrace e How can I get the most data without slowing down my app?
Nota
Per impostazione predefinita, la dimensione massima del file .iTrace è di 100 MB.Quando il file .iTrace raggiunge il limite, l'agente di raccolta elimina le voci meno recenti del file per liberare spazio per le nuove voci.Per modificare questo limite, modificare l'attributo MaximumLogFileSize del piano di raccolta.
Dove si possono trovare le versioni localizzate di questi piani di raccolta?
I piani localizzati sono disponibili nelle sottocartelle dell'agente di raccolta.
FullPathToITraceFileDirectory
Il percorso completo alla directory di file .iTrace.
Nota sulla sicurezza Fornire il percorso completo, non quello relativo.
Riprodurre il problema.
Per creare uno snapshot del file .iTrace, usare questa sintassi:
Checkpoint-IntelliTraceCollection "<ApplicationPool>"
Per controllare lo stato della raccolta, usare questa sintassi:
Get-IntelliTraceCollectionStatus
Per arrestare la raccolta dei dati, usare questa sintassi:
Stop-IntelliTraceCollection "<ApplicationPool>"
Importante
Dopo aver eseguito il comando, digitare Y per confermare che si vuole arrestare la raccolta dei dati.In caso contrario, l'agente di raccolta potrebbe continuare la raccolta dei dati, il file iTrace resta bloccato o il file potrebbe non contenere dati utili.
Open the .iTrace file in Visual Studio Ultimate.
Raccogliere i dati da un'app gestita
Per avviare l'app e raccogliere i dati allo stesso tempo, usare questa sintassi:
<FullPathToIntelliTraceCollectorExecutable> \IntelliTraceSC.exe launch /cp: <PathToCollectionPlan> /f:<FullPathToITraceFileDirectoryAndFileName> <PathToAppExecutableFileAndFileName>
Ad esempio, per raccogliere i dati da un'app denominata MyApp:
C:\IntelliTraceCollector\IntelliTraceSC.exe launch /cp:"C:\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" /f:"C:\IntelliTraceLogFiles\MyApp.itrace" "C:\MyApp\MyApp.exe"
FullPathToIntelliTraceCollectorExecutable
Il percorso completo al file eseguibile dell'agente di raccolta, IntelliTraceSC.exe
PathToCollectionPlan
Il percorso di un piano di raccolta, un file XML che configura le impostazioni per l'agente di raccolta.
È possibile specificare un piano fornito insieme all'agente di raccolta. I seguenti piani si applicano alle app gestite:
collection_plan.ASP.NET.default.xml
Raccoglie solo gli eventi IntelliTrace, incluse le eccezioni, le chiamate al database e le richieste del server Web.
collection_plan.ASP.NET.trace.xml
Raccoglie le chiamate di funzione e tutti i dati in collection_plan.ASP.NET.default.xml. Questo piano è utile per un'analisi dettagliata, ma può causare un rallentamento dell'app maggiore rispetto a collection_plan.ASP.NET.default.xml.
Per evitare il rallentamento dell'app, personalizzare i piani o creare proprio piano. Per garantire la sicurezza, inserire i piani personalizzati nello stesso percorso sicuro in cui si trovano i file dell'agente di raccolta. Vedere Creazione e personalizzazione dei piani di raccolta IntelliTrace e How can I get the most data without slowing down my app?
Nota
Per impostazione predefinita, la dimensione massima del file .iTrace è di 100 MB.Quando il file .iTrace raggiunge il limite, l'agente di raccolta elimina le voci meno recenti del file per liberare spazio per le nuove voci.Per modificare questo limite, modificare l'attributo MaximumLogFileSize del piano di raccolta.
Dove si possono trovare le versioni localizzate di questi piani di raccolta?
I piani localizzati sono disponibili nelle sottocartelle dell'agente di raccolta.
FullPathToITraceFileDirectoryAndFileName
Il percorso completo alla directory di file .iTrace e il nome del file .iTrace con estensione .itrace.
Nota sulla sicurezza Fornire il percorso completo, non quello relativo.
PathToAppExecutableFileAndFileName
Il percorso e il nome file dell'app gestita
Arrestare la raccolta dei dati uscendo dall'app.
Open the .iTrace file in Visual Studio Ultimate.
Aprire il file con estensione iTrace in Visual Studio Ultimate
Nota
Per eseguire il debug con IntelliTrace ed eseguire il codice seguendo un'istruzione alla volta sono necessari i file di origine corrispondenti e i file di simboli.Vedere Configurare la versione per diagnosticare i problemi dopo la distribuzione.
Spostare il file .iTrace o copiarlo in un computer con Visual Studio Ultimate.
Fare doppio clic sul file .iTrace all'esterno di Visual Studio oppure aprire il file da Visual Studio.
Visual Studio visualizza la pagina Riepilogo di IntelliTrace. Nella maggior parte delle sezioni è possibile esaminare gli eventi o altri elementi, scegliere un elemento e avviare il debug con IntelliTrace nel punto e nell'ora in cui si è verificato l'evento. Vedere Eseguire il debug dell'app usando dati di IntelliTrace salvati.
Nota
Per eseguire il debug con IntelliTrace ed eseguire il codice seguendo un'istruzione alla volta sono necessari i file di origine corrispondenti e i file di simboli nel computer di sviluppo.Vedere Configurare la versione per diagnosticare i problemi dopo la distribuzione.
Come è possibile ottenere il maggior numero possibile di dati senza rallentare l'applicazione?
IntelliTrace può raccogliere grandi quantità di dati: l'impatto sulle prestazioni dell'app dipende dai dati raccolti da IntelliTrace e dal tipo di codice analizzato. Vedere Ottimizzazione della raccolta IntelliTrace nei server di produzione.
Esistono dei metodi per ottenere la maggior quantità di dati possibile senza rallentare l'app:
Eseguire l'agente di raccolta solo quando si ritiene ci sia un problema o quando è possibile riprodurre il problema.
Avviare la raccolta, riprodurre il problema, quindi arrestare la raccolta. Aprire il file .iTrace in Visual Studio Ultimate ed esaminare i dati. Vedere Open the IntelliTrace log file in Visual Studio Ultimate..
Per le app Web e le applicazioni SharePoint, l'agente di raccolta registra i dati per ciascuna app che condivide il pool di applicazioni specificato. Questo potrebbe rallentare le app che condividono lo stesso pool di applicazioni, anche se è possibile specificare solo i mobili per una singola app in un piano di raccolta.
Per impedire che l'agente di raccolta rallenti le altre app, ospitare ciascuna app nel proprio pool di applicazioni.
Esaminare gli eventi nel piano di raccolta per il quale IntelliTrace raccoglie i dati. Modificare il piano di raccolta per disabilitare gli eventi non rilevanti o interessanti.
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.
In che modo queste funzionalità migliorano le prestazioni?
È possibile ridurre il tempo di avvio disabilitando gli eventi non rilevanti per l'app. Ad esempio, disabilitare gli eventi di Windows Workflow nelle app che non lo usano.
È possibile migliorare le prestazioni di avvio e di runtime disabilitando gli eventi del Registro di sistema per le app che accedono al Registro di sistema ma non visualizzano i problemi con le relative impostazioni.
Esaminare i moduli nel piano di raccolta per il quale IntelliTrace raccoglie i dati. Modificare il piano di raccolta per includere solo i moduli desiderati:
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.
Ad esempio, per raccogliere i dati solo dal modulo Web principale dell'app Web Fabrikam Fiber, creare un elenco come questo visualizzato di seguito:
<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>
In che modo queste funzionalità migliorano le prestazioni?
Viene ridotta la quantità di informazioni relativa alla chiamata al metodo e gli altri dati di strumentazione raccolti da IntelliTrace quando l'app viene avviata ed eseguita. Questi dati consentono di:
Eseguire il codice seguendo un'istruzione alla volta dopo aver raccolto i dati.
Esaminare i valori passati e restituiti dalle chiamate di funzione.
Perché non si sceglie di escludere i moduli, invece?
Per impostazione predefinita, i piani di raccolta escludono i moduli impostando l'attributo isExclusionList su true. Tuttavia, anche escludendo i moduli, è possibile che i dati vengano raccolti da moduli che non corrispondono ai criteri dell'elenco e che potrebbero quindi essere poco rilevanti, ad esempio moduli di terze parti o open source.
Ci sono dati che IntelliTrace non raccoglie?
Sì. Per ridurre l'impatto sulle prestazioni, IntelliTrace limita la raccolta dei dati ai valori dei tipi di dati primitivi passati e restituiti dai metodi e ai valori dei tipi di dati primitivi nei campi degli oggetti di primo livello 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.
L'agente di raccolta registra i valori per id, Employee.Id, Employee.Name e l'oggetto Employee restituito dal metodo AlterEmployee. Tuttavia, l'agente di raccolta non registra le informazioni sull'oggetto Address, tranne quelle relative allo stato null o non null. L'agente di raccolta non registra neanche i dati relativi alle variabili locali nel metodo AlterEmployee a meno che altri metodi non usino tali variabili come parametri; in questo caso, vengono registrate come parametri del metodo.
In quali altre posizioni è possibile ottenere i dati IntelliTrace?
Da una sessione di debug IntelliTrace in Visual Studio Ultimate, vedere Registrare l'esecuzione del codice con IntelliTrace durante il debug.
Da una sessione di test in Microsoft Test Manager, vedere Procedura: raccogliere dati di IntelliTrace per agevolare il debug di problemi complessi.
Dove è possibile ottenere altre informazioni?
Eseguire il debug dell'app usando dati di IntelliTrace salvati
Eseguire il debug dell'app registrando l'esecuzione del codice con IntelliTrace
Blog
Uso in remoto dell'agente di raccolta autonomo IntelliTrace
Creazione e personalizzazione dei piani di raccolta IntelliTrace
Ottimizzazione della raccolta IntelliTrace nei server di produzione
Blog su Visual Studio ALM + TFS
Forum
Video
Video Channel 9: Raccolta e analisi dei dati IntelliTrace in produzione