2011-11-09

Spela in nätverkstrafik på en Virtuell Maskin? Eller: "hur får man info om hur applikationen funkar?" (del 3)

Detta är del3 i en bloggserie om prestandamätning i en XenServer/XenApp miljö.
I del 1 handlade det om en bakgrund kring miljön, och så satte vi upp en ny Virtuell XenApp maskin som skall användas för delar av prestandamätningarna.
Del 2 kikade vi på hur man spelar in trafiken på nätverkskortet
Här i del 3 tar vi och analyserar inspelningen.


Så då kör vi.
Vi har kikat på hur miljön ser ut, vi har skapat vår testmiljö, vi har spelat in trafiken och vi har överfört den från XenServer-hosten till vår egna maskin.

Nästa steg är då att kika på de inspelade filerna.
Jag har ju som sagt tre filer:
Inspelning1 - från när jag klickar på applikationen i Citrix Webinterface, tills dess att applikationen har startat och jag får upp fönstret.
Inspelning 2 - när jag gör en sökning i applikationen. klickar på första resultatet och får upp det nya resultatfönstret.
Inspelning 3 - När jag klickar på en viss funktion i applikationen och väntar på att få upp ett förhandsgranskningsfönster.
Jag startar Wireshark på min PC och klickar på "File" => "Open..." och pekar ut min första inspelning.

Disclaimer.
Här är det nu på sin plats för en disclaimer. Jag är under inga som helst omständigheter speciellt vass på att analysera nätverkstrafik. Jag har tämligen begränsade kunskaper i Wireshark och det finns säkert en massa bra information i inspelningarna som jag helt missar.
Men det jag ville uppnå i just detta fall var att se trafikmönstret för en applikation och här har jag hittat ett sätt som funkar för mig. Jag säger inte att detta är det bästa sättet att analysera en nätverkstrace, jag säger inte heller att det är det enda sättet. Vad jag säger är att det här funkade för mig. :)
Jag tar enormt gärna emot feedback på hur jag kan bli bättre på nätverksanalys. Maila eller lägg en kommentar här vettja! :)

Nu fortsätter vi.
När jag så laddat inspelningen (min första är på straxt under 3MB så det går rätt fort) så får jag upp en bild som ser ut så här:

De röda fälten döljer de första två octeterna i IP-adresserna.
Scrollar jag längst ned i min inspelning ser jag att det är totalt drygt 34 sekunder som är inspelat och det är 27297 paket. Rätt mycket att analysera manuellt med andra ord. :)

Men här kan verktyget hjälpa oss.

Om vi börjar med att kika på trafikmönstret. Med andra ord, vilka maskiner har snackat med vilka...
Detta gör vi genom att klicka på "Statistics" och välja "Flow Graph..."
Då får vi upp detta fönster:
Jag har fått det resultat jag önskar när jag har valt "All packets" och "TCP flow".
Genom att välja "All packets" så vet jag att det inte finns nått filter i vyn som tar bort information och genom att välja "TCP flow" så slipper jag få med UDP-trafiken från Provisioning servrarna.

Efter at ha klickat OK så får jag följande bild.
Varje rad motsvarar ett paket. Man ser vart de små pilarna startar och kan på så sätt se vilken server som initierat kommunikationen. Det syns även med liten text inom paranteser vilken port som används.
Jag har gjort en stor svar pil på högersidan. Detta för att denna kant har jag dragit så lång till höger jag kan. Detta i sin tur för att få plats med så många serverkollumner som möjligt i bilden ovan.

Nåja. När jag har denna bild så kan jag välja "Save As" längst ned och sedan peka ut vart jag vill spara tillsammans med ett filnamn. Skriv dit ".txt" i slutet på filnamnet så blir det lättare att öppna den sedan. :)
Jag har sedan testat att ta över denna bild till Notepad och satt fontstorleken till 1.
Det går inte att läsa längre, men jag kan få en uppfattning i flödet vad som händer.

Jag skulle presentera denna för några andra personer så jag tog min trace och ritade om den lite i Visio. Här skrev jag även ut servernamnen för att det skulle bli lättare att följa det hela för andra (dessa är dolda med blåa fält).

I text-filen ovan så är det en rad per pakete ( i princip). I bilden ovan är siffrorna i de blåa ringarna hur många paket som skickades i just den kommunikationen.
De röda strecken är till för att få en tidsuppfattning. Hur lång tid har det tagit och antal sekunder står i de röda cirklarna längst ut till vänster.
Längst need står det vilken typ av trafik som skickats...

Vi ser att det är en himla massa bollande fram och tillbaka, men vi ser också vart saker och ting tar tid.. detta är rätt intressant tycker jag. :)
Det skall betonas att ovanstående bild inte är hela flödet, vara de första 14 sekunderna. :)


Men vänta det finns mer!
Genom att gå tillbaka till Wireshark och istället välja "Statistics" och sedan "IO Graphs" så kan vi få en graf över hur mycket trafik som skickats...
Nere till höger kan man välja vilken upplösning den skall ha. Jag ändrade till "Tick interval:  0.1sec" och "Pixel per tic: 1 " så fick jag bättre upplösning men inte så lång graf.
jag ändrade även "Unit:" till "Bytes/Tick" och fick då denna graf:
Observera att det går att göra olika grafer i samma bild här och att man kan lägga filter på graferna. Det går allså att ha olika servrar på olika färger om man vill. Jag lade med fyra av servarna. Röd och Grön är två MS SQL servrar. Blå och Rosa är två fil servrar. Efter att ha ändrat "Pixels per tick" till "5" så såg det ut så här:
Det är en ruskigt stor bild, men kontentan är att det är rätt lite SQL-trafik och rätt mycket fil-server trafik. Dessutom fil-server trafik till en maskin som jag inte hade förväntat mig...

Å här är lärdomen i detta.
Genom att analysera hur en applikation snackar med andra servrar så kan man få information om hur applikationen fungerar. I just detta fallet är det en applikation som har funnits i massor med år hos kunden. Det kommer nya versioner ett 10-tal gånger per år vilket gör att det är rätt hög förändringstakt. Det är också rätt många som jobbar med att se till att applikationen fungerar som den skall.
Detta gör att det kan ske förändringar i miljön som inte alla känner till, men som påverkar hur applikationen arbetar. Här har vi kommit en bit på vägen för att förstå applikationen bättre. Men vi har fler tracefiler att analysera... men det blir egenarbete och inget som jag kommer att skriva om här.. :)


Så vad har vi lärt oss?
Att ibland kan det vara bra att att ta reda på hur en server/applikation arbetar. Inte minst för att få en förståelse och insikt i applikationen. Det är även användbart i prestanda syfte....
Precis som Ander O påpekade så skulle vi ha kunnat installerat Wireshark direkt på maskinen och kört imspelningarna direkt där, men jag ville testa att använda en teknik som jag fick tips om för ett par veckor sedan och som går att använda oavsett vilken sorts virtuell maskin som skall analyseras (så länge den ligger i XenServer).



 

Inga kommentarer:

Skicka en kommentar

Related Posts Plugin for WordPress, Blogger...