Lehet hogy túlzás KPI-nek nevezni, mi mindenesetre így hívjuk. A lényeg úgyis a tartalom. Arról van szó, hogy minden hónap elején kérnek tőlem bizonyos számszerűsíthető információt a VMware infrastruktúráról.
Mivel a mondás szerint ha már valamit kétszer meg kell csinálni, akkor arra írjunk scriptet, ezért én is így tettem.
Nem nagy dolgokról van szó, de ha valaki még esetleg most ismerkedik a PowerCLI használatával, akár még hasznos dolgot is találhat benne.
Az itt található kód egy kicsit egyszerűsített változata annak amit használok, mivel nálunk több datacenter van, és az adatokat megosztva kérik. A lenti viszont egyben kezeli a vCenteren lévő összes hostot, virtuális gépet valamint datastore-t. De a Location paraméter megadásával könnyen lehet szűkíteni a lekérdezéseket egy bizonyos csoportra.
Ha csak a Datacenter1-ben lévő dolgokkal akarunk foglalkozni, akkor egyszerűen ki kell bővíteni a parancsokat. Pl.
$Host_ALL=Get-VMHost -Location DataCenter1|?{$_.ConnectionState
-ne "Maintenance"}
Megjegyzések a scriptben, bár a nagy része nem szorul magyarázatra.
#Induló értékek meghatározása (dátum, hostok,virtuális gépek,
datastore-ok)
#ha szükésges, akkor különböző szűréseket beállíthatunk, pl.
csak bekapcsolt gépek,
#csak olyan datastore-ok, amikben nem szerepel az
"internal" szó, stb
$Date=Get-Date
$Host_ALL=Get-VMHost |?{$_.ConnectionState -ne
"Maintenance"}
$VM_ALL=get-vm |?{$_.Powerstate -eq
"PoweredOn"}
$DS_ALL=get-datastore |?{$_.Name -notlike "*internal*"}
#Host mennyiségi értékek számítása (összes mamória, CPU-k száma,
és a hostok száma)
$Host_Mem_osszes_ALL=($Host_ALL|Measure-Object -Property
MemoryTotalGB -sum).Sum
$Host_CPU_osszes_ALL=($Host_ALL|Measure-Object -Property
NumCPU -sum).Sum
$Host_darab_ALL=($Host_ALL|measure-object).Count
#Datastore szabad és full kapacitások számítása
$DS_Free_Space_ALL=($DS_ALL|Measure-Object -Property
FreespaceGB -sum).Sum
$DS_Full_Space_ALL=($DS_ALL|Measure-Object -Property
CapacityGB -sum).Sum
#VM mennyiségi adatok (összes vCPU,számosság, abból mennyi a
Windows és nem Windows gép)
$VM_CPU_ALL=($VM_ALL|Measure-Object -Property
NumCPU -sum).sum
$VM_COUNT_ALL=($VM_ALL|Measure-Object).Count
$VM_COUNT_Windows_ALL=($VM_ALL|?{$_.GuestId -like
"*win*"}|Measure-Object).Count
$VM_COUNT_NonWindows_ALL=($VM_ALL|?{$_.GuestId -notlike
"*win*"}|Measure-Object).Count
#Provisioned Datastore számítás. Egy kicsit trükkös, mert ezt
már csak az extensiondata #felhasználásával lehet lekérdezni, mivel a Get-DataStore ezt az értéket direktben nem
#tartalmazza
#tartalmazza
$ProvisionedSpace_ALL=(Get-Datastore | ?{$_.Name -notlike
"*internal*"}|
Select-Object -Property
Name,
CapacityGB,FreeSpaceGB,
@{
Name = "ProvisionedSpaceGB"
Expression =
{($_.ExtensionData.Summary.Capacity
- $_.Extensiondata.Summary.FreeSpace + $_.ExtensionData.Summary.Uncommitted)/1GB}
}|Measure-Object -Property
ProvisionedSpaceGB -sum).sum
#Host memória és CPU szabad kapacitások számítása
#Nem bonyolítottam túl, egyszerűen az elmúlt egy hét értékeit
lekértem, és abból az összes #hostra számoltam egy átlagot. Így utólag megnézve, lehetne egyszerűsíteni a következő pár
#sort (nem kéne számolgatni a hostokat, mivel tudom mennyi van...), de ez már így marad :)
#sort (nem kéne számolgatni a hostokat, mivel tudom mennyi van...), de ez már így marad :)
$Host_ALL_CPU_Percent=0
$Host_ALL_MEM_Percent=0
$Host_Count=0
foreach ($h
in $Host_ALL)
{
$HostCpuUsage
= (get-stat
-entity $h.Name -stat cpu.usagemhz.average -Start
($Date).adddays(-7) -Finish ($Date)|Measure-Object -Property
Value -Average).Average
$HostMemUsage
= (get-stat
-entity $h.Name -stat mem.consumed.average -Start
($Date).adddays(-7) -Finish ($Date)|Measure-Object -Property
Value -Average).Average
$HostallCPU=$h.CpuTotalMhz
$HostallMem=$h.MemoryTotalMB
$Host_ALL_CPU_Percent=$Host_ALL_CPU_Percent+(($HostCPUUsage/$HostallCPU)*100)
$Host_ALL_MEM_Percent=$Host_ALL_MEM_Percent+((($HostMemUsage/1024)/$HostallMem)*100)
$Host_Count=$Host_Count+1
}
$Host_ALL_CPU_Percent=$Host_ALL_CPU_Percent/$Host_Count
$Host_ALL_MEM_Percent=$Host_ALL_MEM_Percent/$Host_Count
#Már csak az értékek kiíratása van hátra
Write-Host "összes
CPU core" $Host_CPU_osszes_ALL
Write-Host "fizikia
memória mérete" $Host_Mem_osszes_ALL
Write-Host "hostok
szám" $Host_darab_ALL
Write-Host "provisioned
tárhely" $ProvisionedSpace_ALL
Write-Host "szabad
CPU kapacitás: " (100-$Host_ALL_CPU_Percent)
Write-Host "szabad
datastore kapacitás" $DS_Free_Space_ALL
Write-Host "szabad
Memória kapacitás: " (100-$Host_ALL_MEM_Percent)
Write-Host "teljes
datastore kapacitás" $DS_Full_Space_ALL
Write-Host "vCPU
szám" $VM_CPU_ALL
Write-Host "vCPU/core"
($VM_CPU_ALL/$Host_CPU_osszes_ALL)
Write-Host "vCPU/VM"
($VM_CPU_ALL/$VM_COUNT_ALL)
Write-Host "virtuális
gépek száma" $VM_COUNT_ALL
Write-Host "Virtuális
gépek száma (nem Windows)" $VM_COUNT_NonWindows_ALL
Write-Host "Virtuális
gépek száma (Windows)" $VM_COUNT_Windows_ALL
Nincsenek megjegyzések:
Megjegyzés küldése