HTTP Health Monitor Failing, Not Sure Why

I tried creating a custom http health monitor for one of our applications with a simple SEND and RECIEVE configuration.

Send String: GET /application/URI/resource.ascx \r\n

Receive String: HTTP/1.1 200 OK \r\n

I switched the appropriate pool to use this new monitor and it marks the pool members down.

I checked the web logs on these apps servers and I can see them responding to the LTM with a 200 OK.

I also ran a curl from the LTM to test manually and I get the appropriate response: HTTP/1.1 200 OK

I don’t really know why it’s not working, it seems like this should be the correct receieve string.

Any idea’s on something else to try?

Thanks!

Hi

You’re not sending your request string as a HTTP/1.1 formatted string but you’re receive string is looking for a 1.1 response - there’ a great KB article on this - myF5 - that goes into great detail on http monitors with good examples.

Also, you can enable logging on your monitor to understand what is happening, see myF5 for more info on how to do this

Generally that won’t be an issue. Except for the HTTP/0.9 request… (i.e. A lot of servers will reply 1.1 if you ask them a 1.0 request - even if it is technically out of spec)

Change your request to at least HTTP/1.0 i.e.

GET /application/URI/resource HTTP/1.0\r\n\r\n

And make sure your server really does reply with HTTP/1.1 and not HTTP/1.0. if you do require an HTTP{/1.1 request you (should) have to add a few headers to make a real request. HTTP/1.1 made several of them ‘mandatory’

But like iaine said. Enable debug to see what is being compared. It’s likely something small and ‘obvious’ once you’ve identified it

Can you make a simple change and let us know if it fixes,

Send String: GET /application/URI/resource.ascx HTTP/1.1\r\nHost: www.domain.com\r\nConnection: Close\r\n\r\n

Receive String: “200 OK”

Thank you all for the suggestions, I am going to try this and let you know!

How did it go. Was this resolved.

Thank you all for the help, adding HTTP 1.1 and the Host: parameter fixed the issue.