Forum Discussion

ahmetnuman's avatar
ahmetnuman
Icon for Nimbostratus rankNimbostratus
Jul 08, 2021

HTTP Health Monitor in Receive Strings with Regular Expressions

Hello Community,

 

I need to monitor http servers with regular expressions in the http receive strings. If receive string exact match with "Healthy" word then F5 send the requests to the servers.

 

list ltm monitor http Healthy

{

   adaptive disabled

   defaults-from http

   destination 10.0.1.20:http

   interval 5

   ip-dscp 0

   recv \bHealthy\b

   recv-disable none

   send "GET / HTTP/1.1\r\nHost: 10.0.1.20\r\nConnection: Close\r\n\r\n"

   time-until-up 0

   timeout 16

}

 

Server up and running and regex is fine but pool members are down.

 

I need some help in this topic.

 

Thank You / Best Regards

 

 

  • Hi Ahmet,

    You can use Healthy for one string. You don't need regular expression.

    Node and pool have separate monitors?

    Can you check the response returned from the default directory on the server via curl?

    curl -kv "http://10.0.1.20" 

    If the receive string is not in first 5120 bytes, the pool member is marked down.

    Using regular expressions in a health monitor receive string

    https://support.f5.com/csp/article/K5917

    Content length limits for HTTP and HTTPS health monitors

    https://support.f5.com/csp/article/K3451

    • ahmetnuman's avatar
      ahmetnuman
      Icon for Nimbostratus rankNimbostratus

      Hi Enes,

       

      I have to use regex in receive string because, when service is not ready server is returning "Unhealty" string to the client. If i use just string in the receive string, LTM will see "healty" in the response, then pool member will be up.

       

      Best regards.

    • ahmetnuman's avatar
      ahmetnuman
      Icon for Nimbostratus rankNimbostratus

      Hi Again ,

       

      I solve this problem with creating two monitor and assign them pool with "Availability Requirement At least 2 Health Monitor(s)".

       

      Firs monitor condition is :

      Receive String : Unhealth

      Reverse : Yes

       

      Second monitor condition is:

      Receive String : Health

       

      Best Regards.

  • regex in iRules and monitors are slightly modified, and the \b might not be doing what you think it should. Details on monitor regex here. You can also see what is happening by logging the debug details of the monitor:

    tmsh modify sys db bigd.debug value enable

    Just make sure that you disable when you have what you need.

    • ahmetnuman's avatar
      ahmetnuman
      Icon for Nimbostratus rankNimbostratus

      Hello Jason,

       

      I solved my problem using with two health monitor as i mention upper. Unfourtunately regex did not work properly as i expected.

       

      Best Regards.