From cca2113d8cf91053f881024491fef621c1ca2a61 Mon Sep 17 00:00:00 2001 From: Frederik Lindenaar <frederik@lindenaar.nl> Date: Sun, 2 Aug 2015 18:17:43 +0200 Subject: [PATCH] added cgi-bin/nagiosstatus.sh --- README.md | 22 ++++++++++++++++++---- cgi-bin/nagiosstatus.sh | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 4 deletions(-) create mode 100755 cgi-bin/nagiosstatus.sh diff --git a/README.md b/README.md index db6eec7..484945d 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ nagios-plugins ============== This repository contains my collection of modified and custom written check -plugins for [Nagios](http://www.nagios.org). +plugins and scripts for [Nagios](http://www.nagios.org). -Most of these are modified versions of standard plugins or very custom so -distributing them through [NagiosExchange](https://exchange.nagios.org/) is +Most of these are very custom solutions or modified versions of standard plugins +so distributing them through [NagiosExchange](https://exchange.nagios.org/) is not really appropriate. I am publishing them separately so that others may benefit from these as well. Use them freely and please let me know is you encounter any issues or require changes. @@ -18,7 +18,7 @@ License, see [below](#license) plugins/check_memory -------------------- -nagios check script to monitor the memory on Linux systems. Due to changes in +Nagios check script to monitor the memory on Linux systems. Due to changes in the output of procps v3.3 (the changelog refers to it as modernizing it), it's output changed and breaks the the check_memory script as shipped with many linux distributions. This version supports both the old and the new format so that @@ -26,6 +26,20 @@ is indifferent of which version of procps (to date) is used. No other changes were made to the script. +cgi-bin/nagiosstatus.sh +----------------------- +Very simplistic CGI-BIN script that checkes whether nagios is still running and +still updating its status. It wil always return an HTTP Status 200 (OK) and a +simple text page with one of the following texts: + - STOPPED - in case the nagios process is not running + - STALLED - in case the nagios status file has not been updated for 5 minutes + - OK - when Nagios is running and updated its status file < 5 minutes ago + +I wrote this script to be used with an external monitoring system, I use it with +the free subscription from [Pingdom](http://www.pingdom.com) to get alerts when +my Nagios monitoring system is no longer reachable. + + <a name="license">License</a> ----------------------------- These scripts, documentation & configration examples are free software: you can diff --git a/cgi-bin/nagiosstatus.sh b/cgi-bin/nagiosstatus.sh new file mode 100755 index 0000000..624b806 --- /dev/null +++ b/cgi-bin/nagiosstatus.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# +# nagiosstatus.sh - simple CGI-BIN script checking the Nagios process status +# +# Version 1.0, latest version, documentation and bugtracker available at: +# https://gitlab.lindenaar.net/scripts/nagios-plugins +# +# Copyright (c) 2015 Frederik Lindenaar +# +# This script is free software: you can redistribute and/or modify it under the +# terms of version 3 of the GNU General Public License as published by the Free +# Software Foundation, or (at your option) any later version of the license. +# +# This script is distributed in the hope that it will be useful but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program. If not, visit <http://www.gnu.org/licenses/> to download it. + +# Default settings for Debian Linux, adjust for your system if necessary +PROGRAM=nagios3 +PIDFILE=/var/run/nagios3/nagios3.pid +STATFILE=/var/cache/nagios3/status.dat +MAXAGE="5 minutes" + +# First output the HTTP header +DATE=`date -R` +cat << EOH +Status: 200 OK +Content-Type: text/plain +Date: $DATE +Expires: $DATE +Last-Modified: $DATE +Cache-Control: no-cache +Connection: close + +EOH + +# Check whether the process is running +if [ -f "$PIDFILE" -a "$PROGRAM" = `ps --no-header -o comm -p \`cat $PIDFILE\`` ]; then + # It's running, check whether the Statfile exists and is recent + if [ -n "$STATFILE" -a -n "$MAXAGE" -a -f "$STATFILE" -a \ + `stat -c %Y $STATFILE` -lt `date +%s -d "$MAXAGE ago"` ]; then + echo STALLED + else + echo OK + fi +else + echo STOPPED +fi + -- libgit2 0.22.2