Search Exchange

Search All Sites

Nagios Live Webinars

Let our experts show you how Nagios can help your organization.

Contact Us

Phone: 1-888-NAGIOS-1


Remember Me

Directory Tree


3 votes
Current Version
Last Release Date
Compatible With
  • Nagios 3.x
check_DiskQueueLength.zipcontains bin and source
pnp4nagios.zipcontains the template for pnp4nagios
Network Monitoring Software - Download Nagios XI
Log Management Software - Nagios Log Server - Download
Netflow Analysis Software - Nagios Network Analyzer - Download
This plug-in for Nagios allows you to check the Average Disk Queue Length on a Windows server. The measurement of Average Disk Queue Length is quite accurate.
This plug-in for Nagios allows you to check the Average Disk Queue Length on a Windows server.
To design the plug-in I took a cue from a Microsoft article:
The measurement of Average Disk Queue Length is quite accurate.

To function properly it needs .Net Framework 2.0 or higher.

The package contains the executable and the source code. The package contains the template for pnp4nagios 0.6.x


To get the Average Disk Queue Length the plug-in queries windows through WMI. When the plug-in is executed It performs one query every second (to get the Avg. Disk Queue Length via WMI) for 15 times, then It calculates the average of the 15 values and returns the average to Nagios.
So the duration of the execution is about 15 seconds.
The plug-in return also the performance data.

It works on windows 2003 and windows 2008.


This plug-in runs on a Windows server that is checked by nagios. I used NSClient++ but i think that you can also use check_mk.

To print the help use the following command:

check_DiskQueueLength.exe -h

If you use NSClient++ you have to copy check_DiskQueueLength.exe into the scripts subfolder and then add the current lines into the NSC.ini file:

[NRPE Handlers]

check_DiskQueueLength=scripts\check_DiskQueueLength.exe -u "$ARG1$" -w $ARG2$ -c $ARG3$ --PhysicalDisk

If the lines above do not work then you probably need to edit them according to the version of NSClient that you are using.

On Nagios server you have to define a new command:

define command{
command_name check_DiskQueueLength
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 90 -c check_DiskQueueLength -a "$ARG1$" $ARG2$ $ARG3$

Now on Nagios server you can define a new service:

define service{
use your_service_template
host_name your_server
service_description Avg Disk Queue Length on C:
check_command check_DiskQueueLength!0 C:!4!8


You should set into your service template "your_service_template" the max_check_attempts, normal_check_interval and retry_check_interval as follow:

max_check_attempts 2 ; Re-check the service up to 2 times in order to determine its final (hard) state
normal_check_interval 1 ; Check the service every one minute under normal conditions
retry_check_interval 1 ; Re-check the service every one minutes until a hard state can be determined

I know, a check every minute is not the best but in this way you query the perfomance counter of your Windows server every one minute. This allows you to get a good Measurement!!!!

For any questions or concerns please contact me:

Alan Pipitone.
Reviews (1)
bymacthunder, September 18, 2013
Works perfect!

With the newest NSC++ you must use the follwing

[/settings/external scripts]
allow arguments=1

[/settings/external scripts/scripts]
check_DiskQueueLength=scriptscheck_DiskQueueLength.exe -u "$ARG1$" -w $ARG2$ -c $ARG3$ --PhysicalDisk