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.