Highlighted
Expert
Expert

vSAN health checks

Jump to solution

Hello,

has anyone tried to get some reports on vsan health using powerci ? Couldn't find anythng in google. I am just looking for a hint on how to hook into this monitor->Vsan tab using powercli. I would like to get that report that sits inside, for example that all disks are happy, that data section is green etc.

--- @blog https://grzegorzkulikowski.info
1 Solution

Accepted Solutions
Highlighted
User Moderator
User Moderator

Looks like it.
With Get-VsanView you can get to these API.


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

View solution in original post

6 Replies
Highlighted
User Moderator
User Moderator

You can get that information through esxcli (if you use VSAN 6.6 or higher that is).

For example

$clusterName = 'cluster'

$esx = Get-Cluster -Name $clusterName | Get-VMHost | Get-Random

$esxcli = Get-EsxCli -VMHost $esx -v2

$esxcli.vsan.health.cluster.get.Invoke(@{test='vSAN object health'})

If you want to everything that is available, you could do

$esxcli.vsan.health.cluster.list.Invoke() |

ForEach-Object -Process {

   $esxcli.vsan.health.cluster.get.Invoke(@{test=$_.HealthTestName})

}


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

0 Kudos
Highlighted
Expert
Expert

Hey Luc,

  that will do ! Thanks a lot , that's exactly what i was looking for.

I googled more today, and i came across this:

"

VsanQueryVcClusterHealthSummary(queryClusterHealthSummary)

Perform a cluster wide health check across all types of health checks. It's the primary API for fetching vSAN health status. This API runs a wide variety of health checks in many different categories against the cluster and returns both API-friendly and UI-friendly data. The 'fields' parameter should be used to return what the client is really interested in to limit the big result size for performance consideration. The API can either perform a health check against the up-to-date state of the hosts in the cluster and takes several seconds to return or it can retrieve the latest cached result to return in second. It's encouraged to fetch the cached data to get the quick response unless an update is required. Note: when this API is called directly from an ESXi host, following test groups are not supported: groupId = com.vmware.vsan.health.test.hcl

"

Any idea if this is the same ?

--- @blog https://grzegorzkulikowski.info
0 Kudos
Highlighted
User Moderator
User Moderator

Looks like it.
With Get-VsanView you can get to these API.


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

View solution in original post

Highlighted
Expert
Expert

got everything working:

$vsanViewClusterHealthSystem = Get-VSANView -Id "VsanVcClusterHealthSystem-vsan-cluster-health-system"

$vsanViewClusterHealthSystem.VsanQueryVcClusterHealthSummary((get-cluster -Name 'cluster001').id,$null,$null,$false,$null, $true,[vmware.vsan.views.vsanhealthperspective]::defaultView)

Perfect ! thanks again

--- @blog https://grzegorzkulikowski.info
Highlighted
Contributor
Contributor

Not sure if anyone can help with this

I tried running this and got the following error. This happens to all 4 clusters that I have and these are across two different sites. The VSAN is definitely there and running and Skyline health checks from GUI is good and no issues report on VSAN GUI during checks and they are running production VMs already

$vsanViewClusterHealthSystem.VsanQueryVcClusterHealthSummary((get-cluster -Name 'mycluster').id,$null,$null,$false,$null, $true,[vmware.vsan.views.vsanhealthperspective]::defaultView)

Exception calling "VsanQueryVcClusterHealthSummary" with "7" argument(s): "The object

'vim.ClusterComputeResource:domain-c21' has already been deleted or has not been completely created"

At line:1 char:1

+ $vsanViewClusterHealthSystem.VsanQueryVcClusterHealthSummary((get-clu ...

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException

    + FullyQualifiedErrorId : FaultException

I also tried and got this, same thing happens to all my clusters

Test-VsanClusterHealth -cluster mycluster

Test-VsanClusterHealth : 10/29/2020 11:33:43 AM Test-VsanClusterHealth          Value cannot be null.

Parameter name: source

At line:1 char:1

+ Test-VsanClusterHealth -cluster mycluster

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : NotSpecified: (:) [Test-VsanClusterHealth], VimException

    + FullyQualifiedErrorId : Core_BaseCmdlet_UnknownError,VMware.VimAutomation.Storage.Commands.Cmdlets.Vsan.TestVsan

   ClusterHealth

This is my powercli and powershell version

Get-PowerCLIVersion

WARNING: The cmdlet "Get-PowerCLIVersion" is deprecated. Please use the 'Get-Module' cmdlet instead.

PowerCLI Version

----------------

   VMware PowerCLI 12.0.0 build 15947286

---------------

Component Versions

---------------

   VMware Common PowerCLI Component 12.0 build 15939652

   VMware Cis Core PowerCLI Component PowerCLI Component 12.0 build 15939657

   VMware VimAutomation VICore Commands PowerCLI Component PowerCLI Component 12.0 build 15939655

   VMware VimAutomation Storage PowerCLI Component PowerCLI Component 12.0 build 15939648

PowerCLI Version

----------------

   VMware PowerCLI 12.0.0 build 15947286

---------------

Component Versions

---------------

   VMware Common PowerCLI Component 12.0 build 15939652

   VMware Cis Core PowerCLI Component PowerCLI Component 12.0 build 15939657

   VMware VimAutomation VICore Commands PowerCLI Component PowerCLI Component 12.0 build 15939655

   VMware VimAutomation Storage PowerCLI Component PowerCLI Component 12.0 build 15939648

$psversiontable

Name                           Value

----                           -----

PSVersion                      5.1.14409.1018

PSEdition                      Desktop

PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}

BuildVersion                   10.0.14409.1018

CLRVersion                     4.0.30319.36627

WSManStackVersion              3.0

PSRemotingProtocolVersion      2.3

SerializationVersion           1.1.0.1

get-module

ModuleType Version    Name

---------- -------    ----

Manifest   3.1.0.0    Microsoft.PowerShell.Management

Manifest   3.0.0.0    Microsoft.PowerShell.Security

Manifest   3.1.0.0    Microsoft.PowerShell.Utility

Script     7.0.0.1... VMware.Vim

Script     12.0.0.... VMware.VimAutomation.Cis.Core

Script     12.0.0.... VMware.VimAutomation.Common

Script     12.0.0.... VMware.VimAutomation.Core

Script     12.0.0.... VMware.VimAutomation.Sdk

Script     12.0.0.... VMware.VimAutomation.Storage

0 Kudos
Highlighted
Contributor
Contributor

Problem solved. I connected to vcenter in linked mode. Most of the scripts expected only 1 vcenter

0 Kudos