ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 150
Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 24
Abonament PDF

Visual Studio Online Monitorizarea unei aplicaţii web folosind Application Insights

Marius Cotor
Technical Lead
@3Pillar Global



PROGRAMARE

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:

  • Source repository (Team Foundation Version Control şi Git);
  • Tool-uri pentru planificarea și urmărirea proiectelor (work item tracking, planning, management - suport pentru Agile: Scrum, Kanban);
  • Test environment (Load testing);
  • Continuous integration (build server).

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:

  • Web service sau web application,
  • Web pages care folosesc JavaScript,
  • Aplicaţii Windows Phone 8,
  • Aplicaţii Windows Store.

În continuare vom urmări cum se configurează aceasta aplicație şi modul în care ne oferă datele spre analiză.

Configurarea aplicaţiei

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.

Configurare avansată

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.

Monitorizare

"Application Insight" are cinci secţiuni principale care afişează datele colectate:

  • Pagina principală (Overview) - aici se poate configura o pagină de start în care se pot defini care widget-uri să apară în pagina de start.
  • Disponibilitatea (Availability) - afişează disponibilitatea aplicaţiei (raportul de timp) în care aplicaţia e disponibilă.
  • Performanţa (Performance) - afişează informaţii despre performanţa aplicaţiei, durata request-urilor, numărul de request-uri, încărcarea calculatorului etc..
  • Utilizarea (Usage) - colectează informaţii despre utilizarea aplicaţiei, paginile cele mai des accesate, numărul de utilizatori, locaţia de unde s-a accesat aplicaţia etc..
  • Diagnostic - conţine metrici culeşi din aplicaţie care ajută la culegerea informaţiilor care au avut loc (numărul de excepţii apărute în aplicaţie, problemele de memorie şi de performanţă depistate).

În continuare vom urmări pe un exemplu concret modul în care sunt afişate informaţiile.

Overview

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).

Disponibilitatea aplicaţiei

Î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ă.

Definirea locaţiilor pentru verificarea disponibilităţii aplicaţiei

Î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.

Performanţa aplicaţiei

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:

  • Response Time and Load vs. Dependencies - acest widget afişează tipul de răspuns al aplicaţiei, numărul de request-uri făcute şi timpul în care s-a răspuns la aceste request-uri;
  • Response time distribution - afişează o distribuţie a request-urilor din punctul de vedere al timpului de răspuns (câte au avut un timp de răspuns mai mic de 0.5 secunde, câte au durat mai mult de o secundă, câte au durat mai mult de 5 secunde);
  • Exception Rate - afişează câte excepţii apar pe secundă;
  • CPU - cât la sută este folosit procesorul de către aplicaţie;
  • Network - afișează cât de mult este folosită reţeaua;
  • Memory in use - memoria folosită;
  • Average instance count - numărul mediu de instanţe de aplicaţie.
  • Top 10 slowest requests by issue count - afișează cele mai lente 10 request-uri. Analiza informaţiilor recepționate prin acest widget le vom analiza mai târziu în pagina de diagnosticare.

Utilizabilitatea aplicaţiei

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ă).

Pagini Vizualizate - de câte ori a fost vizualizată fiecare pagină din site

Diagnostic

Î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.

Logging

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.

Concluzii

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.

NUMĂRUL 149 - Development with AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects