Una feature molto interessante per investigare il comportamento di una applicazione (ricordo che non si può debuggare nella cloud) è legata alle funzionalità di Intellitrace di Visual Studio 2010. Il suo utilizzo è molto semplice: durante una pubblicazione da Visual Studio, è possibile abilitare il checkbox Enable Intellitrace for .NET 4 roles per indicare nel file di definizione del modello cloud la "necessità" di registrare una sessione Intellitrace.
Dal menu Publish di Visual Studio, come si nota dall'immagine, possiamo selezionare il check box per poi premere Settings
. Le impostazioni che faremo sui Settings
saranno poi recuperate nelle pubblicazioni successive e sarà sufficiente abilitare e disabilitare il check box.
Le impostazioni di configurazione prevedono le opzioni classiche di Intellitrace. Ad esempio nella prima maschera è possibile decidere quali informazioni collezionare:
Nel tab Modules
indichiamo gli assembly da tenere sotto controllo durante l'operazione di test e nel tab Processes
quali processi monitorare. Il tab Intellitrace Events
serve a identificare gli eventi da tracciare:
Durante la pubblicazione è possibile monitorare le varie fasi con il Windows Azure Activity Log:
Anche il Server Explorer monitora il tutto in tempo "quasi reale". Nell'immagine seguente si nota Initializing
accanto a Instance 0
.
Possiamo verificare l'andamento del deploy anche dal portale di Windows Azure (devleaprob
è la subscription che uso per le prove e le conferenze).
Una volta eseguita qualche riga di codice nell'applicazione live, dal Server Explorer è possbile richiedere i dati per ogni istanza:
Il Windows Azure Activity Log
ci mostra i dati dell'intellitrace e la finestra principale mostra i vari thread e le operazioni eseguite:
Possiamo ottenere il file .itrace
grazie a Open cointaning folder
: il comando apre, appunto, la directory dove sono stati appoggiati i file di trace.
È anche possibile effettuare richieste verso le pagine o i servizi e riscaricare l'Intellitrace in qualunque momento: è bene tenere presente che i log passano sempre dallo storage prima di essere scaricati: in pratica si chiede alla Virtual Machine di esportare il log dell'intellitrace verso lo storage indicato durante il deploy e poi Visual Studio scarica il tutto via HTTP direttamente dallo storage. È bene rimarcare che i dischi locali delle istanze su Windows Azure non sono accessibili dall'esterno: questo il motivo per il quale tutte le informazioni di diagnostica sono esportate sullo storage per renderle accessibili dall'esterno.
IntelliTrace offre la possbilità di monitorare le istanze in deployment direttamente dal Server Explorer. Ad esempio, nell'immagine seguente il server explorer del PC.
Nell'immagine si nota il sito di ThinkAhead in produzione, con lo stato della sua Istanza "0"
. A fianco altri progetti che stiamo seguendo.
Accesso allo Storage Account
Dal Server Explorer è anche possibile analizzare i dati presenti nello Storage Account utilizzando l'account name e la relativa chiave di accesso.
L'immagine seguente mostra una richiesta della lista dei blob dello storage account simulato in locale e presenti all'interno del container gallery
. È anche possibile, in alto sopra la griglia, indicare i criteri per effettuare la query come ordinamenti, filtri e/o paginazione.
Lo stesso risultato si può ottenere interrogando i data service che espongono le table:
Per approfondire le modalità di gestione dello storage account e altre buone pratiche sullo sviluppo con Windows Azure è leggete pure la Guida Windows Azure Code Snippets