VMware Cloud Community
NucleusVM
Enthusiast
Enthusiast

powercli script not detecting hardware issues

I am currently using the script below to perform hardware checks on all the esxi's.

Today I found out that one of the esxi's has a problem with a hard disk, as shown in the attached screen shot. Yet, the script did not report any issues with that server.

How can I modify this script, to get more reliable hardware status results?

foreach($esx in Get-VMHost){

    Write-Host "Checking $esx" -ForegroundColor Yellow
    (Get-View -Id $esx.ExtensionData.ConfigManager.HealthStatusSystem).Runtime.SystemHealthInfo.NumericSensorInfo |
    where{$_.HealthState.Label -notmatch 'Green|Unknown' -and $_.Name -notmatch 'Rollup'} |
    Select @{N='Host';E={$esx.Name}},Name,@{N='Health';E={$_.HealthState.Label}} | Format-Table
   
    (Get-View -Id $esx.ExtensionData.ConfigManager.HealthStatusSystem).Runtime.HardwareStatusInfo.MemoryStatusInfo |
    where{$_.Status.Label -notmatch 'Green|Unknown'} | Select @{N='Host';E={$esx.Name}},Name,@{N='Health';E={$_.Status.Label}} | Format-Table

    (Get-View -Id $esx.ExtensionData.ConfigManager.HealthStatusSystem).Runtime.HardwareStatusInfo.CpuStatusInfo |
    where{$_.Status.Label -notmatch 'Green|Unknown'} | Select @{N='Host';E={$esx.Name}},Name,@{N='Health';E={$_.Status.Label}} | Format-Table

    (Get-View -Id $esx.ExtensionData.ConfigManager.HealthStatusSystem).Runtime.HardwareStatusInfo.StorageStatusInfo |
    where{$_.Status.Label -notmatch 'Green|Unknown'} | Select @{N='Host';E={$esx.Name}},Name,@{N='Health';E={$_.Status.Label}} | Format-Table
    }

1.jpg

Reply
0 Kudos
3 Replies
ccalvetTCC
Enthusiast
Enthusiast

Same issue here. I have a memory warning for one host.

I have explored everything under HealthSystemRuntime without finding anything.

vSphere 6.0 Documentation Center

Memory in "memoryStatusInfo" is reported as green.

(And with only one value in the table...i was expecting one value per memory slot)

All numericSensorInfo are reported as green as well.

My conclusion at this stage.

These API properties don't provide the same information as what is visible in the "Hardware Status" in vSphere client.

Blog: http://thecrazyconsultant.com/ | Twitter: @ccalvetTCC
Reply
0 Kudos
ccalvetTCC
Enthusiast
Enthusiast

Found it.

Information in the "Hardware Status" > "Sensors" view are available via VMware CIM API in the OMC_DiscreteSensor

To extract them in an easy way from PowerCLI.

get-vmhost "YourHostName" | Get-VMhostCimInstance -ClassName "OMC_DiscreteSensor" -SkipCACheck -SkipCNCheck -SkipRevocationCheck | ogv

You will find on my blog the function Get-VMHostCimInstance.  (Function inspired from many others bloggers)

I will update the blog soon but one line has to be added in the function to be able to work with "OMC_DiscreteSensor"
(Or you will end up with the error: Get-CimInstance : The response that the WS-Management service computed exceed the internal limit for envelope size.)

$CimSessionOptionParameters = @{

Encoding = 'Utf8'

UseSsl = $true

MaxEnvelopeSizeKB = 1024

}

Finally you will not get the "Warning" or "Error" category in the result it will be necessary to filter.
The properties "HealthState" or "OperationalStatus" seem to be relevant in that case.

Check the ValueMap for these properties in the OMC_DiscreteSensor

For example for a memory module with a warning "Correctable ECC logging limit reached":

HealthState has a value of 10. It means "Degraded/Warning"
OperationalStatus has a value of 3. It means "Degraded"

For the memory modules without any warning/errors the values are:
HealthState 5 OK
OperationalStatus 2 OK

Blog: http://thecrazyconsultant.com/ | Twitter: @ccalvetTCC
Reply
0 Kudos
ccalvetTCC
Enthusiast
Enthusiast

It seems that i should have replied to the original question.

Answer in the previous post.

Blog: http://thecrazyconsultant.com/ | Twitter: @ccalvetTCC
Reply
0 Kudos