Xymon Mailing List Archive search

http response time

list Ralph Mitchell
Fri, 9 May 2008 15:45:17 -0500
Message-Id: <user-a7cba36f2e36@xymon.invalid>

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