Inspired by this plugin and this discussion, I have written a nagios plugin for monitoring the "Last-Modified" time of content on a website. The script uses curl to retrieve the header information and then warns if the content has not been updated within a specified period of time.
I developed this plugin for checking that data & satellite plots on our aurora alert site were being refreshed at the expected intervals.[james@orchid tmp]$ curl -s -I http://auroraalert.otago.ac.nz/aurora/Suomi_NPP_DNBNCC_night_highresimage.png
HTTP/1.1 200 OK
Date: Tue, 14 Aug 2018 23:36:08 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Tue, 14 Aug 2018 05:56:06 GMT
ETag: "15cfb4-5735edda8345f"
Accept-Ranges: bytes
Content-Length: 1429428
Content-Type: image/png
Nagios plugin shell script:
#!/usr/bin/env bash
DEFAULT_WARN_SECONDS=600
DEFAULT_CRIT_SECONDS=1200
while getopts 'hp:c:w:' option; do
case $option in
h) help=1;;
p) path=$OPTARG;;
c) crit=$OPTARG;;
w) warn=$OPTARG;;
esac
done
if [ -n "$help" ] || [ -z "$path" ]; then
echo "usage: $0 -p [path (required)] -w [warning threshhold seconds] -c [critical threshold seconds]" 1>&2
exit 3
fi
if [ -z "$warn" ]; then
warn=$DEFAULT_WARN_SECONDS
fi
if [ -z "$crit" ]; then
crit=$DEFAULT_CRIT_SECONDS
fi
modificationTimeStamp() {
curl -s -I HEAD $path |
awk '/Last-Modified/{ date=""; for(i=2;i<=NF;++i) date=(date " " $i); print date;}' |
xargs -I{} date -d {} +"%s"
}
#seconds=$(($(date +'%s') - $(stat --format='%Y' $path)))
seconds=$(($(date +'%s') - $(modificationTimeStamp) ))
if [ $seconds -gt $crit ]; then
echo "CRITICAL: $path was last modified $seconds seconds ago"
exit 2
elif [ $seconds -gt $warn ]; then
echo "WARNING: $path was last modified $seconds seconds ago"
exit 1
else
echo "OK: $path was last modified $seconds seconds ago"
exit 0
fi
Add it to the command.cfg
#check last modified time on remote URLExample service entry
define command{
command_name check_urlmtime
command_line $USER1$/check_urlmtime -p $ARG1$ -w $ARG2$ -c $ARG3$
}
define service{
use generic-service ; Inherit default values from a template
host_name auroraalert
service_description Soumi NPP satellite image
check_command check_urlmtime!"http://auroraalert.otago.ac.nz/aurora/Suomi_NPP_DNBNCC_night_highresimage.png"!86400!172800
}
No comments:
Post a Comment