For more information regarding the security incident at F5, the actions we are taking to address it, and our ongoing efforts to protect our customers, click here.

Forum Discussion

sajin_80891's avatar
sajin_80891
Icon for Nimbostratus rankNimbostratus
May 18, 2013

Need a new HTTP health monitor configured for POST inplace of XML script.

Could someone please help me to create an HTTP application health monitor to send a POST request that should similar working as below XML script. This is eating huge amount of CPU on my LTM pairs.

 

 

That's why I decided to change the monitor, Post I created a new monitor with Send string:

 

POST /cgi-bin/brb.exe HTTP/1.1\r\nHost: \r\nConnection: Close\r\n\r\nRezViewAmfTestRQ User TokenVER||0

 

 

&

 

 

Recieve string:

 

RESPONSE.rver.RCD

 

 

Interval: 60

 

Timeout: 181

 

 

Unfortunately it doesn't work, Some of the pool status is coming online after sometime but not for all.

 

 

Below is the post pinger XML script which we are using for monitoring.

 

 

cat post_pinger

 

=======================================================================================================

 

 

!/bin/sh

 

 

 

 

F5 Networks and BIG/ip(c) Copyright

 

 

No part of the software may be reproduced or transmitted in any form or by

 

any means, electronic or mechanical, for any purpose, without express

 

written permission of F5 Networks, Inc. It is against the law to copy the

 

software. No part of this program may be reproduced or transmitted in any

 

form or by any means, electronic or mechanical, including photocopying,

 

recording, or information storage and retrieval systems, for any purpose

 

other than the purchasers personal use, without the express written

 

permission of F5 Networks, Inc. Copyright (c) 1999 BIG/ip Software. All

 

rights reserved. Our services are only available for legal users of the

 

program for instance in case we extend our services by offering updating of

 

files through Internet.

 

 

 

 

 

these arguments supplied automatically for all external pingers:

 

$1 = IP (nnn.nnn.nnn.nnn notation or hostname)

 

$2 = port (decimal, host byte order)

 

$3 and higher = additional arguments

 

 

In this sample script, $3 is the regular expression

 

 

 

pidfile="/var/run/pinger.$1..$2.pid"

 

 

if [ -f $pidfile ]

 

then

 

kill -9 `cat $pidfile` > /dev/null 2>&1

 

fi

 

 

node_ip=`echo $1 | sed 's/::ffff://'`

 

 

echo "$$" > $pidfile

 

 

/usr/bin/monitors/post "http://$node_ip:$2/cgi-bin/brb.exe" < /usr/bin/monitors/pegs_xmlgw.txt | grep RESPONSE.rver.RCD

 

 

status=$?

 

if [ $status -eq 0 ]

 

then

 

echo "up"

 

fi

 

 

rm -f $pidfile

 

================================================================================================================

 

 

 

 

 

cat xmlgw.txt

 

+++++++++++++

 

 

RezViewAmfTestRQ User TokenVER||0

 

================================================================================================================

 

6 Replies

  • your health monitor setting seems correct to me.

     

     

    have you run tcpdump to see why some did not work?
  • It does work for all pools, but only the reason I want to change this because it's utilizing high CPU on my F5 pairs . My CPU utilization is continuing to 100% when this monitor is in place.
  • It does work for all pools, but only the reason I want to change this because it's utilizing high CPU on my F5 pairs . sorry i didn't say clearly. actually, i meant capturing packet when using the http health monitor.
  • I didn't capture the packet, but just took the qkview and the XML process was always had been in to top of the utilization process. If I'm capturing the packet, what should be source & destination I can write as this monitor is applied to almost 22 pools.
  • If I'm capturing the packet, what should be source & destination I can write as this monitor is applied to almost 22 pools.health monitor uses non-floating selfip. so, you may capture the one which does not work.

     

     

    e.g.

     

    tcpdump -nni 0.0:nnn -s0 -w /var/tmp/output.pcap host x.x.x.x and host y.y.y.y and port zzz

     

    x.x.x.x is non-floating selfip

     

    y.y.y.y is pool member ip

     

    zzz is pool member port number
  • Three questions:

     

     

    1. I don't believe /usr/bin/monitors/post is a built-in command or script. Can you elaborate on its contents?

     

     

    2. If you run /usr/bin/monitors/post "http://$node_ip:$2/cgi-bin/brb.exe" < /usr/bin/monitors/pegs_xmlgw.txt without the grep, does it return a lot of data?

     

     

    3. Is the content of xmlgw.txt static? If so, perhaps you could still apply this monitor through the built-in HTTP monitor (via TMOS) and perhaps get better performance (or at least better memory/cpu utilization).