Forum Discussion

matthew_b_16251's avatar
matthew_b_16251
Icon for Nimbostratus rankNimbostratus
Jun 24, 2015

Health Check Failing

Hello,

 

I have a problem with a customer health check which is failing and we are having trouble working out why. We can access the urls direct we just cant work out why the health monitor is failing.

 

GET /services HTTP/1.1\r\nHost: 10.55.185.58/Connect/v1/checkservicestatus \r\nConnection: Close\r\n\r\n

 

Response 200

 

We have run a TCP dump which has the following information which has not helped us very much. If anyone can advice if the above string is a valid. We are currenlty stuck with this issue. Any pointers would be great.

 

07:26:15.992609 IP 10.55.185.3.23798 > 10.55.185.58.glrpc: . ack 1 win 115 07:26:15.993383 IP 10.55.185.3.23798 > 10.55.185.58.glrpc: F 1:1(0) ack 1 win 115 07:26:15.993920 IP 10.55.185.58.glrpc > 10.55.185.3.23798: . ack 2 win 114 07:26:15.993929 IP 10.55.185.58.glrpc > 10.55.185.3.23798: F 1:1(0) ack 2 win 114 07:26:15.994248 IP 10.55.185.3.23798 > 10.55.185.58.glrpc: . ack 2 win 115

 

11 Replies

  • I guess a good option here is to enable debugging of monitor (file will be generated in /var/log/monitors/). This can be done in the pool member GUI screen. You will see there exactly the SEND + RECEIVE data

     

    Alex

     

  • I cannot see the debug fuction in the pool member via the gui. Can this be enabled via the cli?

     

    • gsharri's avatar
      gsharri
      Icon for Altostratus rankAltostratus
      Starting with v11.5 I believe, each pool member has a "monitor logging" option. Enable this in the properties of the pool member and you will have a log file in /var/log/monitors/ for that pool members monitor traffic.
  • nathe's avatar
    nathe
    Icon for Cirrocumulus rankCirrocumulus

    First, this might be a good resource to help in general Constructing HTTP requests for use with the HTTP or HTTPS application health monitor

     

    In your example is the Host correct? This should be the domain i.e. www.example.com (or an IP address of course). in fact for a monitor I'm sure it can be anything.

     

    Id also construct the monitor in Fiddler or curl on the BIG-IP and direct it to a pool member to show the response.

     

    If you're capturing a tcpdump you may want to add -s0 so you capture the full data too.

     

    Hope this helps,

     

    N

     

  • nathe's avatar
    nathe
    Icon for Cirrocumulus rankCirrocumulus

    Something like this?

     

    GET /Connect/v1/checkservicestatus HTTP/1.1\r\nHost: 10.55.185.58\r\nConnection: Close\r\n\r\n

     

  • I'm assuming that "Response 200" means the monitor receive string = 200 correct? Try a receive string other than the status code. I believe the receive string must be text or a regular expression.

     

  • Echo Alex's suggestion of debugging. Your Host header doesn't look correct - should just be the host (and port if not default for the protocol) instead of the host and path. May or may not cause problems depending on your server. HTTP 1.1 requires the header though a null value is okay - depends on what the server expects though. See this link at w3.org for more info on the Host header.

     

    Actually, if that string in your Host header is the path, it should be included as part of the GET portion of the field. What is the full URL you are using in a browser to access this object directly?

     

    You may find some valuable info in SOL2167.

     

    Best of luck! -Ed

     

  • Thanks we have the string sorted now :-). Just need to work out how to assicaite this string to specific nodes in the pool. There are two servers so we want minitored in one pool

     

    GET /Connect/v1/checkservicestatus HTTP/1.1\r\nHost: 10.55.185.58\r\nConnection: Close\r\n\r\n

     

    run against server 10.55.185.58 only

     

    and

     

    GET /Connect/v1/checkservicestatus HTTP/1.1\r\nHost: 10.55.185.59\r\nConnection: Close\r\n\r\n

     

    run against server 10.55.185.59 only

     

    Many thanks for all your help so far:-)

     

    • nathe's avatar
      nathe
      Icon for Cirrocumulus rankCirrocumulus
      no probs. glad it's working
    • Ed_Summers's avatar
      Ed_Summers
      Icon for Nimbostratus rankNimbostratus
      I would typically use the actual FQHN (www.example.com) as the host header value. You may be able to leave it blank if the server isn't doing virtual hosts or something that requires a value in the host header for disambiguation. Example: GET /Connect/v1/checkservicestatus HTTP/1.1\r\nHost:\r\nConnection: Close\r\n\r\n There may be a way to use a variable or instruct LTM to add the IP of the node being polled in this field. I haven't done that so I'd defer to someone else whether possible and how to execute. A DevCentral search may turn something up.