On Thu, May 8, 2008 at 10:11 AM, Ralph Mitchell <user-00a5e44c48c0@xymon.invalid>
wrote:
On Thu, May 8, 2008 at 1:01 AM, Rolf Schrittenlocher <
user-ea9d95bffcf0@xymon.invalid> 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.com`
which 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