[hobbit] conn test

Rolf Schrittenlocher schritte at hebis.uni-frankfurt.de
Fri Feb 6 08:03:31 CET 2009


Hi Christian,

we have something similiar for the tests of OPAC reponses. Shouldn't be 
too difficult to adapt.

kind regards
Rolf

#!/usr/bin/perl
#
##################################################################
# Parameter
##################################################################
# Parameter fuer Testabfrage an PICA-Webopac
$REQUEST = "<URL>";

$BB_DISP = "<bb-servername>"; # BB-Server zur Anzeige
$BB_PORT=1984;          # Portnummer von BB
$THISHOST=$ENV{MACHINE};
$INDENT="opc4";         # Testkennung

# Art der Meldung mit Gueltigkeitsdauer in Minuten
# Wenn nach x Minuten keine neue Nachicht kommt meckert BB
$GUELTIG="status+20";

# Aktuelles Datum
$t0          = time;
$ZEITSTEMPEL = localtime($t0);

$FEHLER  = "red";
$WARNUNG = "yellow";
$OPTIMAL = "green";


##################################################################
# WEBOPAC Testen
##################################################################
#
system("wget -o /dev/null -O /tmp/opc4 \"$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;
}


##################################################################
# TCP Verbindung (ToBB) oeffnen und Text versenden.
##################################################################
use Socket;
$SIG{'INT'} = 'interrupted';

sub unbuffer {
    local($channel) = @_;
    local($oldchannel);

    $oldchannel = select($channel);
    $| = 1;
    select($oldchannel);
}

sub interrupted {
    print STDERR "\nClosing connection to peer (interrupt)\n";
    close(ToBB);
    exit 1;
}

# Ermittle IP-Adresse des Servers aus Hostnamen
($name, $aliases, $type, $len, @srvaddr) = gethostbyname($BB_DISP);
$sockaddr = 'S n a4 x8';
$server = pack($sockaddr, &AF_INET, $BB_PORT, $srvaddr[0]);
# (1) TCP socket anfordern
socket(ToBB, &AF_INET, &SOCK_STREAM, 0) ||
    die "Cannot create socket: $!\n";
# (2) Verbindung aufbauen
connect(ToBB, $server) ||
    die "Cannot connect: $!\n";
# (3) Verbindung ist hergestellt
print STDERR "Connected to $BB_DISP, port #$BB_PORT\n";
# kein I/O buffering auf dem socket
unbuffer(ToBB);

# Versenden der Nachicht.
# 1. Zeile: Statusinfos und Ueberschrift
#    wird '<h3>' formatiert.
# 2..n. Zeile: Erklaerender Text
#    wird als '<pre>' ausgegeben.

print ToBB "$GUELTIG $THISHOST.$INDENT $STATUS $ZEITSTEMPEL\n";
print ToBB "Verbindungstest OPC4 von $THISHOST.\n";
print ToBB "$EXTAMSG\n";
print ToBB "Dauer = $elapsed\n";
close (ToBB);

# ENDE #

> Hi all,
>
> I want to set an alarm when the connection time of the conn test to a server exceeds i.e.
> 50 ms.
>
> Is there a possibility for this?
>
> Thanx 
>
> Chris
>
>   


-- 
Mit freundlichen Gruessen
Rolf Schrittenlocher

Bitte beachten Sie die neue Emailadresse!

HeBIS-IT, Senckenberganlage 31, 60054 Frankfurt
Tel: (49) 69 - 798 28908   Fax: (49) 69 798 28817
LBS: lbs-f at mlist.uni-frankfurt.de
Persoenlich: schritte at hebis.uni-frankfurt.de 




More information about the Xymon mailing list