summaryrefslogtreecommitdiffstats
path: root/plugins-scripts/check_log.sh
diff options
context:
space:
mode:
Diffstat (limited to 'plugins-scripts/check_log.sh')
-rwxr-xr-xplugins-scripts/check_log.sh58
1 files changed, 25 insertions, 33 deletions
diff --git a/plugins-scripts/check_log.sh b/plugins-scripts/check_log.sh
index a1bfb486..8653a5e1 100755
--- a/plugins-scripts/check_log.sh
+++ b/plugins-scripts/check_log.sh
@@ -1,6 +1,6 @@
1#!/bin/sh 1#!/bin/sh
2# 2#
3# Log file pattern detector plugin for Nagios 3# Log file pattern detector plugin for monitoring
4# Written by Ethan Galstad (nagios@nagios.org) 4# Written by Ethan Galstad (nagios@nagios.org)
5# Last Modified: 07-31-1999 5# Last Modified: 07-31-1999
6# 6#
@@ -29,15 +29,15 @@
29# 29#
30# If you use this plugin make sure to keep the following in mind: 30# If you use this plugin make sure to keep the following in mind:
31# 31#
32# 1. The "max_attempts" value for the service should be 1, as this 32# 1. The "max_attempts" value for the service should be 1, as this will
33# will prevent Nagios from retrying the service check (the 33# prevent the monitoring system from retrying the service check (the
34# next time the check is run it will not produce the same results). 34# next time the check is run it will not produce the same results).
35# 35#
36# 2. The "notify_recovery" value for the service should be 0, so that 36# 2. The "notify_recovery" value for the service should be 0, so that the
37# Nagios does not notify you of "recoveries" for the check. Since 37# monitoring system does not notify you of "recoveries" for the check.
38# pattern matches in the log file will only be reported once and not 38# Since pattern matches in the log file will only be reported once and
39# the next time, there will always be "recoveries" for the service, even 39# not the next time, there will always be "recoveries" for the service,
40# though recoveries really don't apply to this type of check. 40# even though recoveries really don't apply to this type of check.
41# 41#
42# 3. You *must* supply a different <old_file_log> for each service that 42# 3. You *must* supply a different <old_file_log> for each service that
43# you define to use this plugin script - even if the different services 43# you define to use this plugin script - even if the different services
@@ -57,21 +57,13 @@
57 57
58# Paths to commands used in this script. These 58# Paths to commands used in this script. These
59# may have to be modified to match your system setup. 59# may have to be modified to match your system setup.
60# TV: removed PATH restriction. Need to think more about what this means overall
61#PATH=""
62
63ECHO="/bin/echo"
64GREP="/bin/egrep"
65DIFF="/bin/diff"
66TAIL="/bin/tail"
67CAT="/bin/cat"
68RM="/bin/rm"
69CHMOD="/bin/chmod"
70TOUCH="/bin/touch"
71 60
72PROGNAME=`/bin/basename $0` 61PROGNAME=`/bin/basename $0`
73PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'` 62PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'`
74REVISION="@NP_VERSION@" 63REVISION="@NP_VERSION@"
64PATH="@TRUSTED_PATH@"
65
66export PATH
75 67
76. $PROGPATH/utils.sh 68. $PROGPATH/utils.sh
77 69
@@ -86,7 +78,7 @@ print_help() {
86 echo "" 78 echo ""
87 print_usage 79 print_usage
88 echo "" 80 echo ""
89 echo "Log file pattern detector plugin for Nagios" 81 echo "Log file pattern detector plugin for monitoring"
90 echo "" 82 echo ""
91 support 83 support
92} 84}
@@ -167,10 +159,10 @@ done
167# If the source log file doesn't exist, exit 159# If the source log file doesn't exist, exit
168 160
169if [ ! -e $logfile ]; then 161if [ ! -e $logfile ]; then
170 $ECHO "Log check error: Log file $logfile does not exist!\n" 162 echo "Log check error: Log file $logfile does not exist!"
171 exit $STATE_UNKNOWN 163 exit $STATE_UNKNOWN
172elif [ ! -r $logfile ] ; then 164elif [ ! -r $logfile ] ; then
173 $ECHO "Log check error: Log file $logfile is not readable!\n" 165 echo "Log check error: Log file $logfile is not readable!"
174 exit $STATE_UNKNOWN 166 exit $STATE_UNKNOWN
175fi 167fi
176 168
@@ -179,8 +171,8 @@ fi
179# the old diff file and exit 171# the old diff file and exit
180 172
181if [ ! -e $oldlog ]; then 173if [ ! -e $oldlog ]; then
182 $CAT $logfile > $oldlog 174 cat $logfile > $oldlog
183 $ECHO "Log check data initialized...\n" 175 echo "Log check data initialized..."
184 exit $STATE_OK 176 exit $STATE_OK
185fi 177fi
186 178
@@ -193,26 +185,26 @@ if [ -x /bin/mktemp ]; then
193else 185else
194 tempdiff=`/bin/date '+%H%M%S'` 186 tempdiff=`/bin/date '+%H%M%S'`
195 tempdiff="/tmp/check_log.${tempdiff}" 187 tempdiff="/tmp/check_log.${tempdiff}"
196 $TOUCH $tempdiff 188 touch $tempdiff
197 $CHMOD 600 $tempdiff 189 chmod 600 $tempdiff
198fi 190fi
199 191
200$DIFF $logfile $oldlog | $GREP -v "^>" > $tempdiff 192diff $logfile $oldlog | grep -v "^>" > $tempdiff
201 193
202# Count the number of matching log entries we have 194# Count the number of matching log entries we have
203count=`$GREP -c "$query" $tempdiff` 195count=`grep -c "$query" $tempdiff`
204 196
205# Get the last matching entry in the diff file 197# Get the last matching entry in the diff file
206lastentry=`$GREP "$query" $tempdiff | $TAIL -1` 198lastentry=`grep "$query" $tempdiff | tail -1`
207 199
208$RM -f $tempdiff 200rm -f $tempdiff
209$CAT $logfile > $oldlog 201cat $logfile > $oldlog
210 202
211if [ "$count" = "0" ]; then # no matches, exit with no error 203if [ "$count" = "0" ]; then # no matches, exit with no error
212 $ECHO "Log check ok - 0 pattern matches found\n" 204 echo "Log check ok - 0 pattern matches found"
213 exitstatus=$STATE_OK 205 exitstatus=$STATE_OK
214else # Print total matche count and the last entry we found 206else # Print total matche count and the last entry we found
215 $ECHO "($count) $lastentry" 207 echo "($count) $lastentry"
216 exitstatus=$STATE_CRITICAL 208 exitstatus=$STATE_CRITICAL
217fi 209fi
218 210