One neat capability that was introduced with vSAN 6.6 is the ability to "silence" and disable specific vSAN Health Checks. A recent use for this came up on Duncan's blog where the vMotion health check would fail if you are using a vMotion network stack. As you can imagine, this feature can also come in handy for vSphere Home Labs where your hardware may not be on the official VMware HCL and wish to disable those specific vSAN Health Checks.
Today, silencing or re-enabling a specific vSAN Health Check is not available directly in the vSphere Web Client. Duncan already demonstrated one way of silencing a particular vSAN Health Check using RVC which is available when SSH'ing to vCenter Server Appliance (VCSA).
However, this capability can also be consumed remotely using the vSAN Management API which can then be consumed using a variety of vSAN Management SDKs including PowerCLI which now has complete access to the vSAN Management API. The following three new API methods have been added to the VsanVcClusterHealthSystem managed object that provides management of the underlying vSAN health Checks:
- VsanQueryAllSupportedHealthChecks() - Retrieves all available vSAN Health Checks
- VsanHealthGetVsanClusterSilentChecks() - Retrieves all silenced vSAN Health Checks
- VsanHealthSetVsanClusterSilentChecks() - Silence or re-enable specific vSAN Health Checks
To demonstrate how these new vSAN APIs work, I created a quick PowerCLI script called VSANHealthChecks.ps1 which leverages the new Get-VsanView cmdlet that is included in latest PowerCLI 6.5.1.
To retrieve all available vSAN Health Checks which includes their TestName (what you see in the UI) as well as the TestId which will be needed if you wish to silence or re-enable a particular health check, run the following command:
Get-VSANSilentHealthChecks -Cluster VSAN-Cluster
Lastly, if we want to disable a particular set of vSAN Health Checks, you simply need to pass in a list of TestIds from the first command. In the example below, we are going to disable both HCL Controller and Firmware check by running the following:
Set-VSANSilentHealthChecks -Cluster VSAN-Cluster -Test controlleronhcl,controllerfirmware -Disable
If we re-run the previous query, we should see these additional two checks that have been silenced. In addition, we can also verify this by looking at the vSAN Health Check UI in vCenter Server. As you can see in the screenshot below, instead of showing "Failed" or "Warning" the specific silenced health check will now show "Skipped" with green status.
Set-VSANSilentHealthChecks -Cluster VSAN-Cluster -Test controlleronhcl,controllerfirmware -Enable