[hobbit] http response time

Ralph Mitchell ralphmitchell at gmail.com
Fri May 9 22:45:17 CEST 2008


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.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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.xymon.com/pipermail/xymon/attachments/20080509/b9a7fb75/attachment.html>


More information about the Xymon mailing list