Forum Discussion
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
- amolari
Cirrostratus
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
- matthew_b_16251
Nimbostratus
I cannot see the debug fuction in the pool member via the gui. Can this be enabled via the cli?
- gsharri
Altostratus
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
Cirrocumulus
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
- matthew_b_16251
Nimbostratus
if we try http://10.55.185.58/Connect/v1/checkservicestatus from EI it works. Just the health monitor string is not connecting correctly I am guessing the string is incorrect.
- nathe
Cirrocumulus
Something like this?
GET /Connect/v1/checkservicestatus HTTP/1.1\r\nHost: 10.55.185.58\r\nConnection: Close\r\n\r\n
- gsharri
Altostratus
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.
- Ed_Summers
Nimbostratus
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
- matthew_b_16251
Nimbostratus
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
Cirrocumulus
no probs. glad it's working - Ed_Summers
Nimbostratus
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.
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com