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

Iniziamo ad usare Application Insights

Microsoft Application Insights è il servizio di telemetria di casa Microsoft, ospitato sul cloud Azure e di cui potete cominciare a dare uno sguardo a questo indirizzo.

Per usare quindi questo servizio, dovete necessariamente disporre di un account Azure, e per questo potete ricorrere a:

  • un account trial, limitato quindi temporalmente ad un mese, ma può bastare per fare test di “avvio” all’uso di Application Insights
  • un account a pagamento con uno dei profili che potete vedere qui, ricordando che su Azure si paga sempre e solo quello che si usa, senza costi di avvio o gestione
  • un account incluso nelle sottoscrizioni MSDN (non usabili però in produzione)

Ricordiamo che Application Insights è disponibile in tre profili di pagamento diversi, di cui il primo (gratuito) può essere più che sufficiente nella maggior parte dei casi.

AI01

 

Per l’ambiente di sviluppo, ci riferiremo a sviluppo con tecnologie Microsoft (anche se non è una limitazione di Application Insights), e quindi possiamo usare uno dei seguenti IDE (in alternativa):

  • Visual Studio 2013 Update 3
  • Visual Studio 2015

Potremmo usare anche Visual Studio Code, ma non ce ne occuperemo in questo post, ma lo faremo in un post a parte in futuro.

Vi ricordo, se non avete una versione di Visual Studio utile, che potete scaricare e usare gratuitamente la versione Community a disposizione.

Cominciate a creare il vostro account su Azure (se non ne avete già uno) e nei prossimi post vedremo come funziona Application Insights e come partire con un nuovo progetto (o con un progetto esistente) in Visual Studio.

Iniziamo ad usare Application Insights

Parliamo (ancora) di Application Insights

Dopo aver scritto un paio di articoli su Microsoft Application Insights, mi accingo a tenere una sessione al riguardo al prossimo evento DevOps@Work 2016.

Per dirla velocemente, si tratta di uno strumento di “telemetria”, utile per chi sviluppa applicazioni web e/o mobile.

Sul web a volte strumenti simili vengono indicati come strumenti di “web analytics”, e ce ne sono diversi in realtà, forse il più “noto” al riguardo immagino sia Google Analytics.

 

Lo strumento di Microsoft è arrivato in tutta onestà da poco, a memoria mi pare un paio di anni, però è cresciuto velocemente forte e sano, grazie ad una potenza “infrastrutturale” dovuta al cloud Azure, nel quale è integrato perfettamente.

Come poi sempre avviene in casa Microsoft, ci sono più SDK per l’utilizzo lato dev e non solo per ambienti / piattaforme proprietarie, ma sempre più spesso anche per altre “razze e religioni”.

Vi invito a dare un’occhiata a quello che è possibile fare con Application Insights in uno dei modi seguenti:

Dopo l’evento pubblicherò le slide della mia sessione, in ogni caso in futuro scriverò articoli di dettaglio su questo argomento.

Buone metriche!

Parliamo (ancora) di Application Insights

Un post al giorno: “si… può…fare” (cit.)

Devo impegnarmi di più, devo essere più costante, scrivere un post al giorno.

No, non me l’ha detto il dottore o chissà chi altro, è una mia idea.

Perché nonostante il “silenzio” che spesso regna su questo blog, tutte le sante sere (o quasi) le trascorro studiando, imparando questo e quello, leggendo, a volte per il podcast, a volte per la sessione che verrà, a volte solo perché preferisco vivere la rete anziché l’etere televisivo.
Spesso per farlo resto sveglio fino a tardi (eh si, poi la mattina i primi dieci minuti sono una pseudo-ameba).

La condivisione è altresì importante, per cui conviene addestrarsi alla regolarità (mentale, attenzione :D).

Per cui andiamo con un post al giorno. O almeno ci proviamo. Come con la dieta che sto facendo, giorno dopo giorno, andiamo.

Un post al giorno: “si… può…fare” (cit.)

DevOps@Work 2016

Il prossimo venerdì 5 febbraio sarò a questo evento, organizzato dalla community romana DomusDotNet (di cui orgogliosamente faccio parte anche io, da fine 2015) e da GetLatestVersion.

Per questo evento (di cui alla pagina di iscrizione potete vedere l’agenda bella ricca) abbiamo fatto il sold-out, con persone anche in lista d’attesa.

Non è usuale, sinceramente, avere più di cento iscritti ad un evento organizzato dalle Community Tecniche di Microsoft, anche se a Roma, anche se gratuito, anche se erogato dalle migliori “personalità” tecniche della capitale (e non) in materia, per cui l’orgoglio di tutti è evidente per aver preparato un evento che già prima dell’avvio si manifesta condiviso, apprezzato, celebrato in qualche modo.

Ora non ci resta che rendere giustizia a chi ci dedica una giornata (così come noi tutti la dedichiamo a loro), con un proficuo scambio di idee e di conoscenze.

Io terrò una sessione su Microsoft Application Insights, e spero di poter essere all’altezza degli altri membri della community di cui mi onoro fare parte…

…e in attesa di organizzare il primo evento di dotNET{podcast} … ma di questo ne parleremo in un altro post ;-)

DevOps@Work 2016

Podcast su TypeScript

Torno a scrivere dopo un “letargo” considerevole (causa lavoro, straordinari, community, ferie, tanto cibo, dieta, lavoro, ecc.)…

Oggi voglio segnalare un interessante podcast su dotNET{podcast} che abbiamo registrato con Alessandro Giorgetti e in cui parliamo di TypeScript.

Sulla scheda della puntata ci sono anche dei link interessanti per approfondire l’argomento.

Nella promessa che tornerò a scrivere altri post su TypeScript, nel frattempo ascoltate questo podcast e se avete commenti da fare segnalateceli sempre sulla pagina della puntata.

Podcast su TypeScript