Forum Discussion

Joe_Pipitone's avatar
Icon for Nimbostratus rankNimbostratus
Dec 03, 2010

Website monitoring - not just homepage

We have a number of pools configured, each with 6 members. Each pool is associated with its own VIP.



We are currently monitoring each website's homepage using a Monitor that looks like so:




GET / HTTP/1.1\r\nHost:\r\nConnection: Close\r\n




The monitor checks for a string "Object Moved" because the homepages are redirecting to Home.aspx.




We have set up this health check to check for the string "Object Moved" because when that string is not found on the page, a blank, untitled page is found and we didn't want users browsing the websites to see blank pages.




We have eliminated blank pages on the website homepages using this check, however we have been finding that we're seeing blank untitled pages beneath the homepages, such as on an article page:
 - this sometimes displays as a blank untitled white page.




Is there some sort of an iRule or another health monitor that we can put into place that would check each and every request, and if a blank white untitled page is found, or a certain string isn't found, the health check would fail, and / or the iRule would re-select another node that is serving up legit content?




Our sites have thousands of articles on them, so writing thousands of health monitors wouldn't be the best solution. I've been tasked with creating some sort of check or iRule script.




I am thinking that this should be possible by:




1) Scan each request


2) Make a connection to the server


3) Verify that a string is or is not found


4) Send traffic to the server


5) If blank page / string is /is not found, reselect another node




Does anyone know if this is possible?


8 Replies

  • Hi Joe,



    That's an interesting scenario. Can you post an anonymized copy of the HTTP response headers and payload for a response you want to consider a failure?



    Thanks, Aaron
  • The HTTP response that I get for the entire page is very lengthy.



    What I can tell you from seeing these blank, untitled pages in the past is that it displays a basic page with Untitled Page inside the title tags - something very similar to that.




    So if we see Untitled Page, or something similar, this health check would have to fail - this goes for article pages as well as the home pages.




    I'm not sure what else I can provide at this point until I can capture the source of the entire untitled page.


  • Hi Joe,



    I was hoping it might be a response with a 0 content length or a specific status code. If you could detect the failure just from the HTTP headers it would be a lot simpler. Do you think the only way to detect this issue is by checking the response payload?



    If you have to check the response payload, it would be a bit more complicated. For the latter, I'm thinking you could use a stream filter based iRule to check for a bad response and down the pool member from that. I don't think you'd be able to "fix" the current response with a stream filter as the response isn't buffered. If you wanted to change LTM's handling of the current failed response, I think you'd need to collect the payload using HTTP::collect. However, collecting the payload would be a lot less efficient compared with a stream filter iRule. I'd be very wary of trying to collect every text or HTML response just to fix a relatively small percentage of bad responses.



    If you think it would be enough to detect a current failure and disable the pool member for subsequent requests, I could try to come up with a quick example. Else, if you want to try collecting the payload, I could try that. Either way, you'll need to come up with a string or regex that is only seen in bad responses.



  • OK.....I am keeping my eyes open for another bad response - I'd definitely be interested in seeing an example of your stream filter based iRule.



    Something that is always found on these pages is "Untitled Page" within title tags.



    Thank you for your help, as always! Enjoy your weekend.
  • Actually, using LB::down seems to trigger an immediate monitor probe regardless of the monitor interval settings. If the default monitor succeeds, the pool member will be marked back up. So what I was thinking of won't work as I'd thought. I'll try testing another option with pool reselection and see what I can do.



  • So far no blank untitled pages this morning, still can't give you any info regarding the content length and the response payload.



    Hope you had a good weekend and I appreciate your help!
  • Hi Joe,



    After thinking this through more, I don't think using LB::down or a stream profile would work as the pool monitor would still succeed and mark the pool member up. In a quick search for Object Moved, it looks like there is a known issue with the .NET 1.1 framework:



    FIX: Users receive an "Object moved to here" error message when they open an ASP.NET Web page in the .NET Framework 1.1




    Based on that info, it looks like the server response is a 302 redirect. I'm not sure what the redirect location is, but it would be a lot more efficient to look for a redirect to a specific location compared with collecting the response payload and looking for a string.



  •'s a 302 server response. Basically, the page redirects to Home.aspx. But, on some article pages, I believe it is handled differently than the homepage.



    If there was a way to check each and every request and search for a valid response (which I can check on) that would be ideal.