A nice write up on using and crimping wire ferrules.
Thursday, August 30, 2018
Wednesday, August 15, 2018
Nagios plugin for monitoring last modified time stamps of website content
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
}
Subscribe to:
Posts (Atom)