An example check_wmi_plus configuration for Icinga2. Check_wmi_plus is a clientless plugin for monitoring Windows systems via WMI with Nagios and other monitoring platforms.

object CheckCommand "check_wmi" {
  import "plugin-check-command"
  command = [ PluginDir + "/check_wmi_plus.pl" ]

  arguments = {
    "--inidir" = "$wmi_inidir$"
    "-H" = "$host.name$"
    "-A" = "$wmi_authfile_path$"
    "-m" = "$check_mode$"
    "-s" = "$wmi_submode$"
    "-a" = "$wmi_arg1$"
    "-o" = "$wmi_arg2$"
    "-3" = "$wmi_arg3$"
    "-4" = "$wmi_arg4$"
    "-y" = "$wmi_delay$"
    "-w" = "$wmi_warn$"
    "-c" = "$wmi_crit$"
    "--nodatamode" = {
      set_if = "$wmi_nodatamode$"
    }
  }

  vars.wmi_authfile_path = "/etc/icinga2/wmi.auth"
  vars.wmi_inidir = "/usr/lib64/nagios/plugins/check_wmi_plus.d"
  vars.wmi_nodatamode = false

}

template Service "wmi-service" {
  import "generic-service"
  check_command = "check_wmi"
  check_interval = 1m
  retry_interval = 1m
}

apply Service "General: Windows Version" {
  import "wmi-service"

  vars.check_mode = "info"
  vars.wmi_submode = "os"

  assign where host.vars.os == "Windows"
  ignore where host.vars.disable_wmi
}

apply Service "General: Network Adapters" {
  import "wmi-service"

  vars.check_mode = "info"
  vars.wmi_submode = "net"

  assign where host.vars.os == "Windows"
  ignore where host.vars.disable_wmi
}

apply Service "General: CPU Info" {
  import "wmi-service"

  vars.check_mode = "info"
  vars.wmi_submode = "cpu"

  assign where host.vars.os == "Windows"
  ignore where host.vars.disable_wmi
}

apply Service "Disk IO C:" {
  import "wmi-service"

  vars.check_mode = "checkio"
  vars.wmi_submode = "logical"
  vars.wmi_arg1 = "C:"

  assign where host.vars.os == "Windows"
  ignore where host.vars.disable_wmi
}

apply Service "Free Disk Space" {
  import "wmi-service"

  vars.check_mode = "checkvolsize"
  vars.wmi_arg1 = "."
  vars.wmi_arg2 = "1"
  vars.wmi_arg3 = "1"
  vars.wmi_warn = "80"
  vars.wmi_crit = "90"

  assign where host.vars.os == "Windows"
  ignore where host.vars.disable_wmi
}

apply Service "CPU Utilization" {
  import "wmi-service"

  vars.check_mode = "checkeachcpu"
  vars.wmi_warn = "80"
  vars.wmi_crit = "90"

  assign where host.vars.os == "Windows"
  ignore where host.vars.disable_wmi
}

apply Service "CPU Queue Length" {
  import "wmi-service"

  vars.check_mode = "checkcpuq"
  vars.wmi_arg1 = "20"
  vars.wmi_delay = "0"
  vars.wmi_warn = "10"
  vars.wmi_crit = "20"

  assign where host.vars.os == "Windows"
  ignore where host.vars.disable_wmi
}

apply Service "AD Replication Status" {
  import "wmi-service"

  vars.check_mode = "checkad"
  vars.wmi_submode = "replication"
  vars.wmi_crit = "0"
  vars.wmi_nodatamode = true


  assign where host.vars.domain_controller
  ignore where host.vars.disable_wmi
}

apply Service "AD DNS Statistics" {
  import "wmi-service"

  vars.check_mode = "checkdns"
  vars.wmi_submode = "stats"
  vars.wmi_nodatamode = true

  assign where host.vars.domain_controller
  ignore where host.vars.disable_wmi
}

apply Service "AD DNS A Records" {
  import "wmi-service"

  vars.check_mode = "checkdns"
  vars.wmi_submode = "arecords"
  vars.wmi_nodatamode = true

  assign where host.vars.domain_controller
  ignore where host.vars.disable_wmi
}

apply Service "AD DNS CNAME Records" {
  import "wmi-service"

  vars.check_mode = "checkdns"
  vars.wmi_submode = "cnamerecords"
  vars.wmi_nodatamode = true

  assign where host.vars.domain_controller
  ignore where host.vars.disable_wmi
}

apply Service "Page File Utilization" {
  import "wmi-service"

  vars.check_mode = "checkpage"
  vars.wmi_arg1 = "auto"

  assign where host.vars.os == "Windows"
  ignore where host.vars.disable_wmi
}

apply Service "RDP Sessions" {
  import "wmi-service"

  vars.check_mode = "checkts"
  vars.wmi_submode = "sessions"
  vars.wmi_warn = "ActiveSessions=0 -w TotalSessions=1"
  vars.wmi_crit = "ActiveSessions=1 -c TotalSessions=2"

  assign where host.vars.os == "Windows"
  ignore where host.vars.disable_wmi
}

apply Service "IIS: Users" {
  import "wmi-service"

  vars.check_mode = "checkiis"
  vars.wmi_submode = "users"
  vars.wmi_arg1 = "_Total"

  assign where host.vars.iis_server
  ignore where host.vars.disable_wmi
}

apply Service "IIS: Requests" {
  import "wmi-service"

  vars.check_mode = "checkiis"
  vars.wmi_submode = "requests"
  vars.wmi_arg1 = "_Total"

  assign where host.vars.iis_server
  ignore where host.vars.disable_wmi
}

apply Service "IIS: Connections" {
  import "wmi-service"

  vars.check_mode = "checkiis"
  vars.wmi_submode = "connections"
  vars.wmi_arg1 = "_Total"

  assign where host.vars.iis_server
  ignore where host.vars.disable_wmi
}

apply Service "IIS: Errors" {
  import "wmi-service"

  vars.check_mode = "checkiis"
  vars.wmi_submode = "errors"
  vars.wmi_arg1 = "_Total"

  assign where host.vars.iis_server
  ignore where host.vars.disable_wmi
}

apply Service "MSSQL: General Statistics" {
  import "wmi-service"

  vars.check_mode = "checksql"
  vars.wmi_submode = "general"
  if (host.vars.mssql_edition == "Express") {
    vars.wmi_arg1 = "MSSQLSQLEXPRESS_MSSQLSQLEXPRESS"
  }

  assign where host.vars.mssql_server
  ignore where host.vars.disable_wmi
}

apply Service "MSSQL: Buffer Manager" {
  import "wmi-service"

  vars.check_mode = "checksql"
  vars.wmi_submode = "buffermanager"
  if (host.vars.mssql_edition == "Express") {
    vars.wmi_arg1 = "MSSQLSQLEXPRESS_MSSQLSQLEXPRESS"
  }

  assign where host.vars.mssql_server
  ignore where host.vars.disable_wmi
}

apply Service "MSSQL: Latch Statistics" {
  import "wmi-service"

  vars.check_mode = "checksql"
  vars.wmi_submode = "latches"
  if (host.vars.mssql_edition == "Express") {
    vars.wmi_arg1 = "MSSQLSQLEXPRESS_MSSQLSQLEXPRESS"
  }

  assign where host.vars.mssql_server
  ignore where host.vars.disable_wmi
}

apply Service "MSSQL: Lock Statistics" {
  import "wmi-service"

  vars.check_mode = "checksql"
  vars.wmi_submode = "locks"
  if (host.vars.mssql_edition == "Express") {
    vars.wmi_arg1 = "MSSQLSQLEXPRESS_MSSQLSQLEXPRESS"
  }

  assign where host.vars.mssql_server
  ignore where host.vars.disable_wmi
}

apply Service "MSSQL: SQL Statistics" {
  import "wmi-service"

  vars.check_mode = "checksql"
  vars.wmi_submode = "sqlstats"
  if (host.vars.mssql_edition == "Express") {
    vars.wmi_arg1 = "MSSQLSQLEXPRESS_MSSQLSQLEXPRESS"
  }

  assign where host.vars.mssql_server
  ignore where host.vars.disable_wmi
}

apply Service "MSSQL: Wait Statistics" {
  import "wmi-service"

  vars.check_mode = "checksql"
  vars.wmi_submode = "waits"
  if (host.vars.mssql_edition == "Express") {
    vars.wmi_arg1 = "MSSQLSQLEXPRESS_MSSQLSQLEXPRESS"
  }

  assign where host.vars.mssql_server
  ignore where host.vars.disable_wmi
}

apply Service "MSSQL: Memory Statistics" {
  import "wmi-service"

  vars.check_mode = "checksql"
  vars.wmi_submode = "memory"
  if (host.vars.mssql_edition == "Express") {
    vars.wmi_arg1 = "MSSQLSQLEXPRESS_MSSQLSQLEXPRESS"
  }

  assign where host.vars.mssql_server
  ignore where host.vars.disable_wmi
}

apply Service "MSSQL: Cache Statistics" {
  import "wmi-service"

  vars.check_mode = "checksql"
  vars.wmi_submode = "cache"
  if (host.vars.mssql_edition == "Express") {
    vars.wmi_arg1 = "MSSQLSQLEXPRESS_MSSQLSQLEXPRESS"
  }

  assign where host.vars.mssql_server
  ignore where host.vars.disable_wmi
}

apply Service "Network Interface: Private" {
  import "wmi-service"

  vars.check_mode = "checknetwork"
  if (!host.vars.private_network_name) {
    vars.wmi_arg1 = "PrivateNetwork-A"
  } else {
    vars.wmi_arg1 = host.vars.private_network_name
  }

  assign where host.vars.os == "Windows"
  ignore where host.vars.disable_wmi
  ignore where host.vars.no_private_iface
}

apply Service "Network Interface: Public" {
  import "wmi-service"

  vars.check_mode = "checknetwork"
  if (!host.vars.private_network_name) {
    vars.wmi_arg1 = "PublicNetwork-A"
  } else {
    vars.wmi_arg1 = host.vars.public_network_name
  }

  assign where host.vars.os == "Windows"
  ignore where host.vars.disable_wmi
  ignore where host.vars.no_public_iface
}

apply Service "Event Log: System" {
  import "wmi-service"

  vars.check_mode = "checkeventlog"
  vars.wmi_arg1 = "system"
  vars.wmi_arg2 = "2"
  vars.wmi_arg3 = "1"
  vars.wmi_warn = "50"
  vars.wmi_crit = "100"

  assign where host.vars.os == "Windows"
  ignore where host.vars.disable_wmi
}

apply Service "Event Log: Application" {
  import "wmi-service"

  vars.check_mode = "checkeventlog"
  vars.wmi_arg1 = "application"
  vars.wmi_arg2 = "2"
  vars.wmi_arg3 = "1"
  vars.wmi_warn = "50"
  vars.wmi_crit = "100"

  assign where host.vars.os == "Windows"
  ignore where host.vars.disable_wmi
}

apply Service "Services" {
  import "wmi-service"

  vars.check_mode = "checkservice"
  vars.wmi_arg1 = "auto"
  vars.wmi_warn = "0"
  vars.wmi_crit = "5"

  assign where host.vars.os == "Windows"
  ignore where host.vars.disable_wmi
}

# Check for a specific process

apply Service "Jenkins Process" {
  import "wmi-service"

  vars.check_mode = "checkproc"
  vars.wmi_submode = "count"
  vars.wmi_arg1 = "jenkins"
  vars.wmi_crit = "1:1"

  assign where host.name == "jenkins"
}