Vmware üzerindeki sanal sunucularda yaşanan performans sorunları için belirli kontroller yapmak gerekiyor. Özellikle kaynak planlaması iyi yapılmamış ortamlarda CPU performans sorunları en sık karşılaşılan durum. Hal böyle olunca sorunu tespit edebilmek için esxtop üzerindeki değerleri kontrol etmek gerekiyor. Burada sanal sunucuda yaşan bir performans sorununun tespit edilebilmesi için öncelikle sanal sunucu CPU kullanımı ve CPU ready time değeri, host cpu utilization bilgilerine ihtiyaç duyuyoruz. Bunların tümünü kontrol etmek bazen çok zaman alabiliyor. Bunun için bir powercli scripti hazırladım.
Not: Ben powercli işlemleri için her zaman readonly user kullanıyorum. Sizin de bu tip raporlar için readonly user kullanmanızı öneririm.
Scripti çalıştırdığınızda size işlem yapılacak sanal sunucu adını soruyor. Guest adını girdikten sonra sanal sunucunun ve üzerinde çalıştığı vmware host’un CPU statistics bilgilerini topluyor ve önerilen dışındaki değerleri kırmızı işaretleyerek size bilgi veriyor.

# Powershell Gallery PowerCLI modullerini yukluyoyuruz
Import-Module VMware.PowerCLI
Connect-VIServer -Server
clear
$vname = Read-Host "Vm Adını yazınız"
$vmName = Get-VM $vname
$vmHOST = $vmName | Get-VMHost
$y = $vmName | Get-Stat -Stat cpu.usage.average -Realtime | Where-Object -Property Instance -eq "" | measure Value -Average -Minimum -Maximum
$x = $vmHOST | Get-Stat -Stat cpu.usage.average -Realtime | Where-Object -Property Instance -eq "" | measure Value -Average -Minimum -Maximum
$HostCpuAverage = [math]::Round($x.Average)
$HostCpuMax = [math]::Round($x.Maximum)
$VmCpuAverage = [math]::Round($y.Average)
$VmCpuMax = [math]::Round($y.Maximum)
Write-Host
Write-Host
Write-Host "Guest CPU Bilgileri kontrol Ediliyor" -ForegroundColor Cyan
Write-Host
Write-Host
if($VmCpuAverage -gt 75 -or $VmCpuMax -gt 90){
Write-Host ----------Sanal Sunucu CPU Değerleri Yüksek !!! ----------- -foregroundcolor White -BackgroundColor DarkRed
Write-Host "VM Name : $vmName.Name"
Write-Host "VM Cpu Average % : $VmCpuAverage"
Write-Host "VM Cpu Max % : $VmCpuMax"
Write-Host ---------/Sanal Sunucu CPU Kullanım Bilgileri--------------- -foregroundcolor White -BackgroundColor DarkRed
Write-Host
}else{
Write-Host ----------Sanal Sunucu CPU Değerleri Normal ----------- -foregroundcolor White -BackgroundColor DarkGreen
Write-Host "VM Name : $vmName.Name"
Write-Host "VM Cpu Average % : $VmCpuAverage"
Write-Host "VM Cpu Max % : $VmCpuMax"
Write-Host ---------/Sanal Sunucu CPU Kullanım Bilgileri--------------- -foregroundcolor White -BackgroundColor DarkGreen
Write-Host
}
Write-Host
Write-Host
Write-Host "Host CPU Bilgileri kontrol Ediliyor" -ForegroundColor Cyan
Write-Host
if($HostCpuAverage -gt 75 -or $HostCpuMax -gt 90){
Write-Host ----------HOST CPU Değerleri Yüksek !!! ----------- -foregroundcolor White -BackgroundColor DarkRed
Write-Host "VM Name : $vmHOST.Name"
Write-Host "Host Cpu Average % : $HostCpuAverage"
Write-Host "Host Cpu Max % : : $HostCpuMax"
Write-Host ---------/HOST CPU Kullanım Bilgileri--------------- -foregroundcolor White -BackgroundColor DarkRed
Write-Host
}else{
Write-Host ----------HOST CPU Değerleri Normal ----------- -foregroundcolor White -BackgroundColor Green
Write-Host "VM Name : $vmName.Name"
Write-Host "VM Cpu Average % : $HostCpuAverage"
Write-Host "VM Cpu Max % : $HostCpuMax"
Write-Host ---------/HOST CPU Kullanım Bilgileri--------------- -foregroundcolor White -BackgroundColor Green
Write-Host
Write-Host
Write-Host -ForegroundColor Cyan $("CPU Ready Kontrol Ediliyor.")
$cpuReady = $vmName | Get-Stat -Stat cpu.ready.summation -Realtime | Where-Object -Property Instance -eq "" | measure Value -Average -Minimum -Maximum
$cpuReadyTimeAverage = [math]::Round($cpuReady.Average)
Write-Host
if($cpuReadyTimeAverage -gt 2000){
Write-Host ----------CPU Ready Time Yüksek ----------- -foregroundcolor White -BackgroundColor Red
Write-Host "VM Name : $vmName.Name"
Write-Host "CPU Ready Time : $cpuReadyTimeAverage"
Write-Host ---------/CPU Ready Time Bilgileri--------------- -foregroundcolor White -BackgroundColor Red
Write-Host
}else{
Write-Host ----------CPU Ready Time Normal ----------- -foregroundcolor White -BackgroundColor Green
Write-Host "VM Name : $vmName.Name"
Write-Host "CPU Ready Time : $cpuReadyTimeAverage"
Write-Host ---------/CPU Ready Time Bilgileri--------------- -foregroundcolor White -BackgroundColor Green
Write-Host
}
}
Disconnect-VIServer -Server * -Force -Confirm:$false
Bir yanıt bırakın