VMware

Drugi deo: Napredna administracija zajedničke infrastrukture
Performanse – CPU, memorija, disk i mreža u virtuelnom okruženju
VII. Klasteri, dostupnost, performanse i bezbednosna osnova
34. Performanse – CPU, memorija, disk i mreža bez pogrešnog tumačenja metrika

Napredni tutorijal i praktikum

Performanse VMware okruženja nisu rezultat samo brzine procesora ili storage sistema. One predstavljaju zbir rada VMkernel planera, raspoloživih fizičkih resursa, pravilnog dizajna infrastrukture, raspoređivanja opterećenja pomoću DRS-a, karakteristika storage sistema, mrežne arhitekture i samog operativnog sistema koji radi unutar virtuelne mašine.

Jedna od najčešćih grešaka novih administratora jeste pretpostavka da će dodavanje više vCPU ili više memorije automatski ubrzati virtuelnu mašinu. U praksi je veoma često upravo suprotno — pogrešno dimenzionisana VM može stvarati dodatno opterećenje scheduleru, povećavati CPU Ready vreme, otežavati DRS balansiranje i usporavati ceo klaster. Zvanične smernice za performanse zato insistiraju na rightsizing-u: dodeli onoliko resursa koliko workload dokazano zahteva, uz rezervu koja odgovara njegovom SLA-u i obrascu rasta.

Ova lekcija se neposredno nadovezuje na DRS: DRS može da premesti VM kada proceni da bi drugo mesto poboljšalo ravnotežu klastera, ali ne može da popravi loš SQL plan, pogrešan VM limit, neusklađen MTU ili zasićen storage niz. U narednim lekcijama monitoring, alarmi i sistematičan troubleshooting biće obrađeni kao širi operativni proces; ovde je fokus na tačnom značenju performance metrika i dokazivanju sloja u kome nastaje čekanje.

Administrator zato mora razumeti kako VMkernel raspoređuje CPU vreme, upravlja memorijom, obrađuje disk I/O i mrežni saobraćaj pre nego što uopšte počne optimizaciju performansi.


Performanse kao lanac međusobno povezanih komponenti

Svaki zahtev aplikacije prolazi kroz više slojeva:

Problem može nastati u bilo kom od ovih slojeva. Na primer:

Zbog toga VMware troubleshooting gotovo nikada ne počinje pretpostavkom već merenjem.


CPU performanse

VMkernel koristi napredni CPU scheduler koji raspoređuje vCPU jezgra virtuelnih mašina na fizička jezgra hosta.

Scheduler mora obezbediti:

Za razliku od fizičkog servera, virtuelna mašina ne dobija trajno određeno jezgro.

Scheduler neprestano odlučuje:


Najvažnije CPU metrike

Metrika Značenje Na šta ukazuje
Usage stvarna iskorišćenost CPU koliko VM zaista koristi CPU
Demand koliko CPU VM želi potencijalna potreba
Ready čekanje na fizički CPU konkurencija za fizički CPU, limit ili nepovoljan raspored
Co-stop sinhronizacija više vCPU teškoće istovremenog napredovanja više vCPU; proveriti veličinu VM-a
Latency ukupno kašnjenje raspoređivanja scheduler ili resursni problem

Posebno treba pratiti CPU Ready vreme. Ono označava period kada je virtuelna mašina spremna za izvršavanje, ali VMkernel ne može odmah da joj dodeli fizičko jezgro zbog konkurencije za resurse. Dugotrajno povećanje CPU Ready vremena često ukazuje na prevelik broj vCPU ili preopterećen host.


CPU Ready nije isto što i visok CPU Usage

Ovo je jedna od najvažnijih administratorskih lekcija.

Moguće su sledeće situacije:

CPU Usage CPU Ready Tumačenje
visok nizak VM zaista radi intenzivno
nizak visok VM čeka CPU
visok visok VM ima koristan rad, ali istovremeno čeka; proveriti host, limit, vCPU veličinu i NUMA
nizak nizak nema dokaza o CPU contention-u u posmatranom intervalu; uzrok može biti u drugom sloju

NUMA i lokalnost memorije

Na serverima sa više CPU socket-a memorija nije jednako udaljena od svih procesora.

NUMA (Non-Uniform Memory Access) omogućava da VM koristi memoriju koja je fizički najbliža procesoru na kome se izvršava.

Ako velika VM prelazi NUMA granice:

Zbog toga nije preporučljivo dodeljivati veliki broj vCPU bez stvarne potrebe.


Virtualizacija memorije

ESXi koristi više tehnika upravljanja memorijom kako bi omogućio stabilan rad i kada fizička memorija postane ograničen resurs.

Najvažnije tehnike su:

VMkernel ove mehanizme koristi postepeno. Cilj je da swapping bude poslednja opcija, jer ima najveći negativan uticaj na performanse.


Balloon Driver

Balloon driver je deo VMware Tools paketa.

Kada host ostane bez slobodne memorije:

  1. VMkernel aktivira balloon driver.
  2. Driver "zauzima" memoriju unutar gosta.
  3. Gost sam odlučuje koje stranice može osloboditi.
  4. Host preuzima oslobođenu memoriju.

Ovaj postupak je znatno efikasniji od direktnog host swapping-a.

Ako VMware Tools nisu instalirani ili nisu funkcionalni, host nema mogućnost ballooning-a i ranije prelazi na swapping.


Memory Compression

Kada ballooning nije dovoljan, VMkernel pokušava da kompresuje stranice memorije.

Kompresovana memorija:


Host Swapping

Host swapping predstavlja poslednju zaštitu od potpunog nedostatka memorije.

VMkernel zapisuje stranice memorije na swap fajl.

Posledice:

Zbog toga trajni rast swap-in/swap-out aktivnosti nije normalan način rada, već dokaz koji zahteva istragu. Uzrok može biti globalni memory pressure, ali i limit konkretne VM; sama činjenica da je swap prostor nekada korišćen nije dovoljna bez stope promene, vremenskog intervala i korelacije sa odzivom.


Storage performanse

Kod storage sistema administrator prvenstveno prati latenciju, a ne samo propusni opseg.

Najvažnije komponente storage puta su:

Kašnjenje u bilo kom segmentu povećava ukupno vreme odgovora aplikacije. Broadcom preporučuje analizu latencije po slojevima korišćenjem Performance Charts i esxtop alata.


Storage latencije

U esxtop-u se često analiziraju:

GAVG/cmd ≈ DAVG/cmd + KAVG/cmd

Vrednosti su proseci za izabrani interval i sloj storage steka. Zato kratki pik, percentil latencije aplikacije i prosek u esxtop-u nisu ista stvar. Aktuelni Broadcom KB kao signal za istragu navodi održane vrednosti iznad približno 10 ms, ali to nije univerzalni SLA: prihvatljivost zavisi od medijuma, protokola, workload-a i zahteva aplikacije. Važniji su odstupanje od bazne linije, trajanje, redovi i greške nego jedan izolovan broj.

Ako je:


Thin i Thick diskovi sa aspekta performansi

Kod modernih storage sistema razlike su uglavnom manje nego ranije, ali administrator mora razumeti način rada.

Izbor tipa diska treba da bude rezultat zahteva aplikacije, a ne pretpostavke da je jedan format univerzalno najbrži.


Mrežne performanse

Virtuelni mrežni saobraćaj prolazi kroz:

Problemi mogu nastati zbog:


Praćenje performansi u vSphere Client-u

Administrator ne treba odmah da koristi esxtop.

Prvi korak je analiza Performance Charts.

Najčešće se proveravaju:

Napredni grafici i dostupne metrike mogu se razlikovati u zavisnosti od verzije vSphere-a, nivoa prikupljanja statistike i licence.


ESXCLI i komandna linija

ESXCLI nije primarni alat za analizu performansi, ali je važan za proveru konfiguracije.

esxcli hardware cpu list

Izvršava se na ESXi hostu.

Prikazuje:

Komanda je potpuno bezbedna i ne menja stanje sistema.

esxcli network nic list

Prikazuje:

Koristi se pri dijagnostici mrežnih performansi i potvrdi da fizički adapter radi očekivanom brzinom.

esxcli storage core device list

Prikazuje detaljne informacije o storage uređajima, uključujući tip uređaja, putanje i karakteristike. Ne menja konfiguraciju i bezbedna je za izvršavanje u produkciji.


esxtop – osnovni alat za performanse

Za ozbiljnu dijagnostiku Broadcom i dalje preporučuje esxtop, odnosno resxtop za udaljeno prikupljanje podataka.

esxtop

Pokreće se direktno na ESXi Shell-u ili preko SSH sesije.

Najvažnije prečice:

Sam alat ne menja resursnu konfiguraciju već prikazuje statistiku u realnom vremenu. Administrator po potrebi uključuje ili isključuje kolone pomoću tastera f, a za vremenski ograničenu analizu može prikupljati podatke u batch režimu radi kasnijeg pregleda. Ipak, prikupljanje ima CPU i diskovni trošak, pa interval i broj uzoraka moraju biti ograničeni.

Drugi deo – Praktikum, prvi deo

Operativni cilj praktikuma

U ovom delu praktikuma administrator uspostavlja ponovljivu metodologiju za merenje performansi, zatim dijagnostikuje CPU i memorijska uska grla bez oslanjanja na jednu metriku ili unapred formiranu pretpostavku. Vežbe su usmerene na razlikovanje stvarnog nedostatka fizičkih resursa od problema koje izazivaju pogrešno dimenzionisana virtuelna mašina, neodgovarajući resursni limit, NUMA raspored, aplikaciono ponašanje ili kratkotrajni skok opterećenja.

Broadcom preporučuje da se problem performansi posmatra kroz CPU, memoriju, storage i mrežu, jer slab odziv virtuelne mašine može nastati u bilo kom od tih slojeva. Zbog toga je cilj prve vežbe prikupljanje baznog stanja, a ne trenutno menjanje konfiguracije.

Laboratorijska topologija

Komponenta Predložena konfiguracija Namena
vCenter Server vCenter Server 8.x ili odgovarajuće podržano izdanje Centralno upravljanje, istorijske metrike, događaji i alarmi
ESXi hostovi Najmanje dva hosta u klasteru; vežbe su moguće i na jednom laboratorijskom hostu Poređenje opterećenja i bezbedno premeštanje VM-a kada postoji klaster
Klaster DRS u Manual ili Partially Automated režimu, ako je dostupan Kontrolisano posmatranje preporuka bez nekontrolisanog menjanja smeštaja VM-a
TEST-PERF-01 Linux VM, 2 vCPU, 4 GB RAM, VMware Tools ili open-vm-tools Kontrolisano CPU i memorijsko opterećenje
TEST-PERF-02 Linux ili Windows VM, 4 vCPU, 8 GB RAM Poređenje i simulacija pogrešnog dimenzionisanja
Administratorska stanica PowerShell 7 i aktuelni VCF PowerCLI moduli Prikupljanje i poređenje istorijskih statistika
Monitoring interval Najmanje 15–30 minuta za laboratoriju; u produkciji reprezentativan poslovni period Razlikovanje kratkog skoka od trajnog problema

Komande u praktikumu koriste generičke nazive objekata. Pre izvršavanja zameniti nazive kao što su vcsa.lab.local, esxi01.lab.local, CLUSTER-PROD i TEST-PERF-01 stvarnim laboratorijskim vrednostima.

Verzijske i licencne napomene


Laboratorijska vežba 1 – Uspostavljanje baznog stanja performansi

Cilj vežbe

Cilj je da administrator napravi dokumentovano početno stanje hosta i virtuelnih mašina pre bilo kakve izmene. Bazno stanje služi za poređenje tokom incidenta, nakon nadogradnje, promene resursa, migracije, izmene storage politike ili promene aplikacionog opterećenja.

Bez baznog stanja izraz „sistem je sporiji nego ranije” nije tehnički dokaz. Administrator mora moći da odgovori:

Preduslovi

Početno stanje

Virtuelne mašine rade bez namerno izazvanog opterećenja. Resursne rezervacije, limiti i shares nisu menjani radi vežbe. DRS, ako postoji, ne sme automatski premeštati testnu VM tokom kratkog mernog intervala bez dokumentovanja migracije, jer bi promena hosta prekinula poređenje host-level brojača.

Upozorenje o riziku

Ova vežba je nedestruktivna. Ipak, uključivanje SSH servisa povećava administrativnu napadnu površinu. U produkciji ga omogućiti samo privremeno, ograničiti pristup upravljačkoj mreži i isključiti nakon prikupljanja podataka. Samo posmatranje statistike ne zahteva restart hosta, VM-a ili servisa.

Korak 1 – Zabeležiti administrativni kontekst

Pre otvaranja grafikona zabeležiti:

Ovaj korak sprečava čestu grešku u kojoj administrator odmah traži visoku metriku, a ne zna kada se problem dogodio niti da li posmatra odgovarajući objekat.

Korak 2 – Proveriti opšte stanje VM-a kroz vSphere Client

GUI putanja:

Menu
→ VMs and Templates
→ TEST-PERF-01
→ Summary

Proveriti:

Početni Summary ekran nije dovoljan za zaključak o performansama. On služi da se brzo prepoznaju očigledni problemi: isključeni VMware Tools, aktivan alarm, neočekivani host, neplanirana promena resursa ili dug lanac snapshot-a.

Korak 3 – Pregledati događaje i nedavne promene

GUI putanja:

TEST-PERF-01
→ Monitor
→ Tasks and Events
→ Events

Filtrirati period koji obuhvata pojavu problema. Tražiti:

U praksi je promena neposredno pre pojave problema često vredniji trag od jedne visoke metrike.

Korak 4 – Otvoriti Performance Charts za VM

GUI putanja:

TEST-PERF-01
→ Monitor
→ Performance
→ Advanced

Izabrati odgovarajući vremenski opseg, a zatim pregledati najmanje sledeće grupe:

Grupa Brojači koje treba pregledati Administratorsko pitanje
CPU Usage, Usage in MHz, Ready, Demand, Co-stop Da li VM koristi CPU ili čeka da ga dobije?
Memory Consumed, Active, Granted, Balloon, Compressed, Swapped Da li je memorija samo dodeljena ili je aktivno potrebna, i postoji li reclamation?
Virtual disk Read/Write latency, Read/Write rate, Commands Da li gost čeka I/O i da li se to poklapa sa simptomom?
Network Usage, packets transmitted/received, dropped packets gde su dostupni Da li je zastoj povezan sa mrežnim opterećenjem ili gubicima?

Raspoloživost brojača zavisi od objekta, statističkog nivoa i izabranog perioda. Real-time prikaz daje detaljnije kratkoročne podatke, dok se istorijski podaci agregiraju. Zbog toga se mali kratkotrajni skok može izgubiti u dnevnom ili nedeljnom proseku. Broadcom dokumentacija za vSphere Monitoring and Performance razlikuje prikaze i alate za praćenje CPU, memorijskih, storage i drugih resursa.

Korak 5 – Pregledati host i klaster, a ne samo VM

GUI putanje:

Hosts and Clusters
→ esxi01.lab.local
→ Monitor
→ Performance
→ Advanced
Hosts and Clusters
→ CLUSTER-PROD
→ Monitor
→ Performance

Na hostu proveriti:

Na klasteru proveriti:

Visok Ready na jednoj VM može biti posledica host-level konkurencije, čak i kada klaster kao celina raspolaže slobodnim kapacitetom. U tom slučaju problem može biti neravnomeran raspored, host affinity pravilo, lokalna zavisnost ili DRS režim, a ne nedostatak ukupnog klasterskog CPU kapaciteta.

Korak 6 – Napraviti PowerCLI inventar početnog stanja

Komande se izvršavaju na administratorskoj stanici sa instaliranim PowerCLI modulima.

Connect-VIServer -Server vcsa.lab.local

$vmName = "TEST-PERF-01"
$vm = Get-VM -Name $vmName

$vm | Select-Object `
    Name,
    PowerState,
    NumCpu,
    MemoryGB,
    VMHost,
    @{N="GuestOS";E={$_.Guest.OSFullName}},
    @{N="ToolsStatus";E={$_.ExtensionData.Guest.ToolsStatus}},
    @{N="ToolsRunning";E={$_.ExtensionData.Guest.ToolsRunningStatus}}

Connect-VIServer uspostavlja sesiju sa vCenter Serverom. Get-VM samo čita objekat, a Select-Object formira pregled ključnih vrednosti. Komande ne menjaju VM. Očekivani rezultat je jedan red sa ispravnim nazivom, hostom, brojem vCPU, memorijom i statusom VMware Tools-a.

Za pregled resursnih postavki:

$vm | Get-VMResourceConfiguration |
    Select-Object VM,
                  CpuReservationMhz,
                  CpuLimitMhz,
                  CpuSharesLevel,
                  MemReservationGB,
                  MemLimitGB,
                  MemSharesLevel

Ova komanda je posebno važna jer VM može imati slab odziv zbog limita iako host nije opterećen. Broadcom dokumentuje slučajeve u kojima CPU ili memorijski limit izazivaju loše performanse, ballooning ili VMkernel swapping i pored slobodnih host resursa.

Očekivani rezultat treba uporediti sa organizacionim standardom. Vrednost limita koja odgovara „Unlimited” može se u PowerCLI prikazu razlikovati u zavisnosti od objekta i verzije. Administrator ne treba da zaključuje samo na osnovu teksta u jednoj koloni, već da rezultat potvrdi u vSphere Client-u.

Korak 7 – Izlistati dostupne statističke brojače

Get-StatType -Entity $vm | Sort-Object

Komanda se izvršava u PowerCLI sesiji i ne menja stanje. Ona prikazuje koje metrike vCenter trenutno može da vrati za izabrani VM. Ovo je bezbedniji pristup od pretpostavke da je naziv brojača isti u svakoj verziji i na svakom objektu.

Filtriranje po resursu:

Get-StatType -Entity $vm |
    Where-Object {
        $_ -match "^cpu\." -or
        $_ -match "^mem\." -or
        $_ -match "^disk\." -or
        $_ -match "^net\."
    } |
    Sort-Object

Korak 8 – Prikupiti kratkoročni PowerCLI uzorak

$start = (Get-Date).AddMinutes(-30)
$finish = Get-Date

$metrics = @(
    "cpu.usage.average",
    "cpu.ready.summation",
    "mem.usage.average",
    "mem.active.average",
    "mem.vmmemctl.average",
    "mem.swapped.average"
)

Get-Stat -Entity $vm `
         -Stat $metrics `
         -Start $start `
         -Finish $finish |
    Select-Object Entity,
                  MetricId,
                  Instance,
                  Timestamp,
                  Value,
                  Unit |
    Sort-Object Timestamp, MetricId

Get-Stat čita statistiku koju je prikupio vCenter Server. Komanda ne generiše opterećenje unutar VM-a i ne menja konfiguraciju. Ipak, veoma široki upiti nad velikim brojem objekata i dugim periodom mogu nepotrebno opteretiti vCenter bazu i PowerCLI sesiju. U produkciji ograničiti broj objekata, metrika i vremenski opseg.

Ako se dobije greška da metrika nije dostupna:

  1. pokrenuti Get-StatType -Entity $vm;
  2. proveriti tačan naziv brojača;
  3. proveriti da li izabrani period sadrži podatke;
  4. proveriti nivo statističkog prikupljanja;
  5. ponoviti upit sa jednom metrikom.

Važna napomena o CPU Ready podacima

U vCenter statistici brojač cpu.ready.summation tipično predstavlja zbir vremena čekanja u milisekundama tokom statističkog intervala. To nije isto što i %RDY prikazan u esxtop-u. Za pravilno poređenje potrebno je znati trajanje intervala i broj vCPU instanci. Ne treba porediti sirovu summation vrednost dve VM različite veličine niti iz različitih intervala bez normalizacije.

Za pojedinačnu instancu vCPU, približna konverzija je:

Ready % = Ready vreme u ms / (interval u sekundama × 1000) × 100

Ako je vCenter uzorak 20 sekundi, a Ready summation za jednu vCPU instancu 1.000 ms:

Ready % = 1000 / 20000 × 100 = 5%

Pre računanja proveriti kolonu Instance. Agregirana instanca i pojedinačne vCPU instance ne smeju se nekritički sabirati, jer bi se isti podaci mogli dvostruko obračunati.

Korak 9 – Proveriti hardverski kontekst hosta

$hostObj = Get-VMHost -Name "esxi01.lab.local"

$hostObj | Get-VMHostHardware |
    Select-Object VMHost,
                  Manufacturer,
                  Model,
                  CpuModel,
                  CpuCount,
                  CpuCoreCountTotal,
                  MhzPerCpu,
                  MemorySizeGB

Get-VMHostHardware vraća hardverske i određene firmware podatke hosta i ne menja sistem. Broadcom PowerCLI referenca ga navodi kao cmdlet za čitanje hardverskih i firmware informacija.

Očekivani rezultat treba da odgovara dokumentovanoj konfiguraciji servera. Neočekivano manji broj jezgara, promenjen CPU model nakon zamene hosta ili smanjena raspoloživa memorija mogu promeniti kapacitet i ponašanje VM-ova.

Korak 10 – Pokrenuti esxtop i snimiti real-time stanje

Na ESXi host se povezati kroz SSH ili otvoriti lokalni ESXi Shell, zatim pokrenuti:

esxtop

Komanda samo prikazuje podatke. Ne menja konfiguraciju, ali česta osvežavanja i veoma dugo interaktivno posmatranje nisu zamena za kontrolisano prikupljanje podataka.

U interaktivnom esxtop-u koristiti:

Broadcom esxtop dokumentacija i KB materijali opisuju esxtop kao centralni alat za CPU, memorijsku, mrežnu i storage dijagnostiku.

Korak 11 – Prikupiti batch zapis

esxtop -b -d 5 -n 120 > /tmp/esxtop-baseline.csv

Parametri imaju sledeće značenje:

Komanda ne menja resursne postavke, ali fajl zauzima prostor na ESXi sistemskoj particiji. Ne koristiti neograničeno prikupljanje niti veoma kratak interval tokom dugog perioda. Broadcom u svom primeru za analizu CPU opterećenja koristi batch prikupljanje sa definisanim intervalom i brojem uzoraka, upravo da bi snimanje bilo vremenski ograničeno.

Proveriti da li je fajl nastao:

ls -lh /tmp/esxtop-baseline.csv
head -n 2 /tmp/esxtop-baseline.csv

Nakon bezbednog preuzimanja na administratorsku stanicu ukloniti laboratorijski fajl:

rm -f /tmp/esxtop-baseline.csv

rm je destruktivna komanda. Pre izvršavanja proveriti punu putanju i naziv fajla. Nikada ne koristiti wildcard obrasce u sistemskim direktorijumima bez prethodnog ls pregleda.

Očekivani rezultat

Provera uspeha

Vežba je uspešna ako administrator može da odgovori na sledeća pitanja bez ponovnog traženja osnovnih podataka:

Moguće greške i troubleshooting grane

Simptom Verovatan uzrok Bezbedna provera
Nema istorijskih podataka Pogrešan vremenski opseg, nedostupan brojač ili statistički nivo Prebaciti se na real-time prikaz i proveriti Get-StatType
PowerCLI vraća više VM-ova Naziv nije jedinstven Filtrirati po folderu, datacentru ili koristiti tačan VM objekat
SSH pristup ne radi Servis je isključen, firewall ili mrežna putanja blokira pristup Proveriti Services i host firewall; ne menjati firewall naslepo
esxtop ne prikazuje očekivani VM VM je migrirana ili ugašena Proveriti trenutni host i Tasks and Events
VMware Tools status nije dobar Tools servis ne radi ili paket nije instaliran Proveriti servis u gostu pre zaključka o guest-level podacima
CSV fajl je veoma veliki Previše uzoraka ili prekratak interval Prekinuti prikupljanje, proveriti veličinu i ponoviti ograničenim parametrima

Vraćanje laboratorije u početno stanje

  1. Završiti esxtop tasterom q.
  2. Preuzeti potrebni CSV fajl.
  3. Ukloniti privremeni fajl iz /tmp.
  4. Isključiti SSH servis ako je uključen samo za vežbu.
  5. Odjaviti PowerCLI sesiju:
Disconnect-VIServer -Server vcsa.lab.local -Confirm:$false

Laboratorijska vežba 2 – CPU contention, CPU Ready i pogrešno dimenzionisana VM

Cilj vežbe

Cilj je da administrator razlikuje:

Vežba ne pokušava da uspostavi jednu univerzalnu Ready graničnu vrednost. Prihvatljiv nivo zavisi od aplikacije, veličine VM-a, trajanja, SLA zahteva i ponašanja tokom vršnog opterećenja. Broadcom smernice za rightsizing naglašavaju analizu vCPU broja, memorije, NUMA rasporeda i virtuelne CPU topologije, a ne automatsko dodavanje procesora.

Preduslovi

Upozorenje o riziku

Generisanje CPU opterećenja izvodi se isključivo u laboratoriji. Ne pokretati nekontrolisan broj worker procesa na produkcionom hostu. Ne simulirati contention na hostu koji nosi vCenter Server, kritične DNS, Active Directory, storage kontrolere, mrežne servise ili druge infrastrukturne VM-ove.

Početno stanje

Korak 1 – Potvrditi početnu resursnu konfiguraciju

GUI putanja:

TEST-PERF-01
→ Actions
→ Edit Settings
→ Virtual Hardware
→ CPU

Proveriti:

Ne menjati ništa u ovom koraku.

PowerCLI provera:

Connect-VIServer vcsa.lab.local

$vm = Get-VM -Name "TEST-PERF-01"

$vm | Select-Object Name, NumCpu, MemoryGB, VMHost

$vm | Get-VMResourceConfiguration |
    Select-Object VM,
                  CpuReservationMhz,
                  CpuLimitMhz,
                  CpuSharesLevel

Korak 2 – Generisati kontrolisano CPU opterećenje

Na Ubuntu ili drugom Debian-baziranom laboratorijskom gostu, ako stress-ng nije instaliran:

sudo apt update
sudo apt install stress-ng

Instalacija menja gostujući sistem, ali ne menja ESXi konfiguraciju. U izolovanoj laboratoriji bez pristupa repozitorijumu koristiti unapred odobren paket ili postojeći alat. Ne preuzimati neproverene binarne fajlove.

Pokrenuti opterećenje sa dva CPU worker procesa i automatskim prekidom nakon pet minuta:

stress-ng --cpu 2 --timeout 300s --metrics-brief

Važni parametri:

Očekuje se visok CPU Usage unutar gosta i na nivou VM-a. Ako host ima slobodan CPU kapacitet, CPU Ready može ostati nizak. To je primer legitimnog intenzivnog rada, a ne nužno problem virtualizacije.

Korak 3 – Pratiti CPU podatke u vSphere Client-u

GUI putanja:

TEST-PERF-01
→ Monitor
→ Performance
→ Advanced
→ CPU

Prikazati:

Istovremeno otvoriti host CPU grafikon:

esxi01.lab.local
→ Monitor
→ Performance
→ Advanced
→ CPU

Tumačenje:

Korak 4 – Pratiti VM kroz esxtop

Na ESXi hostu pokrenuti:

esxtop

Pritisnuti c, zatim po potrebi f i uključiti polja:

Važno tumačenje:

Broadcom posebno upozorava da %WAIT obuhvata više stanja, uključujući idle i određena I/O čekanja, dok %SWPWT predstavlja čekanje povezano sa VMkernel swapping-om.

Korak 5 – Napraviti kontrolisani contention samo u izolovanoj laboratoriji

Ovaj korak se preskače ako laboratorijski host nosi bilo koji kritičan servis.

Na nekoliko namenski kreiranih testnih VM-ova pokrenuti vremenski ograničeno opterećenje. Na svakoj VM broj worker procesa ne treba da prelazi broj njenih vCPU:

stress-ng --cpu 2 --timeout 180s --metrics-brief

Posmatrati:

Bezbednija alternativa veštačkom contention-u jeste analiza postojećeg perioda vršnog laboratorijskog opterećenja ili prethodno snimljenog esxtop zapisa. U produkciji se contention ne izaziva radi testiranja.

Korak 6 – Proveriti da li je uzrok prevelika VM

TEST-PERF-02 sa 4 vCPU koristi se za poređenje. Pokrenuti workload koji koristi samo jednu ili dve niti, a zatim posmatrati:

Broj vCPU ne smanjuje se samo zato što je prosečna potrošnja niska. Pre rightsizing odluke proveriti:

  1. vršne periode;
  2. broj aplikacionih niti;
  3. SLA i maksimalno dozvoljeno trajanje posla;
  4. ponašanje tokom backup-a, batch obrade i održavanja;
  5. NUMA veličinu hosta;
  6. zahteve i podršku proizvođača aplikacije;
  7. licenciranje po socket-u, core-u ili vCPU-u.

Korak 7 – Planirano smanjenje broja vCPU

Ovaj korak se izvodi samo na TEST-PERF-02 i tek nakon dokumentovanog početnog stanja.

Za pouzdano smanjenje vCPU planirati gašenje VM-a. CPU Hot Add uglavnom omogućava dodavanje, ali ne treba pretpostaviti da podržava uklanjanje vCPU tokom rada. Podrška zavisi od gosta, virtuelnog hardvera i konkretne konfiguracije.

GUI postupak:

  1. Zaustaviti testni workload.
  2. U gostu izvršiti uredno gašenje operativnog sistema.
  3. Potvrditi da je VM u stanju Powered Off.
  4. Otvoriti Actions → Edit Settings → Virtual Hardware → CPU.
  5. Smanjiti broj sa 4 vCPU na 2 vCPU.
  6. Ne menjati istovremeno CPU limit, shares ili reservation.
  7. Sačuvati konfiguraciju.
  8. Pokrenuti VM.
  9. Potvrditi da gost vidi očekivani broj procesora.
  10. Ponoviti isti workload i isti period merenja.

PowerCLI alternativa nakon urednog gašenja:

$vm = Get-VM -Name "TEST-PERF-02"

if ($vm.PowerState -ne "PoweredOff") {
    throw "VM mora biti uredno ugašena pre smanjenja broja vCPU."
}

Set-VM -VM $vm -NumCpu 2 -Confirm:$false

Set-VM menja konfiguraciju VM-a. Ovo je state-changing komanda i zahteva change zapis, proveru kompatibilnosti i plan vraćanja. U produkciji ne koristiti -Confirm:$false dok procedura nije testirana i dok objekat nije jednoznačno identifikovan.

Očekivani rezultat nije nužno manji CPU Usage procenat. Sa manjim brojem vCPU, procenat potrošnje može porasti jer isti workload koristi veći deo manjeg dodeljenog kapaciteta. Važniji pokazatelji su:

Korak 8 – Simulirati pogrešan CPU limit

Ovaj korak je namenjen isključivo laboratoriji. CPU limit može usporiti VM čak i kada host ima mnogo slobodnog kapaciteta.

Pre izmene zabeležiti početnu konfiguraciju:

$vm = Get-VM -Name "TEST-PERF-01"
$before = $vm | Get-VMResourceConfiguration
$before | Format-List *

GUI putanja:

TEST-PERF-01
→ Actions
→ Edit Settings
→ Virtual Hardware
→ CPU
→ Limit

Postaviti laboratorijski limit koji je dovoljno nizak da se efekat primeti, ali ne toliko nizak da gost izgubi administrativni odziv. Vrednost mora biti prilagođena brzini host procesora i veličini VM-a. Ne postoji jedna univerzalna MHz vrednost za svaki host.

Pokrenuti isti workload:

stress-ng --cpu 2 --timeout 180s --metrics-brief

Posmatrati:

Ovo je ključni dijagnostički obrazac: VM može biti usporena sopstvenim limitom bez opšteg host contention-a. Broadcom dokumentuje negativan uticaj CPU i memorijskih limita upravo u takvim situacijama.

Korak 9 – Bezbedno ukloniti testni limit

U GUI vratiti CPU Limit na Unlimited.

PowerCLI sintaksa za promenu resursne konfiguracije mora se proveriti prema verziji modula i tačnom tipu objekta pre izvršavanja. U ovoj laboratoriji je preporučeno vraćanje kroz GUI, jer jasno prikazuje vrednost Unlimited i smanjuje rizik pogrešnog tumačenja jedinice.

Nakon vraćanja:

  1. ponoviti workload;
  2. proveriti da %MLMTD više ne raste zbog limita;
  3. uporediti vreme završetka testa;
  4. potvrditi da nema nove greške ili alarma;
  5. dokumentovati pre i posle rezultate.

Logovi i događaji za CPU incident

CPU contention se prvenstveno potvrđuje metrikama, a ne očekivanjem jasne greške u logu. Ipak, logovi pomažu da se pronađu promene, migracije, restarti i infrastrukturni događaji.

Lokacija Komponenta Šta se traži Primer pregleda
/var/log/hostd.log ESXi host management agent Promene VM konfiguracije, power operacije, zadaci i greške upravljanja grep -iE "TEST-PERF-01|reconfig|power" /var/log/hostd.log | tail -n 100
/var/log/vpxa.log vCenter agent na ESXi hostu Komunikacija sa vCenterom, zadaci i upravljački događaji grep -iE "error|warning|TEST-PERF" /var/log/vpxa.log | tail -n 100
/var/log/vmkernel.log VMkernel Hardverski, NUMA, scheduling i drugi kernel-level događaji; ne očekuje se zapis za svaki Ready skok grep -iE "cpu|numa|warning|error" /var/log/vmkernel.log | tail -n 100
VM folder: vmware.log VMX proces konkretne VM Virtuelni hardver, power ciklus, promene konfiguracije i VMX upozorenja grep -iE "vcpu|numa|warning|error" /vmfs/volumes/DATASTORE/VM/vmware.log | tail -n 100

Prilikom filtriranja koristiti stvarnu putanju i naziv VM-a. Ne pretpostavljati da je direktorijum identičan display name-u VM-a. Putanju proveriti kroz VM Summary, datastore browser ili odgovarajući CLI prikaz.

Sistematična troubleshooting grana za CPU problem

  1. Potvrditi simptom: izmeriti aplikacioni odziv ili trajanje zadatka.
  2. Odrediti obim: jedna VM, više VM-ova na hostu ili ceo klaster.
  3. Proveriti promene: vCPU, limit, shares, reservation, migracija ili update.
  4. Proveriti gosta: procesi, broj niti, load average, Windows Processor Queue i aplikacioni logovi.
  5. Proveriti VM: Usage, Demand, Ready, Co-stop i limit.
  6. Proveriti host: ukupni Usage, Ready drugih VM-ova i raspoloživi kapacitet.
  7. Proveriti klaster: DRS preporuke, affinity pravila i neravnomeran raspored.
  8. Potvrditi uzrok: ponoviti isti test nakon samo jedne kontrolisane izmene.
  9. Validirati oporavak: uporediti iste metrike i aplikaciono vreme.
  10. Dokumentovati: uzrok, izmenu, rezultat i plan daljeg kapaciteta.

Očekivani rezultat

Administrator mora moći da demonstrira najmanje tri različita CPU obrasca:

Obrazac Tipični nalaz Zaključak
Legitimno CPU opterećenje Visok Usage, visok Demand, nizak ili prihvatljiv Ready VM dobija CPU i izvršava posao
Host contention Rast Ready na više VM-ova, visok host Usage VM-ovi čekaju fizički CPU
CPU limit Visok Demand, ograničen Usage, rast %MLMTD, host ima slobodan kapacitet VM je usporena sopstvenom politikom

Vraćanje laboratorije u početno stanje

  1. Zaustaviti sve stress-ng procese ili sačekati timeout.
  2. Vratiti CPU Limit na Unlimited.
  3. Vratiti TEST-PERF-02 na početni broj vCPU samo ako je to deo definisanog laboratorijskog rollback-a.
  4. Potvrditi da VM-ovi normalno odgovaraju.
  5. Proveriti da nema aktivnog CPU alarma.
  6. Sačuvati rezultate pre i posle izmene.
  7. Zatvoriti SSH ako više nije potreban.

Laboratorijska vežba 3 – Memory pressure, ballooning, compression, swapping i pogrešan memorijski limit

Cilj vežbe

Cilj je da administrator razlikuje:

ESXi koristi više mehanizama za upravljanje memorijom, uključujući ballooning, memory sharing, compression i swapping. Oni ne predstavljaju jednako ozbiljna stanja i moraju se tumačiti u kontekstu host pritiska i aplikacionog odziva.

Preduslovi

Upozorenje o riziku

Namerno stvaranje ozbiljnog host memory pressure-a može ugroziti sve VM-ove na hostu. U ovoj vežbi se prvenstveno koristi kontrolisana guest-level alokacija i privremeni limit na testnoj VM. Ne pokretati veliki broj memorijskih worker-a na više VM-ova, ne puniti host do stanja bez slobodne memorije i ne izazivati swapping na produkcionom sistemu.

Korak 1 – Proveriti početne memorijske postavke

GUI putanja:

TEST-PERF-01
→ Actions
→ Edit Settings
→ Virtual Hardware
→ Memory

Proveriti:

PowerCLI:

Connect-VIServer vcsa.lab.local

$vm = Get-VM -Name "TEST-PERF-01"

$vm | Select-Object Name, MemoryGB, VMHost

$vm | Get-VMResourceConfiguration |
    Select-Object VM,
                  MemReservationGB,
                  MemLimitGB,
                  MemSharesLevel

Komande samo čitaju konfiguraciju.

Korak 2 – Zabeležiti ključne memorijske metrike

GUI putanja:

TEST-PERF-01
→ Monitor
→ Performance
→ Advanced
→ Memory

Prikazati, gde su dostupni:

Tumačenje:

Veliki Consumed uz mali Active nije automatski dokaz da VM treba odmah smanjiti. Active je procena i može potceniti povremeno korišćene radne skupove, cache i vršno opterećenje. Rightsizing odluka zahteva istoriju i poznavanje aplikacije.

Korak 3 – Proveriti VMware Tools i balloon driver

Na Linux gostu:

systemctl status open-vm-tools --no-pager
lsmod | grep -i balloon
vmware-toolbox-cmd -v

U zavisnosti od distribucije, moduli i način prikaza mogu se razlikovati. Odsustvo očekivanog reda u lsmod izlazu nije samo po sebi dovoljan dokaz da integracija ne radi; proveriti podržanu implementaciju za konkretni kernel, open-vm-tools paket i verziju gosta.

Na Windows gostu proveriti:

Ako VMware Tools nisu funkcionalni, ESXi može izgubiti preferirani ballooning mehanizam i ranije koristiti druge metode reclamation-a. To ne znači da administrator treba da restartuje Tools servis bez provere aplikacionog uticaja i change procedure.

Korak 4 – Generisati bezbedno ograničeno memorijsko opterećenje unutar gosta

Na testnom Linux gostu sa 4 GB RAM pokrenuti kontrolisanu alokaciju, na primer 1 GB, uz timeout:

stress-ng --vm 1 --vm-bytes 1G --vm-keep --timeout 180s --metrics-brief

Parametri:

Vrednost 1G je samo laboratorijski primer. Mora se prilagoditi raspoloživoj memoriji gosta. Ne alocirati gotovo svu memoriju jer gost može aktivirati OOM killer, izgubiti SSH odziv ili prekinuti važne procese.

U gostu paralelno pratiti:

free -m
vmstat 1
top

Očekuje se rast guest-level potrošnje. Na hostu ne mora doći do ballooning-a ili swapping-a ako postoji dovoljno fizičke memorije. To je važna pouka: visoka memorijska potrošnja unutar gosta nije isto što i ESXi memory contention.

Korak 5 – Pratiti memoriju kroz esxtop

Na hostu:

esxtop

Pritisnuti m, zatim proveriti relevantna polja:

Administratorsko tumačenje:

Korak 6 – Simulirati pogrešan memorijski limit

Ovaj korak se izvodi isključivo na testnoj VM. Pre izmene sačuvati konfiguraciju:

$vm = Get-VM -Name "TEST-PERF-01"
$beforeMemory = $vm | Get-VMResourceConfiguration
$beforeMemory | Format-List *

GUI putanja:

TEST-PERF-01
→ Actions
→ Edit Settings
→ Virtual Hardware
→ Memory
→ Limit

Postaviti privremeni limit niži od konfigurisane memorije, ali dovoljno visok da gost ostane administrativno dostupan. Na primer, kod laboratorijske VM sa 4 GB RAM može se koristiti kontrolisana vrednost u skladu sa minimalnim zahtevima operativnog sistema. Ne koristiti nasumičnu vrednost i ne spuštati limit ispod minimuma potrebnog za stabilan rad gosta.

Nakon primene:

  1. ponoviti isti memorijski workload;
  2. posmatrati Balloon, Compressed i Swapped;
  3. proveriti da li host ima slobodnu memoriju;
  4. proveriti guest-level swap ili paging;
  5. izmeriti odziv aplikacije ili trajanje kontrolnog zadatka.

Važan dijagnostički obrazac jeste pojava reclamation-a na konkretnoj VM zbog njenog limita čak i kada host nije globalno pod pritiskom. Broadcom navodi da memorijski limit može dovesti do ballooning-a i VMkernel swapping-a uprkos raspoloživim host resursima.

Korak 7 – Razlikovati guest swapping od VMkernel swapping-a

Vrsta Gde nastaje Kako se proverava Šta znači
Guest OS swap ili paging Unutar operativnog sistema gosta vmstat, free, Windows Performance Monitor Gost sam upravlja svojim radnim skupom i page fajlom
Ballooning Koordinacija ESXi i balloon driver-a u gostu vCenter Balloon metrika, esxtop MCTLSZ ESXi traži od gosta da oslobodi memoriju na informisaniji način
VMkernel swapping Na ESXi hostu vCenter Swapped, esxtop SWCUR, swap read/write rate ESXi prebacuje VM memorijske stranice na disk; veći rizik od latencije
Memory compression Na ESXi hostu Compression metrike u vCenteru i esxtop-u Pokušaj da se izbegne skuplji disk swap zadržavanjem kompresovanih stranica u RAM-u

Guest swap i host swap mogu postojati istovremeno. Administrator zato mora prikupiti podatke i iz gosta i sa ESXi hosta. Sam pogled na free ili Windows Task Manager nije dovoljan za zaključak o host memory pressure-u.

Korak 8 – Ukloniti limit i validirati oporavak

U vSphere Client-u vratiti Memory Limit na Unlimited.

Zatim:

  1. zaustaviti workload;
  2. sačekati da se sistem stabilizuje;
  3. ponoviti isti test bez limita;
  4. uporediti Balloon, Compression, Swap i aplikacioni odziv;
  5. proveriti da li su host i VM alarmi očišćeni;
  6. ne očekivati da sve kumulativne vrednosti odmah postanu nula;
  7. fokusirati se na prestanak aktivnog swap I/O i oporavak performansi.

Relevantni logovi za memorijski incident

Lokacija Komponenta Šta tražimo Primer komande
/var/log/vmkernel.log VMkernel Memorijska upozorenja, sistemski pritisak i povezani kernel događaji grep -iE "memory|swap|balloon|compression|warning" /var/log/vmkernel.log | tail -n 150
/var/log/hostd.log Host management agent Promena memorijske konfiguracije, limit, reconfigure zadatak grep -iE "TEST-PERF-01|memory|reconfig" /var/log/hostd.log | tail -n 150
vmware.log u direktorijumu VM-a VMX proces Promene virtuelnog hardvera, rezervacije, power ciklus i VMX upozorenja grep -iE "memory|memsize|numa|warning|error" vmware.log | tail -n 150
Linux journal Gostujući operativni sistem OOM killer, prekid procesa, swap i servisne greške journalctl -k --since "-30 min" | grep -iE "oom|out of memory|killed process|swap"
Windows System/Application log Gostujući Windows Resource exhaustion, page file i aplikacioni događaji Event Viewer ili odobren PowerShell upit

Nenalaženje poruke u logu ne dokazuje da memory pressure nije postojao. Performance problem može biti vidljiv prvenstveno kroz metrike, dok logovi služe za potvrdu promene, greške ili posledice kao što je OOM događaj.

Sistematična troubleshooting grana za memorijski problem

  1. Potvrditi simptom: aplikacioni odziv, timeout, guest paging ili prekid procesa.
  2. Odrediti obim: jedna VM, više VM-ova na hostu ili ceo klaster.
  3. Proveriti promene: RAM, limit, reservation, resource pool, migracija ili novi workload.
  4. Proveriti gosta: dostupna memorija, cache, swap, paging, OOM i najveći procesi.
  5. Proveriti VMware Tools: da li je balloon mehanizam funkcionalan.
  6. Proveriti VM metrike: Active, Consumed, Balloon, Compressed, Swapped i swap rate.
  7. Proveriti host: memorijsko stanje, reclamation na drugim VM-ovima i raspoloživi kapacitet.
  8. Proveriti politike: VM limit, reservation i parent resource pool ograničenja.
  9. Potvrditi uzrok: ukloniti jednu pogrešnu postavku i ponoviti isti test.
  10. Validirati oporavak: prestanak aktivnog swap I/O, stabilan odziv i odsustvo novih alarma.

Očekivani rezultat

Administrator treba da prepozna sledeće obrasce:

Obrazac Nalaz Zaključak
Normalna velika potrošnja gosta Rastu Active i Consumed, bez Balloon i aktivnog Swap I/O VM koristi memoriju, ali host nema reclamation problem
Kontrolisani ballooning Raste Balloon/MCTLSZ, Tools rade ESXi pokušava da povrati memoriju preko gosta
Ozbiljniji host pressure Compression i aktivan VMkernel swap I/O, degradiran odziv Kapacitet ili raspored zahtevaju korekciju
Pogrešan memorijski limit Reclamation na jednoj VM dok host ima slobodnu memoriju Politika ograničava VM, a ne fizički host
Guest-only problem Guest paging ili OOM bez host ballooning-a i swapping-a Problem je pre svega unutar operativnog sistema ili aplikacije

Vraćanje laboratorije u početno stanje

  1. Zaustaviti sve memorijske testove.
  2. Vratiti Memory Limit na Unlimited.
  3. Vratiti početnu rezervaciju i shares vrednosti ako su menjane.
  4. Proveriti da nema zaostalih stress-ng procesa:
pgrep -a stress-ng
  1. Proveriti guest swap i raspoloživu memoriju.
  2. Potvrditi da je VM administrativno dostupna.
  3. Pregledati vCenter alarme i događaje.
  4. Sačuvati pre i posle rezultate.
  5. Ukloniti alat za opterećenje ako organizaciona pravila ne dozvoljavaju da ostane instaliran.

Kontrolna tačka nakon prvog dela praktikuma

Administrator je uspešno završio prvi deo praktikuma ako može samostalno da:

Drugi deo praktikuma – storage i mrežne performanse, korelacija problema i bezbedan oporavak

Prvi deo praktikuma uspostavio je metodologiju za bazno merenje, CPU contention, pravilno dimenzionisanje vCPU resursa i memorijski pritisak. Drugi deo nastavlja istim principom: administrator prvo potvrđuje simptom i njegov obim, zatim razdvaja slojeve infrastrukture, prikuplja dokaze, menja samo jednu promenljivu i ponavlja potpuno isto merenje radi validacije.

Storage i mrežni problemi posebno su podložni pogrešnim zaključcima. Visoka storage latencija može nastati u gostujućem sistemu, virtuelnom SCSI kontroleru, VMkernel redu, HBA adapteru, SAN mreži ili samom storage sistemu. Mrežni gubitak može nastati u guest driver-u, VMXNET3 redovima, virtuelnom switch-u, fizičkom adapteru, switch portu ili udaljenoj strani. Zbog toga se ni storage ni mrežni incident ne rešavaju samo dodavanjem resursa ili promenom jedne napredne postavke.


Laboratorijska vežba 4 – Storage latencija, redovi i određivanje sloja uskog grla

Cilj vežbe

Cilj je da administrator utvrdi da li je usporenje virtuelne mašine povezano sa storage putem i da razlikuje:

U esxtop storage prikazu GAVG predstavlja ukupnu latenciju koju vidi gost, DAVG deo latencije vezan za uređaj i storage put, dok KAVG predstavlja vreme provedeno u VMkernel sloju. U uprošćenom modelu važi da je GAVG približno zbir DAVG i KAVG. Ovi brojači se moraju posmatrati zajedno sa IOPS, propusnim opsegom, queue vrednostima, tipom workload-a i karakteristikama storage sistema.

Laboratorijska topologija

Komponenta Predložena konfiguracija Namena
TEST-PERF-01 Linux VM sa zasebnim testnim VMDK diskom Generisanje kontrolisanog sekvencijalnog i nasumičnog I/O opterećenja
TEST-PERF-02 Druga VM na istom ili drugom datastore-u Određivanje obima problema
Datastore A VMFS, NFS, vSAN ili drugi podržani laboratorijski datastore Primarni predmet merenja
Datastore B Opcioni nezavisni datastore Poređenje i kontrolisana migracija testnog diska
Testni disk Najmanje 10 GB, bez produkcionih podataka Izolovanje laboratorijskog I/O od sistemskog diska gosta

Preduslovi

Početno stanje

Upozorenje o riziku

I/O generator može ozbiljno opteretiti datastore i uticati na sve VM-ove koje ga koriste. Test se izvodi isključivo u kontrolisanoj laboratoriji ili u unapred odobrenom maintenance prozoru. Nikada ne koristiti destruktivni test nad uređajem, particijom ili fajl sistemom koji sadrži podatke. Ne koristiti direktno pisanje na blok uređaj ako nije nedvosmisleno potvrđeno da je uređaj prazan i namenski kreiran za laboratoriju.

Korak 1 – Dokumentovati storage put VM-a

GUI putanja:

TEST-PERF-01
→ Summary
→ Related Objects
→ Datastores

Zatim otvoriti:

TEST-PERF-01
→ Actions
→ Edit Settings
→ Virtual Hardware
→ Hard disk

Zabeležiti:

Administrator mora znati koji se VMDK meri. VM može imati sistemski disk na jednom, bazu na drugom, a logove na trećem datastore-u. Visoka ukupna latencija VM-a bez identifikovanja konkretnog virtuelnog diska nije dovoljno precizan nalaz.

Korak 2 – Proveriti datastore kapacitet i osnovno stanje

GUI putanja:

Storage
→ Datastores
→ DATASTORE-A
→ Summary

Proveriti:

Skoro pun thin-provisioned datastore predstavlja i kapacitivni i operativni rizik. Ipak, nizak slobodan prostor ne objašnjava automatski svaku latenciju. Potrebno je proveriti storage sistem, datastore tip i konkretan workload.

Korak 3 – Prikupiti PowerCLI inventar datastore-a i VMDK diskova

Komande se izvršavaju na administratorskoj stanici:

Connect-VIServer -Server vcsa.lab.local

$vm = Get-VM -Name "TEST-PERF-01"

$vm | Get-HardDisk |
    Select-Object Parent,
                  Name,
                  CapacityGB,
                  StorageFormat,
                  Filename,
                  Persistence

Get-HardDisk čita konfiguraciju virtuelnih diskova i ne menja stanje. Očekivani rezultat je spisak svih VMDK diskova sa kapacitetom, formatom i putanjom.

Za datastore inventar:

Get-Datastore -Name "DATASTORE-A" |
    Select-Object Name,
                  Type,
                  CapacityGB,
                  FreeSpaceGB,
                  @{N="FreePercent";E={
                      if ($_.CapacityGB -gt 0) {
                          [math]::Round(($_.FreeSpaceGB / $_.CapacityGB) * 100, 2)
                      }
                  }}

Komanda ne menja datastore. Rezultat treba uporediti sa pragovima kapaciteta koje je definisala organizacija, a ne sa proizvoljnim univerzalnim procentom.

Korak 4 – Proveriti adaptere, uređaje i putanje na ESXi hostu

Na ESXi Shell-u ili kroz SSH sesiju:

esxcli storage core adapter list

Komanda prikazuje storage adaptere, drajvere, link state i identifikatore. Ne menja stanje sistema.

esxcli storage core device list

Prikazuje storage uređaje koje ESXi vidi, uključujući identifikatore, tip, veličinu i druge karakteristike. Izlaz može biti veoma dug, pa ga treba filtrirati prema poznatom NAA ili drugom identifikatoru uređaja:

esxcli storage core device list -d naa.6000xxxxxxxxxxxxxxxx

Za pregled putanja konkretnog uređaja:

esxcli storage core path list -d naa.6000xxxxxxxxxxxxxxxx

Očekuje se da su potrebne putanje aktivne ili u stanju koje odgovara korišćenoj multipathing politici. Jedna aktivna putanja nije automatski greška ako je dizajn takav, ali neočekivani gubitak redundanse predstavlja incident koji treba rešavati pre performance testiranja.

Za NMP uređaje:

esxcli storage nmp device list -d naa.6000xxxxxxxxxxxxxxxx

Komanda prikazuje Storage Array Type Plugin i Path Selection Policy. Ne menjati multipathing politiku samo zato što druga politika deluje „brže”. Promena mora biti podržana za konkretni storage sistem i potvrđena u dokumentaciji proizvođača.

Korak 5 – Otvoriti datastore i VM Performance Charts

GUI putanje:

DATASTORE-A
→ Monitor
→ Performance
→ Advanced
TEST-PERF-01
→ Monitor
→ Performance
→ Advanced
→ Virtual disk

Izabrati isti period i pregledati:

Overview i Advanced Performance Charts dostupni su za različite vSphere inventarske objekte, ali skup metrika zavisi od tipa objekta, izabranog perioda i nivoa statističkog prikupljanja.

Korak 6 – Napraviti nedestruktivni fio testni fajl

Na Linux testnoj VM instalirati fio iz odobrenog repozitorijuma:

sudo apt update
sudo apt install fio

Kreirati direktorijum na testnom fajl sistemu koji se nalazi na namenskom VMDK disku:

sudo mkdir -p /mnt/perf-test
sudo chown "$(id -u):$(id -g)" /mnt/perf-test

Pre testiranja potvrditi mount point:

findmnt /mnt/perf-test
df -hT /mnt/perf-test
lsblk -f

Ako findmnt pokaže da direktorijum pripada sistemskom disku ili pogrešnom fajl sistemu, test se ne pokreće.

Prvi test koristi vremenski ograničen sekvencijalni read/write workload nad testnim fajlom:

fio --name=seq-rw \
    --filename=/mnt/perf-test/fio-test.bin \
    --size=2G \
    --rw=rw \
    --bs=1M \
    --iodepth=4 \
    --direct=1 \
    --runtime=180 \
    --time_based \
    --group_reporting

Parametri:

Test menja sadržaj samo navedenog testnog fajla. Ipak, generiše stvarni storage I/O i zato može uticati na druge VM-ove na istom datastore-u.

Korak 7 – Posmatrati storage kroz esxtop

Na ESXi hostu pokrenuti:

esxtop

Pritisnuti d za storage device prikaz. Tasterom f uključiti relevantna polja:

Broadcom KB kao važan indikator navodi trajno povišene DAVG, KAVG i GAVG vrednosti, ali istovremeno naglašava da se storage sistemi razlikuju. Jedan kratkotrajan skok nije dovoljan za zaključak. Latenciju treba povezati sa trajanjem problema, workload-om i očekivanjima proizvođača storage sistema.

Za prikaz storage aktivnosti po VM-u pritisnuti u. U zavisnosti od verzije i izabranih polja, moguće je povezati VM, virtuelni disk i latenciju koju VM vidi.

Tumačenje osnovnih obrazaca

Nalaz Verovatni sloj Sledeća provera
Visok DAVG, nizak KAVG Uređaj, storage sistem, SAN/NAS put ili udaljeni target Storage kontroler, array portovi, putanje, fabric i workload drugih hostova
Nizak DAVG, visok KAVG VMkernel queue ili lokalni host storage sloj Queue depth, broj outstanding zahteva, driver, adapter i policy
Visok GAVG Ukupno kašnjenje koje VM oseća Razdvojiti DAVG i KAVG
Visok QUED i %USD Zasićenje reda ili uređaja Queue granice, broj workload-a i storage odgovor
Rastu RESETS/s ili ABRTS/s Ozbiljniji storage ili path problem Odmah pregledati vmkernel log, uređaj i putanje
Latencija samo na jednom VMDK-u VM, virtuelni kontroler ili konkretan workload Guest procesi, snapshot, disk raspored i kontroler
Latencija na svim VM-ovima datastore-a Datastore ili zajednička infrastruktura Hostovi, storage sistem, mreža i konkurentni workload

Korak 8 – Izvesti nasumični workload sa ograničenim intenzitetom

Nasumični I/O obično proizvodi drugačiji obrazac od sekvencijalnog. Koristiti ograničen test:

fio --name=rand-rw \
    --filename=/mnt/perf-test/fio-test.bin \
    --size=2G \
    --rw=randrw \
    --rwmixread=70 \
    --bs=4k \
    --iodepth=8 \
    --numjobs=1 \
    --direct=1 \
    --runtime=180 \
    --time_based \
    --group_reporting

Ovaj test ne služi za sertifikovanje maksimalnih performansi storage sistema. Cilj je da administrator vidi razliku između:

Rezultat jednog fio testa nije dovoljan za izbor storage platforme, sizing baze podataka ili poređenje različitih protokola. Za to je potreban dogovoren testni plan sa storage timom i workload-om koji odgovara stvarnoj aplikaciji.

Korak 9 – Proveriti da li snapshot ili konsolidacija utiču na rezultat

GUI putanja:

TEST-PERF-01
→ Snapshots
→ Manage Snapshots

Proveriti:

Snapshot ne treba uklanjati naslepo tokom performance incidenta. Konsolidacija može proizvesti dodatni I/O, zahtevati značajan slobodan prostor i kratkotrajno uticati na odziv VM-a. Potrebno je proceniti rizik, backup zavisnosti i maintenance prozor.

PowerCLI provera:

Get-VM -Name "TEST-PERF-01" |
    Get-Snapshot |
    Select-Object VM,
                  Name,
                  Created,
                  SizeGB,
                  Description

Komanda samo čita snapshot inventar.

Korak 10 – Pregledati storage događaje i logove

GUI putanja:

DATASTORE-A
→ Monitor
→ Tasks and Events
→ Events

Na ESXi hostu pregledati:

grep -iE "latency|deteriorated|NMP|APD|PDL|abort|reset|timeout|naa\." \
    /var/log/vmkernel.log | tail -n 200

/var/log/vmkernel.log zapisuje VMkernel događaje, uključujući storage putanje, I/O timeout, resetovanja, gubitak pristupa i poruke o pogoršanoj latenciji. Broadcom dokumentuje slučajeve u kojima se uz visoku storage latenciju pojavljuju poruke da su performanse uređaja pogoršane.

Dodatno proveriti:

grep -iE "storage|datastore|volume|latency|error" \
    /var/log/hostd.log | tail -n 150
grep -iE "storage|datastore|volume|error" \
    /var/log/vpxa.log | tail -n 150

hostd.log pomaže pri proveri host management zadataka i datastore događaja, dok vpxa.log pomaže pri proveri komunikacije hosta sa vCenter Serverom. Njihovo odsustvo storage greške ne isključuje problem latencije; primarni dokaz ostaju performance metrike i vmkernel.log.

Korak 11 – Odrediti obim problema poređenjem

  1. Pokrenuti isti ograničeni test na TEST-PERF-02.
  2. Ako je moguće, koristiti isti datastore i zatim nezavisni datastore.
  3. Uporediti IOPS, throughput i latenciju.
  4. Proveriti da li problem prati VM, host ili datastore.
  5. Ne menjati istovremeno host, datastore, VMDK kontroler i fio parametre.
Rezultat poređenja Verovatni zaključak
Samo jedna VM ima problem na istom datastore-u Guest, aplikacija, VMDK, snapshot ili virtuelni kontroler
Sve VM na datastore-u imaju problem Datastore, storage sistem ili zajednička putanja
Sve VM na jednom hostu imaju problem Host adapter, driver, putanja ili lokalna queue konfiguracija
Problem postoji na svim hostovima prema istom target-u Storage sistem, fabric, target port ili zajednička mreža
Problem prati VM nakon vMotion-a VM, guest ili storage koji ostaje isti
Problem nestaje nakon kontrolisane Storage vMotion operacije Prethodni datastore ili njegov storage put zahteva dalju analizu

Korak 12 – Planirana korektivna operacija

Korektivna akcija zavisi od dokazanog uzroka. Moguće bezbedne akcije uključuju:

Ne menjati queue depth kao prvu reakciju na visok KAVG. Povećanje reda može preneti veće opterećenje na već zasićen storage sistem i pogoršati latenciju za druge hostove. Ovakva izmena zahteva koordinaciju sa storage proizvođačem i proveru svih slojeva puta.

Očekivani rezultat

Vraćanje laboratorije u početno stanje

  1. Zaustaviti fio test.
  2. Potvrditi da nema aktivnih fio procesa:
pgrep -a fio
  1. Ukloniti samo namenski testni fajl:
rm -f /mnt/perf-test/fio-test.bin
  1. Proveriti da testni direktorijum ne sadrži druge podatke.
  2. Vratiti VM na početni datastore samo ako je migracija bila deo laboratorijskog scenarija i rollback plana.
  3. Isključiti SSH ako više nije potreban.
  4. Sačuvati pre i posle rezultate.

Laboratorijska vežba 5 – Mrežni throughput, packet drops, MTU i određivanje tačke gubitka

Cilj vežbe

Cilj je da administrator razlikuje:

Laboratorijska topologija

Objekat Uloga
TEST-NET-01 iperf3 server
TEST-NET-02 iperf3 klijent
ESXi host 1 i host 2 Test unutar hosta i između hostova
VM Network port group Testni VLAN i politika
vmnic uplink Fizička mrežna putanja
VMXNET3 adapter Preporučeni paravirtualizovani adapter za testne VM-ove

Preduslovi

Upozorenje o riziku

Throughput test može zasićivati uplink i uticati na druge servise. Koristiti vremenski ograničen test i kontrolisani broj paralelnih tokova. Ne pokretati maksimalni UDP test bez definisane brzine. Packet capture mora biti filtriran i vremenski ograničen; Broadcom upozorava da višestruke ili nefiltrirane pktcap-uw sesije na opterećenom hostu mogu same izazvati dodatni pritisak i packet drops.

Korak 1 – Dokumentovati VM mrežnu konfiguraciju

GUI putanja:

TEST-NET-01
→ Actions
→ Edit Settings
→ Virtual Hardware
→ Network adapter

Zabeležiti:

Na port group-u proveriti:

Traffic shaping ili drugi limit može smanjiti throughput iako fizička mreža ima raspoloživ kapacitet. Broadcom u postupku za sporu komunikaciju između VM-ova preporučuje proveru shaping politike i esxtop drop brojača.

Korak 2 – Proveriti fizičke NIC adaptere

Na ESXi hostu:

esxcli network nic list

Proveriti:

Detalji konkretnog adaptera:

esxcli network nic get -n vmnic0

Statistika adaptera:

esxcli network nic stats get -n vmnic0

Komande su read-only. Broadcom navodi ovu ESXCLI komandu kao najprecizniji način za pregled fizičkih NIC drop brojača.

Zabeležiti početne vrednosti:

Brojači su uglavnom kumulativni od pokretanja ili resetovanja adaptera. Sama nenulta vrednost nije dovoljan dokaz aktivnog incidenta. Važno je da li brojač raste tokom prijavljenog problema. Broadcom preporučuje praćenje stope promene, a ne samo apsolutne vrednosti.

Korak 3 – Snimiti NIC statistiku pre i posle testa

date
esxcli network nic stats get -n vmnic0 > /tmp/vmnic0-before.txt

Nakon testa:

date
esxcli network nic stats get -n vmnic0 > /tmp/vmnic0-after.txt
diff -u /tmp/vmnic0-before.txt /tmp/vmnic0-after.txt

Ovaj pristup pokazuje da li drop ili error brojači rastu tokom precizno definisanog perioda. Fajlovi su mali, ali ih nakon analize treba ukloniti.

Korak 4 – Proveriti guest konfiguraciju

Na Linux VM:

ip -br link
ip -br address
ip route
ethtool -i eth0
ethtool -S eth0 | head -n 100
ss -s

Naziv interfejsa može biti ens192, ens160 ili drugi predvidivi naziv. Zameniti eth0 stvarnim interfejsom.

Proveriti:

Na Windows VM proveriti adapter, driver, Advanced Properties i PowerShell statistiku:

Get-NetAdapter
Get-NetAdapterStatistics
Get-NetIPConfiguration

Komande ne menjaju mrežnu konfiguraciju.

Korak 5 – Izmeriti osnovnu latenciju i gubitak

Sa TEST-NET-02 prema TEST-NET-01:

ping -c 100 192.168.50.11

Posmatrati:

Ping nije throughput test niti dokaz da aplikacioni port radi. On služi za početnu proveru osnovne IP putanje, pod uslovom da ICMP nije filtriran ili ograničen.

Korak 6 – Proveriti MTU kontrolisanim testom

Za standardni Ethernet MTU 1500 na Linux sistemu:

ping -M do -s 1472 -c 5 192.168.50.11

Vrednost 1472 zajedno sa IPv4 ICMP i IP zaglavljima daje okvir koji odgovara MTU 1500.

Za jumbo MTU 9000:

ping -M do -s 8972 -c 5 192.168.50.11

Jumbo test se koristi samo ako je MTU 9000 projektovan na celoj putanji. Uspeh između dve VM na istom hostu ne potvrđuje fizičku putanju, jer saobraćaj možda ne napušta virtuelni switch.

Za VMkernel interfejs koristi se vmkping. Primer za proveru konkretne TCP/IP stack putanje i jumbo okvira zavisi od namene VMkernel adaptera i verzije ESXi-a. Pre testa identifikovati odgovarajući interfejs:

esxcli network ip interface list
vmkping -I vmk1 -d -s 8972 192.168.60.12

-I bira VMkernel interfejs, -d postavlja zabranu fragmentacije, a -s veličinu ICMP payload-a. Komanda ne menja stanje, ali pogrešan izbor interfejsa može dati lažan zaključak o drugoj mreži.

Korak 7 – Izmeriti TCP throughput pomoću iperf3

Na TEST-NET-01:

iperf3 -s

Na TEST-NET-02:

iperf3 -c 192.168.50.11 -t 30

Parametar -t 30 ograničava test na 30 sekundi.

Za reverse smer:

iperf3 -c 192.168.50.11 -t 30 -R

Za kontrolisani test sa četiri paralelna TCP toka:

iperf3 -c 192.168.50.11 -t 30 -P 4

-P 4 može povećati iskorišćenje linka, ali i opterećenje CPU-a. Ne zaključivati da mreža ima problem samo zato što jedan TCP tok ne dostiže nominalnu brzinu linka. Rezultat zavisi od latencije, TCP prozora, CPU-a, guest driver-a, offload funkcija i udaljene strane.

Korak 8 – Porediti tri putanje

  1. Pokrenuti obe VM na istom ESXi hostu i istom port group-u.
  2. Izmeriti throughput.
  3. Premestiti jednu VM na drugi host kroz planirani vMotion.
  4. Ponoviti potpuno isti test.
  5. Po mogućnosti testirati prema fizičkom serveru na istom VLAN-u.
Obrazac Verovatni sloj problema
Brzo na istom hostu, sporo između hostova Uplink, fizički switch, VLAN, MTU ili inter-host putanja
Sporo i na istom hostu Guest CPU, VMXNET3, virtuelni port, shaping ili aplikacija
Samo jedan smer je spor RX/TX redovi, asimetrična putanja, driver ili udaljena strana
Samo jedna VM je spora Guest, adapter, CPU Ready ili VM port
Sve VM na istom vmnic-u su spore Fizički NIC, driver, firmware, switch port ili zasićen uplink

Korak 9 – Posmatrati mrežu kroz esxtop

Na ESXi hostu pokrenuti:

esxtop

Pritisnuti n. Prikazati:

Broadcom dokumentuje korišćenje %DRPTX i %DRPRX za identifikovanje aktivnih packet drops tokom testa. Vrednosti treba povezati sa konkretnim VM portom, uplink-om i vremenom simptoma.

Ako drops rastu na VM portu, a fizički vmnic drop brojači ostaju nepromenjeni, problem može biti na guest ili virtuelnom port sloju. Ako rastu fizički adapter brojači, potrebno je proveriti driver, firmware, ring buffer, CPU opterećenje i fizički switch.

Broadcom navodi da se receive drops mogu pojaviti kada ESXi ne obrađuje pakete dovoljno brzo, na primer zbog visokog CPU opterećenja ili popunjenog RX ring buffer-a.

Korak 10 – Korelisati mrežne drops sa CPU stanjem

Tokom istog iperf3 testa u drugoj esxtop sesiji otvoriti CPU prikaz tasterom c i proveriti:

Packet loss ne mora biti posledica fizičke mreže. Broadcom opisuje slučajeve u kojima se drops na virtuelnom switch-u javljaju zbog nedovoljnih guest RX buffer-a ili nedostatka CPU ciklusa za obradu dolaznog saobraćaja.

Korak 11 – Proveriti driver i firmware kompatibilnost

esxcli network nic get -n vmnic0

Zabeležiti driver i firmware. Zatim ih proveriti prema aktuelnoj VMware Compatibility Guide i vendor dokumentaciji za konkretan server model, adapter i ESXi izdanje.

Ne nadograđivati samo driver ili samo firmware bez provere podržanog para. Broadcom dokumentuje performance probleme i netačne drop brojače koji zavise od konkretne kombinacije NIC driver-a i firmware-a.

Korak 12 – Ciljani packet capture

Packet capture se koristi tek nakon što su osnovne metrike pokazale gde treba posmatrati saobraćaj. Broadcom navodi pktcap-uw kao ESXi alat koji omogućava snimanje na različitim tačkama unutar hipervizora.

Prvo identifikovati switch port VM-a:

net-stats -l | grep -i "TEST-NET-01"

Zatim izvršiti vremenski i količinski ograničen capture. Tačna sintaksa zavisi od capture point-a i verzije, pa je pre produkcione upotrebe obavezno proveriti:

pktcap-uw --help

Primer ciljanog capture-a VM switch porta:

pktcap-uw \
    --switchport SWITCHPORT-ID \
    --capture PortInput,PortOutput \
    --count 1000 \
    -o /tmp/test-net-01.pcap

Primer capture-a na fizičkom uplink-u, filtriranog prema IP adresi:

pktcap-uw \
    --uplink vmnic0 \
    --capture UplinkSndKernel,UplinkRcvKernel \
    --ip 192.168.50.11 \
    --count 1000 \
    -o /tmp/vmnic0-test.pcap

Opcije i podržani capture point nazivi mogu se razlikovati između izdanja. Ne kopirati sintaksu bez provere ugrađene pomoći na konkretnom hostu.

Capture treba prekinuti čim je prikupljen potreban dokaz. Ne koristiti nefiltrirani kontinuirani capture na produkcionom uplink-u.

Broadcom primeri za izolovanje problema porede paket na VM switch portu i fizičkom uplink-u, čime se određuje da li paket ulazi u vDS, napušta ga ili nestaje između dve tačke.

Korak 13 – Analizirati capture bez menjanja hosta

Fajl bezbedno prebaciti na administratorsku stanicu i otvoriti u Wireshark-u. Tražiti:

Packet capture pokazuje šta se događa sa paketima, ali ne objašnjava samostalno zašto je uzrok nastao. Nalaz se koreliše sa CPU, esxtop, vmnic i fizičkim switch brojačima.

Relevantni logovi za mrežni incident

Lokacija Komponenta Šta se traži Primer komande
/var/log/vmkernel.log VMkernel mrežni sloj i driver Link promene, driver upozorenja, queue, watchdog i uplink događaji grep -iE "vmnic|link|netqueue|watchdog|drop|error" /var/log/vmkernel.log | tail -n 200
/var/log/vobd.log VMkernel observation događaji Link up/down, redundant uplink i host observation događaji grep -iE "vmnic|uplink|network|link" /var/log/vobd.log | tail -n 150
/var/log/hostd.log Host management agent Promene virtual switch-a, port group-a i NIC konfiguracije grep -iE "network|vswitch|portgroup|vmnic|TEST-NET" /var/log/hostd.log | tail -n 150
vmware.log VMX proces testne VM Virtuelni adapter, povezivanje, reset i VMX upozorenja grep -iE "ethernet|vmxnet|network|warning|error" vmware.log | tail -n 150
Guest logovi Gostujući driver i TCP/IP stack Interface reset, driver greška, timeout i resource exhaustion journalctl -k --since "-30 min" | grep -iE "vmxnet|net|link|drop|timeout"

Troubleshooting grane

Nalaz Sledeća akcija
esxtop VM drops, vmnic bez drops Proveriti guest CPU, VMXNET3 driver, RX redove i virtuelni port
vmnic drops rastu Proveriti ring buffer, driver/firmware, CPU, switch port i fizički link
MTU test radi na istom hostu, ne radi između hostova Proveriti fizičke switch-eve i celu inter-host putanju
iperf throughput nizak, bez drops Proveriti CPU, TCP prozor, shaping, jedan naspram više tokova i udaljenu stranu
Samo reverse smer je spor Proveriti RX stranu sporog primaoca i asimetričnu putanju
Problem prestaje nakon vMotion-a Analizirati izvorni host, vmnic, switch port i driver
Packet capture vidi paket na VM portu, ne vidi ga na uplink-u Problem između virtuelnog porta i uplink sloja
Paket napušta uplink, ali odgovor ne dolazi Analizu nastaviti na fizičkoj mreži ili udaljenom sistemu

Očekivani rezultat

Vraćanje laboratorije u početno stanje

  1. Zaustaviti iperf3 server i klijent kombinacijom Ctrl+C.
  2. Zaustaviti sve pktcap-uw procese:
killall pktcap-uw

killall prekida sve procese sa navedenim nazivom. Pre upotrebe proveriti:

ps | grep pktcap-uw
  1. Prebaciti potrebne capture fajlove na bezbednu lokaciju.
  2. Ukloniti samo laboratorijske fajlove:
rm -f /tmp/test-net-01.pcap
rm -f /tmp/vmnic0-test.pcap
rm -f /tmp/vmnic0-before.txt
rm -f /tmp/vmnic0-after.txt
  1. Vratiti VM raspored na početno stanje ako je to deo rollback plana.
  2. Vratiti privremena firewall pravila.
  3. Isključiti SSH servis.
  4. Potvrditi normalnu aplikacionu komunikaciju.

Laboratorijska vežba 6 – Kombinovani enterprise incident: aplikacija je spora, ali uzrok nije unapred poznat

Cilj vežbe

Cilj završne vežbe nije izazivanje još jednog izolovanog brojača, već primena kompletne administratorske metodologije. Administrator dobija prijavu:

„Poslovna aplikacija APP-PROD-01 od 10:15 povremeno kasni. Korisnici prijavljuju sporo otvaranje podataka, a pojedini zahtevi završavaju timeout greškom.”

Nije poznato da li je uzrok CPU, memorija, storage, mreža, gostujući sistem ili spoljašnja zavisnost.

Laboratorijska topologija

Scenarijska priprema

Instruktor može pripremiti jedan od sledećih bezbednih uzroka, ali administrator unapred ne zna koji:

Upozorenje o riziku

Svi namerno uvedeni kvarovi moraju biti ograničeni na laboratorijske objekte. Ne prekidati storage putanje, ne gasiti fizičke switch portove, ne izazivati APD/PDL, ne puniti datastore, ne izazivati host memory exhaustion i ne menjati produkcione resource pool politike.

Faza 1 – Potvrda simptoma

  1. Zabeležiti tačno vreme, vremensku zonu i trajanje.
  2. Identifikovati korisnike i poslovnu funkciju.
  3. Izmeriti aplikacioni odziv istim testnim zahtevom.
  4. Potvrditi da problem nije samo na jednom klijentskom računaru.
  5. Proveriti da li backend servis odgovara.

Primer osnovne HTTP provere sa klijentskog sistema:

curl -sS -o /dev/null \
    -w 'HTTP=%{http_code} CONNECT=%{time_connect} TTFB=%{time_starttransfer} TOTAL=%{time_total}\n' \
    https://app.lab.local/health

Komanda ne menja servis. Prikazuje vreme uspostavljanja veze, vreme do prvog bajta i ukupno vreme. Ako je connect vreme normalno, a time-to-first-byte visoko, uzrok može biti aplikacija, backend ili storage, a ne sama mrežna konekcija.

Faza 2 – Određivanje obima

Faza 3 – Provera nedavnih promena

GUI putanja:

APP-PROD-01
→ Monitor
→ Tasks and Events
→ Events

Proveriti period najmanje 30 minuta pre početka incidenta. Tražiti:

PowerCLI pregled osnovne konfiguracije:

$vm = Get-VM -Name "APP-PROD-01"

$vm | Select-Object Name,
                    PowerState,
                    NumCpu,
                    MemoryGB,
                    VMHost

$vm | Get-VMResourceConfiguration |
    Select-Object VM,
                  CpuReservationMhz,
                  CpuLimitMhz,
                  CpuSharesLevel,
                  MemReservationGB,
                  MemLimitGB,
                  MemSharesLevel

$vm | Get-HardDisk |
    Select-Object Name,
                  CapacityGB,
                  StorageFormat,
                  Filename

$vm | Get-NetworkAdapter |
    Select-Object Name,
                  Type,
                  NetworkName,
                  MacAddress,
                  ConnectionState

Sve komande su read-only.

Faza 4 – Istovremena korelacija četiri resursne oblasti

Za isti vremenski interval prikupiti:

Oblast Ključna pitanja
CPU Da li VM radi ili čeka? Postoji li limit? Da li i druge VM imaju Ready?
Memorija Postoji li ballooning, compression ili aktivni swap I/O? Da li gost ima OOM ili paging?
Storage Da li je visok GAVG? Da li uzrok dolazi iz DAVG ili KAVG? Da li su pogođene druge VM?
Mreža Postoje li drops, retransmissions, shaping ili problem samo u jednom smeru?

Broadcom pristup troubleshooting-u VM performansi upravo zahteva proveru CPU, memorije, storage-a i mreže umesto pretpostavke da je problem u jednom unapred izabranom sloju.

Faza 5 – Prikupiti ograničene PowerCLI statistike

$start = (Get-Date).AddHours(-1)
$finish = Get-Date

$available = Get-StatType -Entity $vm

$wanted = @(
    "cpu.usage.average",
    "cpu.ready.summation",
    "mem.usage.average",
    "mem.vmmemctl.average",
    "mem.swapped.average",
    "disk.usage.average",
    "disk.maxTotalLatency.latest",
    "net.usage.average"
)

$metrics = $wanted | Where-Object { $available -contains $_ }

Get-Stat -Entity $vm `
         -Stat $metrics `
         -Start $start `
         -Finish $finish |
    Select-Object Timestamp,
                  MetricId,
                  Instance,
                  Value,
                  Unit |
    Sort-Object Timestamp, MetricId

Get-Stat vraća statističke podatke koje je prikupio vCenter Server. Broadcom PowerCLI referenca ga opisuje kao cmdlet za preuzimanje dostupnih statističkih informacija sa vCenter sistema.

Lista brojača se prvo preseče sa stvarno dostupnim metrikama, čime se izbegava prekid upita zbog razlika između verzija, objekata i nivoa statistike.

Faza 6 – Analiza događaja i logova

Na pogođenom hostu napraviti vremenski ograničene izvatke:

grep -iE "APP-PROD-01|reconfig|power|migrate|error|warning" \
    /var/log/hostd.log | tail -n 250
grep -iE "latency|deteriorated|NMP|APD|PDL|reset|abort|vmnic|link|drop|error" \
    /var/log/vmkernel.log | tail -n 250
grep -iE "APP-PROD-01|migrate|error|warning" \
    /var/log/vpxa.log | tail -n 200

U VM direktorijumu:

grep -iE "cpu|memory|numa|scsi|latency|ethernet|vmxnet|warning|error" \
    vmware.log | tail -n 250

Logove treba filtrirati prema tačnom vremenu incidenta. Hiljade nepovezanih starih poruka povećavaju rizik pogrešne korelacije.

Faza 7 – Formulisati hipotezu

Pre korektivne izmene administrator mora zapisati jednu proverljivu hipotezu, na primer:

Hipoteza mora sadržati:

Faza 8 – Bezbedna korektivna akcija

Primeri dozvoljenih korekcija u laboratoriji:

Ne izvršavati više korekcija odjednom. Ako se istovremeno uklone CPU limit, migrira VM i zaustavi backup, neće biti moguće dokazati stvarni uzrok.

Faza 9 – Validacija oporavka

  1. Ponoviti isti aplikacioni test.
  2. Koristiti isti izvorni klijent.
  3. Meriti isti period.
  4. Prikupiti iste metrike.
  5. Potvrditi oporavak korisničkog odziva.
  6. Proveriti da korekcija nije stvorila novi problem.
  7. Sačuvati pre i posle podatke.

Oporavak nije potvrđen samo zato što je alarm nestao. Potrebno je dokazati da je poslovna transakcija ponovo u očekivanom rasponu i da su relevantne metrike stabilne.

Faza 10 – Dokumentovanje incidenta

Polje Sadržaj
Početak i kraj Tačno vreme i vremenska zona
Poslovni uticaj Korisnici, servisi i trajanje
Obim VM, host, datastore, mreža ili aplikacija
Nedavne promene Change ID, automatizacija ili neočekivana izmena
Dokazi Grafici, esxtop, logovi, PowerCLI i aplikaciona merenja
Uzrok Tehnički potvrđen uzročni mehanizam
Korekcija Tačno šta je promenjeno
Validacija Pre i posle rezultati
Preventivna akcija Monitoring, standard, kapacitet ili procesna promena

Očekivani rezultat

Administrator ne bira najvišu metriku kao uzrok, već gradi vremenski usklađen dokazni lanac. Može da pokaže šta je simptom, šta je posledica, koji sloj je odgovoran, zašto je korektivna akcija bezbedna i kojim ponovljenim merenjem je potvrđen oporavak.


Završna kontrolna tačka praktikuma

Administrator je uspešno završio kompletan praktikum ako može samostalno da:


Administratorske prakse

1. Projektovanje CPU resursa

2. Projektovanje memorije

3. Projektovanje storage performansi

4. Projektovanje mrežnih performansi

5. Redundansa i otpornost

6. Kapacitet i pragovi

7. Monitoring i alarmi

8. Standardizacija

9. Kontrola promena

10. Bezbednost performance dijagnostike

11. Dokumentovanje

12. Održavanje

13. Backup i disaster recovery


Zaključak

Performanse virtuelnog okruženja ne mogu se svesti na pitanje da li host ima slobodan CPU, memoriju ili storage prostor. Administrator mora razumeti redove čekanja, planiranje procesora, NUMA lokalnost, memory reclamation, storage put, virtuelne i fizičke mrežne slojeve i ponašanje aplikacije unutar gosta.

Najvažnija operativna veština nije pronalaženje najvećeg broja na grafikonu, već razdvajanje simptoma od uzroka. Visok CPU Usage može predstavljati koristan rad. Nizak CPU Usage ne znači da VM ne čeka procesor. Veliki Consumed memory ne dokazuje nedostatak memorije. Visok GAVG ne govori samostalno da li je problem na storage uređaju ili u VMkernel redu. Mali throughput bez packet drops ne dokazuje kvar mreže. Nenulti kumulativni NIC brojač ne dokazuje aktivan gubitak.

Posle ove lekcije administrator treba da bude sposoban da napravi bazno stanje, odredi obim problema, prikupi usklađene podatke iz vCenter Servera, PowerCLI-ja, esxtop-a, ESXCLI-ja, gostujućeg sistema i relevantnih logova, a zatim formuliše proverljivu hipotezu. Korektivna akcija mora biti ograničena, reverzibilna i zasnovana na dokazu. Oporavak mora biti potvrđen ponovljenim aplikacionim i infrastrukturnim merenjem.

Zreo VMware administrator ne optimizuje sistem nasumičnim dodavanjem resursa. On uklanja nepotrebne limite, pravilno dimenzioniše VM, štiti redundansu, planira kapacitet za kvar, prepoznaje kada je problem izvan VMware sloja i drugim timovima predaje precizne dokaze umesto neodređene prijave da je „mreža spora” ili da „storage kasni”.

← Prethodna lekcija Povratak na sadržaj Sledeća lekcija →