Visual Studio Online este o platformă dezvoltată de Microsoft care oferă o colecție de servicii destinată dezvoltării aplicațiilor software. Serviciile disponibile sunt:
De fapt Visual Studio Online e un Team Foundation Server în cloud, care aduce avantajele specifice aplicațiilor din cloud pentru că nu necesită instalare, configurare, iar mentenanța e asigurată de Microsoft). Utilizatorii au nevoie doar să se logheze pe această platformă şi să o folosească.
Visual Studio Online aduce în plus şi o aplicație "Application Insight", dedicată pentru monitorizarea şi culegerea datelor aplicaţiilor care rulează în mediul de producție.
Aplicaţiile care pot fi monitorizate pot fi de următorul tip:
În continuare vom urmări cum se configurează aceasta aplicație şi modul în care ne oferă datele spre analiză.
Intrarea în aplicaţia "Application Insight" se face din Visual Studio Online, după logare din dashboard se dă click pe link-ul "Try Application Insight" (Understand and optimize the performance of your application).
În continuare vom urmări cum se configurează o aplicaţie web.
Printr-un scurt wizard (Add application) se va specifica ce tip de aplicaţie se va monitoriza. Utilizatorul trebuie să aleagă dacă aplicaţia este .Net sau Java, dacă e în Azure sau nu şi dacă se doreşte să se colecteze datele de pe o componentă server.
După aceea, în următorul ecran, utilizatorul specifică un nume pentru aplicaţie şi primeşte un fişier de configurare care trebuie copiat în folder-ul principal al aplicaţiei web.
Pentru colectarea informaţiilor în tip real de la site-ul web mai e necesară instalarea unei aplicaţii desktop "Microsoft Monitoring Agent" pe calculatorul pe care e instalată aplicaţia web, iar pentru colectarea datelor de la utilizatori (sistemul de operare, browser-ul, locația) sunt necesare câteva modificări în aplicaţie.
Astfel, ca să aflăm de câte ori a fost vizitată fiecare pagină din aplicaţie trebuie copiat un cod javascript în header-ul fiecărei pagini:
Iar dacă dorim să avem informații despre utilizatorii logaţi şi activităţile lor, e nevoie ca după logare să salvăm informaţii despre utilizatori în obiectul javascript appInsights.
Toate informaţiile care se culeg prin această aplicaţie pot fi configurate ulterior prin acel fişier de configurare care a fost copiat în root-ul aplicaţiei web.
Fişierul de configurare conţine două profile: Production and Development şi putem configura aceste proprietăţi individual pentru fiecare profil.
Proprietăţile care se pot configura sunt următoarele:
Proprietate |
Descriere |
Prod |
Dev |
Enabled |
Atribut al nodului ServerAnalytics - specifică dacă este activat sau nu serviciul de colectare de date |
True |
True |
SendToRawStream |
Specifică daca se trimit datele pentru analiză în pagina Diagnostics/Stream şi către widget-ul Raw Event |
False |
True |
CollectUserName |
Specifică daca se colectează username-ul utilizatorului curent |
False |
True |
CollectMachineName |
Dacă se colectează sau nu numele maşinii utilizatorului curent |
False |
True |
DataUpload IntervalInSeconds |
Intervalul de timp la care se trimit datele colectate (în secunde) |
60 |
0.1 |
AutoFillClient PropertiesFromRequest |
Colectează datele despre client din request-ul HTTP |
True |
True |
CollectClientIPAddress |
Colectează ip-ul clientului din request-ul HTTP |
True |
True |
Există o versiune de "Application Insight" integrată cu IDE-ul Visual Studio, care se poate instala din meniul "Extensions & Updates" din Visual Studio.
După instalare, la click dreapta pe proiectul dorit mai apare o opţiune pentru adăugarea aplicaţiei "Application Insights" la proiectul dorit.
După adăugarea aplicaţiei la proiect, se va crea automat o aplicaţie în Visual Studio Online care va colecta date despre proiect.
"Application Insight" are cinci secţiuni principale care afişează datele colectate:
În continuare vom urmări pe un exemplu concret modul în care sunt afişate informaţiile.
Dashboard-ul default conţine trei widget-uri: unul pentru Disponibilitate, unul pentru Perfomanţă şi unul pentru Utilizare. Cu ajutorul acestui dashboard se poate uşor observa dacă sunt probleme în aplicaţie.
Iniţial sunt afişate doar informaţiile din ultimele 24 de ore dar se poate uşor seta un alt interval de timp. Există preopţiuni pentru: "Last hour", "Last 4 hours", "Last 12 hours", "Last 24 hours", "Last 3 days", "Last 7 days", iar prin intermediul opțiunii "Custom" se poate selecta orice interval de dată dorit (ex. 1 ianuarie - 15 ianuarie).
În cel de-al doilea tab (Availability) se afișează un grafic mai detaliat despre disponibilitatea aplicaţiei.
Aici se pot defini mai multe zone din care să se verifice dacă aplicaţia este disponibilă.
În exemplul de mai sus am definit câteva zone în lume: Australia, America de Sud (Brazilia), Europa (Londra, Moscova), America de Nord (USA) şi Asia (Japonia), de unde să se verifice dacă aplicaţia este disponibilă. Este afişat de asemenea şi cât a durat request-ul din fiecare zonă, putându-se astfel depista dacă aplicaţia are probleme doar într-o anumită zonă.
Exista de asemenea posibilitatea să se definească alerte. Astfel, dacă aplicaţia nu este disponibilă în una sau mai multe zone, se poate specifica să se trimită un mesaj (e-mail) la o anumită adresă (sau la mai multe) în care să se notifice de problema apărută. Un astfel de mail e prezentat mai jos.
Această secţiune conţine mai multe widget-uri care prezintă informaţii despre performanţele aplicaţiei. Aceste widget-uri ajută foarte mult la identificarea problemelor de performanţă apărute în aplicaţie.
Pagina de performanţă
Widget-uri care apar implicit sunt următoarele:
Această pagină conţine informaţii utile despre utilizatorii care accesează aplicaţia. Se poate vizualiza de aici care sunt paginile cele mai accesate din aplicaţie, câţi utilizatori au accesat site-ul, browser-ul folosit, rezoluţia cu care operează utilizatorii etc..
La prima vedere aceste informaţii par mai utile celor de la marketing, management; dar se poate de asemenea oferi şi informaţii utile dezvoltatorilor. Astfel se poate determina dacă e necesară implementarea unor noi funcționalităţi (ex: suport pentru un anumit tip de browser, rezoluţie sau limbă).
În această pagină sunt prezentați diferite metrici care ajută la diagnosticarea problemelor care au apărut la rularea aplicaţiei.
Observăm ca în pagina principală este afişat un sumar al evenimentelor din aplicaţie. În poza de mai sus apar doar trei metrici: excepţii, performanţă şi memorie; dar se pot alege uşor alte metrici dintr-o listă mai lungă de metrici predefinite puse la dispoziţie de către Microsoft.
În continuare, vom vizualiza informaţiile oferite de două dintre metrici (exception şi performance).
Exception events - afișează toate excepţiile care au apărut la rularea aplicaţiei. Iniţial în pagina de diagnostic apare doar numărul excepţiilor apărute, dar dacă se doreşte vizualizarea mai detaliată a acestora prin click pe acel sumar, se intră într-o altă fereastră în care se pot vizualiza toate excepţiile.
Dacă se doreşte aflarea mai multor detalii despre o excepţie prin dublu click pe eroarea dorită, se deschide un popup în care aflăm toate informaţiile despre eroare: parametri, stack, linia de cod.
Cu ajutorul acestor informaţii se poate identifica în ce condiţii a apărut eroarea, se poate reproduce şi apoi repara.
Perf events - afişează toate evenimentele de tip performanţă apărute în aplicaţie.
La fel ca în widget-ul de excepţii, dacă se doreşte investigarea în detaliu a unei probleme de perfomanţă, se poate intra în fereastra de detalii, unde putem să aflăm toate informaţiile despre eveniment (parametri, durata de execuţie a fiecărei metode - inclusiv codul de sql care s-a executat).
Cu ajutorul acestor informaţii se poate uşor identifica unde are aplicaţia probleme de performanţă şi se poate interveni în remedierea acestora.
Un alt lucru foarte util pe care îl suportă "Application Insight" e integrarea cu logger-ul din aplicaţie. Printr-un mic wizard se selectează logger-ul folosit (Log4Net, NLog sau Trace Listener) iar apoi Visual Studio Online, generează un config care trebuie adăugat în fişierul de configurare al aplicaţiei.
Astfel informaţiile logate în aplicaţie vor apărea şi în "Application Insight" din Visual Studio Online.
Culegerea informaţiilor despre o aplicaţie în timp ce rulează nu e o operaţiune simplă, se poate folosi logging, performance counters etc; însă acestea necesită un timp suplimentar (performance counters pentru configurare, analiză; logging-ul pentru analiza datelor - uneori se caută în fişiere text de câţiva MB informaţii care ar putea ajuta dezvoltatorul să ştie ce s-a întamplat).
Application Insight are avantajul de a colecta aceste informaţii foarte ușor (nu se pierde decât foarte puţin timp pentru configurare) şi de a le prezenta într-un format uşor de interpretat.
de Cristian Pup
de Alin Luncan
de Corina Pip