On Thu, May 8, 2008 at 10:11 AM, Ralph Mitchell <ralphmitchell at gmail.com> wrote:
On Thu, May 8, 2008 at 1:01 AM, Rolf Schrittenlocher < schritte at hebis.uni-frankfurt.de> wrote:
Hi Ralph,
I don't think there is something like that in hobbit. But you might want to create a custom script including something like (perl)
Aktuelles Datum
$t0 = time; $ZEITSTEMPEL = localtime($t0);
##################################################################
Check Website
##################################################################
system("wget -o /dev/null -O /tmp/ \"$REQUEST\" 2>/dev/null");
Bestimmung des Ergebnissstatuses aus der Antwortzeit.
$elapsed = time - $t0; if ( $elapsed <= 6 ){ $STATUS = $OPTIMAL; } elsif ( $elapsed <= 12 ){ $STATUS = $WARNUNG; } else { $STATUS = $FEHLER; }
Thanks for that. If I have to I'll do something similar in bash with curl, as I'm more familiar with that:
elapsed=
curl -s -S -L -w '%{time_total}' http://server.domain.comwhich gives me time in seconds, with millisecond resolution.
I'd like to get the graphs as well, without having to fiddle with the message format.
Ralph Mitchell
OK, so it wasn't as hard as I thought to replicate the http built-in test. This script does everything I need right now, though it could do with refining:
#!/bin/bash
Format in bb-hosts: 1.2.3.4 server.domain.com # httpplus:warn:alert
warn and alert values are expressed in milliseconds, just because we can
bbhostgrep httpplus\* | while read line do set $line TESTHOST=$2
httpplus=`echo $line | $SED -e 's/^.* httpplus://' -e 's/ .*//' -e 's/:/
/g'` set $httpplus WARNVAL=$1 ALERTVAL=$2
URL="http://$TESTHOST/"
res=`/usr/bin/curl -I -s -S -w 'Seconds:\t%{time_total}' $URL`
ret=$?
elapsed=`echo "$res" | $GREP Seconds: | $SED -e 's/^.* //'`
elapsed=`echo $elapsed \* 1000 | /usr/bin/bc | $SED -e 's/\..*//'`
if [ "$elapsed" -gt "$ALERTVAL" ]; then
COLOR=red
STATUS="Server too slow"
elif [ "$elapsed" -gt "$WARNVAL" ]; then
COLOR=yellow
STATUS="Server response degraded"
else
COLOR=green
STATUS="OK"
fi
MACHINE=`echo $TESTHOST | $SED -e 's/\./,/g'`
LINE="status $MACHINE.http $COLOR `date`: $STATUS
&$COLOR $URL - $STATUS
$res
WARN at ${WARNVAL}ms, ALERT at ${ALERTVAL}ms"
$BB $BBDISP "$LINE"
done
It assumes that it's OK to use the hostname field for the url, and picks up the WARN and ALERT times from the "httpplus" tag in the bb-hosts file. It also ignores any curl errors, such as timeout due to the server not responding.
Ralph Mitchell