Forum Discussion

Bhavik_1402's avatar
Bhavik_1402
Icon for Nimbostratus rankNimbostratus
Apr 27, 2021

HTTP Health Monitor in LTM

Hi Folks,

 

We've following requirement to configure HTTP health monitor and this is what we need to implement.

 

Type Send Receive

HTTP GET /Sample/healthchecksimple HTTP/1.1 200|OK

HTTP GET /Sample123/servlet/fcs/ping HTTP/1.1 200|System Current Time

HTTP GET /sample456/test-alive HTTP/1.1 200|OK

HTTP GET /Sample789/manager?query=monitoring HTTP/1.1 302

HTTP GET /Sample459/monitoring/healthcheck HTTP/1.1 200|OK

HTTP GET /Sample324/servlet/fcs/ping HTTP/1.1 200|System Current Time

HTTP GET /Sample438/monitoring/healthcheck HTTP/1.1 200|OK

HTTP GET /healthcheck HTTP/1.1 200|OK

 

Would like to know if this is correct syntax for Send and Receive string or need to modify? we need to associate this to pool.

 

 

 

  • this knowledge article explain how to build send strings quite well: https://support.f5.com/csp/article/K2167

    so you first send will end up something like this, where the Host part it optional

    GET /Sample/healthchecksimple HTTP/1.1\r\nHost: host.domain.com\r\nConnection: Close\r\n\r\n

    as for your receive what are trying to get exactly? HTTP/1.1 200 or OK ? specially those seem a bit odd, as they can easily cause a false up if OK is somewhere further.

    • Bhavik_1402's avatar
      Bhavik_1402
      Icon for Nimbostratus rankNimbostratus

      Thanks Boneyard,

       

      I am not sure as we are still in build phase but as per the documentation it should be as below.

       

      Receive String - HTTP/1.1 200|OK

      Receive String - HTTP/1.1 200|System Current Time

       

      is there any meaning of | between 200 and OK ?

    • Bhavik_1402's avatar
      Bhavik_1402
      Icon for Nimbostratus rankNimbostratus

      and for Send String

       

      GET /Sample/healthchecksimple HTTP/1.1\r\nHost: \r\n\r\n

       

      would be the correct syntax?

  • Receive String - which documentation did you use for that? the | means or, it is either 200 or OK. which you probably don't want. if you are just looking for HTTP return code 200 then HTTP/1.1 200 OK is fine. for the others it is more difficult to judge without actual output.

     

    this comes mainly down to how your application responds, perform a regular request to it and check the response to see what a good match would be.

     

    Send String - if you dont want to add the hostname then drop that whole part, so like this:

     

    GET /Sample/healthchecksimple HTTP/1.1\r\nConnection: Close\r\n\r\n

    though formally this isn't allowed for a HTTP/1.1 request. it also depends on the way your application is setup, it might require a hostname or wont respond correctly without one.

     

    best is to test this with curl or such from a system to see what happens with the different variants.

    • Bhavik_1402's avatar
      Bhavik_1402
      Icon for Nimbostratus rankNimbostratus

      The documentation is provided by Application Vendor and I've tested as below. The Receive string is "ok".

       

      do I need to mentioned in Receive string as "200 OK" or only "OK" ? is it case sensitive?

       

      config # curl -k http://X.X.X.X:8445/Sample/healthchecksimple

      Bad Request

      This combination of host and port requires TLS.

      config # curl -k https://X.X.X.X:8445/Sample/healthchecksimple

      ok

       

      --------------

      I'm struggling to configure Send string. do i need to select HTTP or HTTP monitor?

       

      I've tried few syntax but still failing.

       

      GET /Sample/healthchecksimple HTTP/1.1\r\nHost: \r\n\r\n

       

      GET /Sample/healthchecksimple HTTP/1.1\r\nHost: xyz.ab.com\r\n\r\n

       

      GET /Sample/healthchecksimple HTTP/1.1\r\nHost: xyz.ab.com\r\nConnection: Close\r\n\r\n

       

      is it mandatory to use xyz.ab.com after Host: for HTTP 1.1 ? any suggestions?

       

    • Bhavik_1402's avatar
      Bhavik_1402
      Icon for Nimbostratus rankNimbostratus

      The documentation is provided by Application Vendor and I've tested as below. The Receive string is "ok".

       

      do I need to mentioned in Receive string as "200 OK" or only "OK" ? is it case sensitive?

       

      config # curl -k http://X.X.X.X:8445/Sample/healthchecksimple

      Bad Request

      This combination of host and port requires TLS.

      config # curl -k https://X.X.X.X:8445/Sample/healthchecksimple

      ok

       

      --------------

      I'm struggling to configure Send string. do i need to select HTTP or HTTP monitor?

       

      I've tried few syntax but still failing.

       

      GET /Sample/healthchecksimple HTTP/1.1\r\nHost: \r\n\r\n

       

      GET /Sample/healthchecksimple HTTP/1.1\r\nHost: xyz.ab.com\r\n\r\n

       

      GET /Sample/healthchecksimple HTTP/1.1\r\nHost: xyz.ab.com\r\nConnection: Close\r\n\r\n

       

      is it mandatory to use xyz.ab.com after Host: for HTTP 1.1 ? any suggestions?

       

      • boneyard's avatar
        boneyard
        Icon for MVP rankMVP

        please try with curl -v -k ...

         

        that shows header information

         

        if the content reply is ok, then your receive string is just that: ok

         

        but be careful because is there is ok in the header it will also trigger