Utilizzare Application Insights in un nuovo progetto ASP.NET MVC

Ore che stiamo cominciando a conoscere Microsoft Application Insights, e dopo che ne abbiamo cominciato a vedere le prime nozioni di base, possiamo parlare di sviluppo.

In questo post voglio far vedere la semplicità con cui possiamo usare Application Insights in un progetto ASP.NET MVC nel caso di un nuovo progetto, nel successivo post mostrerò anche il caso di un progetto già esistente in cui la telemetria di Microsoft non era stata prevista sin dall’inizio.

Ricordo che per usare Application Insights non è necessario per forza usare Visual Studio e pensare allo sviluppo con il .NET framework, dato che l’elenco di SDK , per vari linguaggi e piattaforme, è molto variegato.
Nel nostro esempio, per semplicità andremo sugli ambienti a me più familiari. Infatti con Visual Studio 2013 (service pack 3) o Visual Studio 2015, la piattaforma di Application Insights si può trovare già integrata e pronta all’uso (in termini di librerie per lo sviluppo).

Prima di proseguire, accertatevi di avere una subscription attiva su Azure, come vi avevo già spiegato.

Partiamo quindi con un progetto ex-novo, basato su ASP.NET MVC su Visual Studio 2015.

Da Visual Studio 2015 facciamo, come sempre, File > New > Project… > Web > ASP.NET Web Application per partire con un nuovo progetto ASP.NET MVC.

IMG01

Come potete notare dall’immagine sopra, sul lato destro della dialog di creazione di un nuovo progetto trovate già un check che ci consente l’utilizzo di Application Insights all’interno del progetto che stiamo andando a creare.
Chiaramente se non vogliamo che il nostro progetto usi la telemetria si può anche deselezionare.

Nel nostro caso lo lasciamo selezionato e subito sotto andiamo a configurare l’account, sottoscrizione e risorsa di Azure da usare per la creazione di questa telemetria.
Lascio a voi le prove per la configurazione, magari utilizzando anche la voce “Configure settings…” presente sempre tra i parametri, è talmente semplice da fare in autonomia che spiegarlo nel dettaglio non serve.

L’unica cosa da fare è scegliere il tipo di progetto web e attendere quei 20-30 secondi necessari per la configurazione automatica.

Importante sapere che se avevate già creato su Azure una risorsa Application Insights e volete utilizzare quella per la telemetria, potete sempre selezionarla nel menù a tendina che trovate in questa dialog.

Nel caso più comune, possiamo crearne una nuova e lasciare a questo wizard il compito di generare tutta l’infrastruttura necessaria sul cloud, operazione che richiede in genere circa 20-30 secondi, quindi sicuramente più veloce di quello che impiegheremmo noi a crearla dal portale di Azure.

Al termine di questa operazione avremo il nostro progetto creato e la risorsa Application Insights creata e pronta all’uso.

All’interno del nostro progetto troveremo un file ApplicationInsights.config, che di fatto è un xml così come lo è il classico web.config, in cui troveremo tutte e sole le informazioni relative alla risorsa Application Insights che utilizziamo nel nostro progetto.

IMG02

All’interno di questo file troveremo una serie di informazioni che andremo ad analizzare in un post successivo.

Intanto la cosa che ci serve subito indicare è la Instrumentation Key, che è di fatto la “chiave” identificativa univoca della nostra risorsa Application Insights:

 IMG03.png

Se volessimo quindi un giorno cambiare la risorsa Application Insights da utilizzare per la nostra telemetria, sarebbe qui che dovremmo intervenire una volta creata una nuova risorsa sulla nostra sottoscrizione Azure.

Passo successivo: importazione dello script JavaScript di Application Insights.

A questo punto la nostra applicazione web è “quasi” pronta, nel senso che adesso sa “dove” inviare le informazioni che verranno raccolte e catalogate, ma non sa ancora “quali” informazioni inviare.

Si, perchè se non l’avete ancora capito, le informazioni che troverete su Application Insights sono inviate dalla vostra applicazione, e non si generano in automatico per magia…

Per quanto riguarda i sistemi di telemetria, o Web Analytics, come lo è appunto Application Insights (e come lo è, giusto per fare un esempio magari più noto, Google Analytics), la prima cosa che fanno nella maniera più semplice del mondo, è quella di raccogliere informazioni sulle pagine visitate e altre info quali, ad esempio, la provenienza delle chiamate, il tipo di dispositivo, ecc.

Questa è la prima cosa che si fa in questi sistemi di telemetria, di solito usando un semplice script JavaScript da inserire nelle pagine da monitorare.
E infatti lo possiamo fare anche con Application Insights.

Questa operazione non avviene in automatico ed è una delle poche cose da fare subito da soli una volta impostato il nostro progetto.

Per copiare il nostro script a questo punto dobbiamo andare sul portale di Azure all’indirizzo:

https://portal.azure.com

IMG04.png

Selezionando dall’elenco a sinistra la voce “Application Insights”, vi verranno mostrate le risorse di telemetria che avete nella vostra sottoscrizione, selezionando quella che riguarda il progetto appena creato avremo una vista del genere:

IMG05.png

Come potete vedere nell’immagine sopra, vi verranno mostrate tutta una serie di informazioni relative alla risorsa Application Insights che avete utilizzato.
La semplicità di utilizzo della dashboard di Azure vi aiuterà moltissimo a trovare tutto quello che vi serve per la telemetria, di questo aspetto ne parleremo in seguito.

Per i nostri scopi, ovvero trovare lo script JavaScript da utilizzare, possiamo andare alla sezione dei settings (tramite la label “Settings and Diagnostics” che trovate nel “blade” centrale (ricordo che i “blade” in Azure sono le “sezioni” che man mano si aprono a destra dell’item che selezioniamo), e una volta selezionato quello, a destra andate nella sezione “Getting started”, quindi scegliere “MONITOR AND DIAGNOSE CLIENT SIDE APPLICATION” e arriveremo a trovare lo script che vediamo di seguito:

IMG06.png

Come vedete dall’immagine, si tratta di uno script JavaScript che possiamo copiare velocemente nella nostra clipboard utilizzando il tastino sopra evidenziato, a quel punto possiamo copiarlo nelle pagine del nostro progetto ASP.NET MVC che stavamo preparando.

La cosa più veloce da fare, di solito, è quella di mettere lo script nella “master page” del progetto, per far si che ogni pagina venga tracciata senza doversi preoccupare di ripetere lo script in ogni nuova pagina della nostra applicazione.

Per quanto riguarda ASP.NET MVC, la “master page” è rappresentata dalla pagina (o view) _Layout.cshtml, in cui a questo punto possiamo posizionare il codice appena copiato:

IMG07

Da questo momento in poi, le visite alle nostre pagine verranno tracciate su Application Insights, e potremo sempre verificare quali tipo di device o browser ha visitato la pagina e quando lo ha fatto ed altre informazioni a riguardo.

Personalmente sono solito mettere lo script in una partial view ad hoc (ad esempio chiamandola “_ApplicationInsights.cshtml”) e aggiungere la partial view nella _Layout.cshtml, ma è solo una questione di “leggibilità” del codice, non c’è nessun vantaggio pratico nel farlo.

Un paio di cose da ricordare prima di chiudere:

  • con la situazione appena descritta, qualora dovessimo cambiare la risorsa Application Insights da utilizzare, si dovrebbe cambiare la Instrumentation Key sia nel file ApplicationInsights.config che nella _Layout.cshtml, a meno di far si che da quest’ultimo file la chiave venga passata tramite Razor
  • i dati inviati in fase di sviluppo e debug saranno “fasulli”, quindi allo scopo del nostro business non saranno dati utili, è quindi molto più saggio (e direi necessario) usare due risorse distinte di Application Insights, una per lo sviluppo, e una per la produzione

Per entrambi i punti sopra descritti, scriverò un post apposito per la gestione di più environment applicativi, in cui entrambi i punti saranno risolti. Ma abbiate pazienza ancora qualche giorno per leggerlo…

Intanto cominciate a dare un’occhiata a quello che vi ho detto, probabilmente troverete tutto ancora più semplice anche di come ve l’ho descritto io… 😉

 

Utilizzare Application Insights in un nuovo progetto ASP.NET MVC

3 pensieri su “Utilizzare Application Insights in un nuovo progetto ASP.NET MVC

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...