Vmware CPU Troubleshooter

By | 13/03/2018

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 cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir