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

Current Version
Last Release Date
Compatible With
  • Nagios 2.x
  • Nagios 3.x
check_bind.shThe plugin (v1.3)
check_bind.phpPNP Template
Network Monitoring Software - Download Nagios XI
Log Management Software - Nagios Log Server - Download
Netflow Analysis Software - Nagios Network Analyzer - Download
sh compliant script to check whether BIND is running and to get the performance data via rndc stats (PNP Template included)
Description is a Nagios plugin to check the bind daemon whether it's running via its pid file and then gets the statistics via rndc stats. The user that run the script needs the ability to 'sudo rndc stats'! The timeframe in which the rndc stats output is updated is controlled by the check interval. The output shows amount of requests of various types occured during the last check interval. The script itself is written sh-compliant and free software under the terms of the GPLv2 (or later).

BIND9 versions 9.3 and 9.5 or greater are now supported as well. I didn't have the time yet to do more testing. It works for me under Gentoo with BIND 9.4 and 9.6 and under Debian Lenny with BIND 9.5 as well. If something doesn't work, please contact me via or via a blog comment at []. Thanks in advance.
I finally solved the mawk/gawk problem with a little help from a user of this plugin. It should run now with either gawk or mawk without any problems.

-h/--help Output -p/--path_pid /var/run/named -n/--name_pid -r/--path-rndc /usr/sbin -s/--path-stats /var/bind -V/--bind-version 9.3/9.4/9.5 -N

Path where the pid file for bind is stored. You might need to alter this to your distribution's way of dealing with pid files. Default is: /var/run/named
Name of the pid file. Default is:
Path where the rndc binary is located. Default is: /usr/sbin
Path where the named.stats file is stored. Default is: /var/bind
Path where the temporary named.stats excerpt is being stored. Default is: /tmp
Specifies the bind version you're running. Currently there's BIND 9.3, 9.4 and 9.5 supported. Default is: 9.4
If you don't want that the script checks for the pid file, use this option. Default is: off

Output example
user@host ~ $ ./
Bind9 is running. 640 successfull requests, 0 referrals, 3 nxdomains since last check. | 'success'=640 'referral'=0 'nxrrset'=236 'nxdomain'=3 'recursion'=1 'failure'=0 'duplicate'=0 'dropped'=0

* 2009-05-20
* Bugfix for more awk compliance
* 2009-05-14
* Small bugfix for two exit codes
* 2009-05-03
* The plugin now supports BIND versions 9.3 and 9.5+.
* The named.stats file is now initially parsed via awk and the excerpts are being copied to a temp directory for further use instead of frequently tail'ing the named.stats
* The temporary directory is configurable via -t/--path-tmp as well
* The path to the rndc binary is now configurable via -r/--path-rndc
* You're now able to deactivate the pid check via -N/--no-pid-check

* 2009-04-06
* Did some slight debugging on the option parsing. The -s/--path-stats option was missing. Should be working now just fine.
Reviews (4)
Just my +2 Cents. The script doesnt' truncate the stats file from rndc stats command. As result after several years I noticed that /var/named/data/named_stats.txt increased to 1,5G and when the script within icinga tries to run this script it take about 2 minutes before tac command load all the file into the memory to perform awk action. Of course icinga tries to kill the script after 60 seconds timeout and produces error. I have modified a script a little a bit, so the named statistics file will be purged everytime after is executed:

[root@dns2 ~]# diff -u /usr/lib64/nagios/plugins/site/privileged/ ./
--- /usr/lib64/nagios/plugins/site/privileged/ 2021-11-08 15:20:32.365380038 +0100
+++ ./ 2021-11-09 13:44:52.301734327 +0100
@@ -143,6 +143,7 @@
sudo chroot $path_chroot $path_rndc/rndc stats
+ test -f $path_stats/named_stats.txt && truncate --size 0 $path_stats/named_stats.txt
sudo $path_rndc/rndc stats
This check calls sudo to run /usr/sbin/rndc stats. This may be an issue if "Defaults requiretty" is set in /etc/sudoers, and you run the command through sh without opening a session at the remote host.

To resolve this, either remove "Defaults requiretty" from /etc/sudoers, or modify the script so that it doesn't call sudo.
bysaniks, December 2, 2012
Works with BIND 9.6.-ESV-R5-P1
To work on FreeBSD replace "tac" in line 151 to "tail-r".
bydylan22, December 1, 2011
1 of 1 people found this review helpful
The script required a few tweeks to work. 1-put nagios in the named group, 2-add "sudo rndc stats"

That was it and it worked fine.

I wish there was an option to send a test query though... how about --test-query

That would send an alert because the query failed. (Having a PID doesn't always mean bind is working properly.)