Forum Discussion

The_Bhattman's avatar
The_Bhattman
Icon for Nimbostratus rankNimbostratus
May 09, 2008

Monitoring Google Search Appliance

Hi Folks,

 

A collegue of mine has a unique issue. His app team is requesting to load balancing a couple of Google Search Appliances. However, he is having a hard time trying to figure out a way to monitor the appliance to make sure the query is working. My take on this is to basically send a HTTP Query to the google appliance and look for a response that matches. However, considering that search results can change, there is no gaurentee that the LTM is going to keep the pool members up. The other problem is the query returns a long response, which he means he needs to increase his intervals so it doesn't mark it down waiting for response to finish.

 

 

Have you experienced this before? Is there a better way to monitor a search enginee such as google. Is it possible to monitor the Google Appliance API?

 

 

I need some help here.

 

 

CB

 

7 Replies

  • Yes, you can monitor with external scripts anything you want. There are several examples on the Monitoring wiki: http://devcentral.f5.com/wiki/default.aspx/AdvDesignConfig/HomePage.htmlHealthMonitors

     

    Click here

     

  • Hi CB,

     

     

    What kind of failure(s) are you trying to account for with the monitor? Do you want to check that the server answers a generic HTTP request, or do you want to verify that it returns valid response data to a query?

     

     

    Could you send a static request with a search string that should always return an HTTP 200 and then look for the 200 OK in the response?

     

     

    If the request needs to be dynamic or the valid string in a response is far into the packet, citizen_elah's suggestion of using an external monitor is a good one.

     

     

    Aaron
  • Hi Aaron,

     

    From what I understand my collegue wants to validate a search query is working, the problem is most of the query that he has tried, leads to a avertly long response that the parse has to go through. He has tried everything to shorten the response, but it appears that Google Appliance, no matter how accurate, returns the accurate response but returns all others as well. I looked at the link that citizen posted before I posted my question. It provided me with some ideas so it's nice to know I am thinking along the same lines. I will see if I can talk to Google (Perhaps there is an API I can have the healthcheck make a call to which would be better. I will let you guys know what I find.
  • Until I find something better, I use aaron's method using a http_head monitor, which works fine for me:

    HEAD /search?q=bigip&site=default_collection&client=default_frontend&output=xml_no_dtd&proxystylesheet=default_frontend HTTP/1.0 \n\n 

    HTTP/1.0 200 OK 

    --> UP

    FYI: It's important that the monitor sends two carriage returns after the HEAD/GET request! (\n\n)
  • Hi st0n3,

     

     

    That seems like a reasonable solution.

     

     

    The monitoring daemon, bigd, appends one or two carriage return pl;us line feed characters (\r\n) to the send string, depending on the LTM version you're running. So it's possible by configuring two \n's to the end, bigd is actually sending three. You can check this by running a tcpdump and filter on the pool member IP address and port.

     

     

    Also, you can tell the pool member to close the TCP connection by using an HTTP/1.1 request:

     

     

    HEAD /search?q=bigip&site=default_collection&client=default_frontend&output=xml_no_dtd&proxystylesheet=default_frontend HTTP/1.1\r\nConnection: Close\r\nHost: \r\n

     

     

    Aaron