check_wmi.pl first appeared on exchange.nagios.org. It was created by Matthieu Thibault. It was a great start to agent-less checking of Windows systems using the WMI client, wmic from Zenoss.

check_wmi_plus uses the Windows Management Interface (WMI) to check for common services (cpu, disk, sevices, eventlog…) on Windows machines. It requires the open source wmi client for Linux.

On his site (now no longer in existence – old link was http://www.thibault.info/node/2), Matthieu went through the steps required to get all the prerequisites sorted and start using check_wmi. A copy of this information is available here.

After heavily modifying check_wmi myself, to bring the functionality closer to what is currently provided by NSClient++, I submitted an entry on Matthieu’s site with a link to my version. After a couple of weeks he had still not responded. I then set about totally rewriting check_wmi and adding lots of functionality and hence called in check_wmi_plus.

The major changes over Matthieu’s original version are:

  • ensured calculations using % are consistent and correct
  • removed the dependency on the Switch module
  • moved all the checks into their own subroutines
  • fixed a lot of variable initialisation cases to ensure error free operation running under Nagios’ embedded perl
  • significantly reworked the help message to show the new options
  • checkdrivesize now can check multiple or all the drives on a system in a single check
  • checkeventlog now outputs a much easier to read format and takes advantage of Nagios’ multi-line plugin output capability
  • checkservice can now check multiple or all services on a system in a single check
  • added checkprocess which can check for the presence of one or more processes in a single check
  • checkcpu now takes uses the raw performance counters to more accurately calculate cpu utilisation over a timeperiod (rather than just the single point values)
  • added checkuptime
  • added checkfilesize
  • added checkfoldersize
  • added checkfileage
  • added checknetwork
  • added checkcpuq – to check the processor queue length (which may be a good indicator of overall system load)
  • introduced an optional BYTEFACTOR so that you can choose if you want to use 1000 byte or 1024 byte per kilobyte etc
  • most checks can now specify a warning/critical levels and using them is optional
  • all usage of warning/critical levels conforms to the more flexible standard nagios plugin definition
  • you can use multiple warning/critical specifications to make complex criteria
  • most checks return performance data
  • added an ini file to make the plugin extensible ie the user can write their own checks (and hopefully share them back on this site)

This list is not kept up to date. Refer to the Change Log for more information.