Forum Discussion
Patrick_Chang_7
Feb 04, 2009Historic F5 Account
HTTP monitoring in GTM
It turns out that in GTM, an HTTP monitor will immediately down a server upon a failure. There is no "you can fail 3 times in a row before I mark you down" in GTM. Thus, I have tried to write a shell script as an EAV for GTM that does the same thing:
!/bin/sh
(c) Copyright 1996-2007 F5 Networks, Inc.
This software is confidential and may contain trade secrets that are the
property of F5 Networks, Inc. No part of the software may be disclosed
to other parties without the express written consent of F5 Networks, Inc.
It is against the law to copy the software. No part of the software may
be reproduced, transmitted, or distributed in any form or by any means,
electronic or mechanical, including photocopying, recording, or information
storage and retrieval systems, for any purpose without the express written
permission of F5 Networks, Inc. Our services are only available for legal
users of the program, for instance in the event that we extend our services
by offering the updating of files via the Internet.
@() $Id: http_monitor_cURL+GET,v 1.0 2007/06/28 16:10:15 deb Exp $
(based on sample_monitor,v 1.3 2005/02/04 18:47:17 saxon)
these arguments supplied automatically for all external monitors:
$1 = IP (IPv6 notation. IPv4 addresses are passed in the form
::ffff:w.x.y.z
where "w.x.y.z" is the IPv4 address)
$2 = port (decimal, host byte order)
Additional command line arguments ($3 and higher) may be specified in the monitor template
This example does not expect any additional command line arguments
Name/Value pairs may also be specified in the monitor template
This example expects the following Name/Vaule pairs:
URI = the URI to request from the server
RECV = the expected response (not case sensitive)
TRY = the number of tries
remove IPv6/IPv4 compatibility prefix (LTM passes addresses in IPv6 format)
IP=`echo ${1} | sed 's/::ffff://'`
PORT=${2}
PIDFILE="/var/run/`basename ${0}`.${IP}_${PORT}.pid"
kill of the last instance of this monitor if hung and log current pid
if [ -f $PIDFILE ]
then
kill -9 `cat $PIDFILE` > /dev/null 2>&1
fi
echo "$$" > $PIDFILE
success=0
n=${TRY}
loop TRY times
for (( i = 1; i <= $n; i++ ))
do
send request & check for expected response
curl -fNsi http://${IP}:${PORT}${URI} | grep -i "${RECV}" 2>&1 > /dev/null
mark node UP if expected response was received
if [ $? -eq 0 ]
then
success=1
fi
sleep 3
done
if [ $success == 1 ]
then
echo "UP"
fi
rm -f $PIDFILE
exit
It seems to work, but I don't quite feel sure about it. Can someone look this over for errors? Thanks.
No RepliesBe the first to reply
Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects