Linux

Check /etc/init.d/$script_name status

Description:

This is a nagios plug-in to check the output or exit status or an application (designed for /etc/init.d scripts, but could work with any script).
If you just call it with a -s /path/script it will run the script with a ‘status’ argument and check the output for the pattern ‘is running’

Current Version

1.0

Last Release Date

2011-06-13

Compatible With

  • Nagios 2.x
  • Nagios 3.x

License

GPL


Project Files
Project Notes
This is a nagios plug-in to check the output or exit status or an application (designed for /etc/init.d scripts, but could work with any script). If you just call it with a -s /path/script it will run the script with a 'status' argument and check the output for the pattern 'is running' If you want to run this on a remote host you need to do it via nrpe, because we can not run the /etc/init.d script remotely without a secure connection. Copy the script to the remote host first, then add a line like this to your nrpe.cfg command[check_httpd]=/usr/lib/nagios/plugins/check_exit_status.pl -s /etc/init.d/httpd -r Don't forget to add to sudoers: nrpe ALL=(root) NOPASSWD: /etc/init.d/* status Local host example: Original program: /etc/init.d/httpd Will get called like so: /etc/init.d/httpd status Normal output of script is: httpd (pid 15780) is running... Output of check_exit_status.pl -s /etc/init.d/httpd: /etc/init.d/httpd OK - httpd (pid 15780) is running... Output if not running (check_exit_status.pl -s /etc/init.d/tcsd): /etc/init.d/tcsd CRITICAL - tcsd is stopped Options: -h Print detailed help screen -s 'FULL PATH TO SCRIPT' (required) This is the script to run, the script is designed to run scripts in the /etc/init.d dir (but can run any script) and will call the script with a 'status' argument. So if you use another script make sure it will work with /path/script status, example: /etc/init.d/httpd status -e This is the "exitstaus" flag, it means check the exit status code instead of looking for a pattern in the output of the script. -p 'REGEX' This is a pattern to look for in the output of the script to confirm it is running, default is 'is running', but not all init.d scripts output (iptables), so you can specify an arbitrary pattern. All patterns are case insensitive. -n This is the "NOT" flag, it means not the -p pattern, so if you want to make sure the output of the script does NOT contain -p 'REGEX' -r This is the "ROOT" flag, it means run as root via sudo. You will need a line in your /etc/sudoers file like: nagios ALL=(root) NOPASSWD: /etc/init.d/* status -o This is the "SUPPRESS OUTPUT" flag. Some programs have a long output (like iptables), this flag suppresses that output so it is not printed as a part of the nagios message.
Reviews (6) Add a Review
Works better than I hoped!
by Tony-Caffe, May 31, 2014

Thanks for the thorough explanation of setting it up. I thought I can add some more to it to help. - First for CentOS 6.5 I had to comment out the option in visudo 'Defaults requiretty' so that nrpe can become root thru script. - Here is my config to help any others. I monitor Syslog-ng client and server remotely using the nrpe on each local machine. # 'check_syslog-ng' command definition define command{ command_name check_syslog-ng command_line $USER1$/check_exit_status.pl -s /etc/init.d/syslog-ng -r } define service { host_name prod-db-backup service_description check_syslog-ng is_volatile 1 check_command check_nrpe!check_syslog-ng max_check_attempts 5 normal_check_interval 15 retry_check_interval 1 check_period 24x7 notification_interval 60 notifications_enabled 1 notification_period 24x7 notification_options w,u,c,r,f contact_groups admingroup stalking_options w,u,c } nrpe.cfg: command[check_syslog-ng]=/usr/lib64/nagios/plugins/check_exit_status.pl -s /etc/init.d/syslog-ng -r Reloaded Nagios and it worked just fine. No need for ARG or -w -c. If status is stopped, service alerts, if status is running, it stays green and checks. Thank you again.



perl exec on centos 6.4
by ihasn, June 30, 2013

add -w to !#/usr/bin/perl to allow for execution when you see "-bash: ./check_exit_status.pl: /usr/bin/perl^M: bad interpreter: No such file or directory ". should read as "!#/usr/bin/perl -w"



For Remote Host
by SushilR, July 31, 2012

Hi, Please let me know how to use this plugin for remote host. as i am using it, its showing me /etc/init.d/httpd CRITICAL - httpd dead but subsys locked ERROR Regards Sushil



dead but subsys locked
by vincent.qeong, July 31, 2012

Hi.. i want to ask. i've already implement this plugin. when i run from the monitored server, it runs normally. but when i run from my nagios server, it has output like this (example httpd): "/etc/init.d/httpd CRITICAL - httpd dead but subsys locked" need advice, thanks



Is this possible?
by cvanaxel, March 31, 2012

Can u make this possible to check for other host. With -H and an -c check. -H = host -c = community.



Nice plugin
by taich, November 30, 2011

I think line 80 will not work properly. It should be: 'sudo -u root' not 'sudo -n'. Nevertheless a very nice plugin. I like it.



Add a Review

You must be logged in to submit a review.

Thank you for your review!

Your review has been submitted and is pending approval.

Recommend

To:


From:


Thank you for your recommendation!

Your recommendation has been sent.

Project Stats
Rating
4.3 (9)
Favorites
2
Views
109,519