Icinga2 Monitoring for Windows Disks Not Working [Resolved]

Among the many possible services to monitor a Windows based operating system using Icinga2, the service that utilizes the check_command of disk-windows has not quite worked as expected.  It may have been a combination of things that was done incorrectly over the years, or maybe plugin versioning. In any case, a snippet below demonstrates a thought to be working service for use with Icinga2.

The goal of this services is to check the C: drive and present a warning at 20% free and a critical at 10% free.  This, however, was not happening.

apply Service "Disk C" {
import "generic-service"
check_command = "disk-windows"
vars.disk_win_path = "C:"
vars.disk_wfree = "20%"
vars.disk_cfree = "10%"
command_endpoint = host.vars.client_endpoint
assign where host.vars.os == "Windows"
}

A Windows server was discovered within the values to trigger a warning.  A warning was never issued, only the OK status.  After further reading and testing, I determined the cause of this.  The values of vars.disk_wfree and vars.disk_cfree are for the Linux check command not the Windows check command.  The correct values are vars.disk_win_warn and vars.disk_win_crit.  The corrected snippet with the replaced values is this.

apply Service "Disk C" {
import "generic-service"
check_command = "disk-windows"
vars.disk_win_path = "C:"
vars.disk_win_warn = "20%"
vars.disk_win_crit = "10%"
command_endpoint = host.vars.client_endpoint
assign where host.vars.os == "Windows"
}

The predefined values are obtained from %programfiles%\ICINGA2\share\icinga2\include\command-plugins-windows.conf located on the Windows client.  Here is a snippet of that file.

object CheckCommand "disk-windows" {
command = [ PluginDir + "/check_disk.exe" ]

arguments = {
"-w" = {
value = "$disk_win_warn$"
description = "Warning threshold"
}
"-c" = {
value = "$disk_win_crit$"
description = "Critical threshold"
}
"-p" = {
value = "$disk_win_path$"
description = "Optional paths to check"
repeat_key = true
}
"-u" = {
value = "$disk_win_unit$"
description = "Use this unit to display disk space"
}
"-x" = {
value = "$disk_win_exclude$"
description = "Exclude these drives from check"
}
}

vars.disk_win_unit = "mb"
//The default
}

Hope this helps someone else.