Forum Discussion

Barry_Lalor_250's avatar
Barry_Lalor_250
Icon for Nimbostratus rankNimbostratus
Dec 29, 2016

Custom HTTP1.1 Monitor - Always Up

Hi everybody,

Studying for the 201 right now and mucking around with custom monitors. Probably the billionth http custom monitor question but I have read through a few examples and don't seem to be able to work the problem out.

I have 3 servers running Debian with Apache running, I have HTTP virtual servers which function fine and can retrieve pages from each of the 3 servers. On Server 1, I have created a file inside the /var/ww/html/ directory which contains a HTML file called "monitor.html" which contains the following.

MonitorMonitor

As you can see, quite straight forward. I have constructed a custom HTTP monitor with the following send string.

GET /monitor.html HTTP/1.1\r\nHost: 127.0.0.1\r\n

and I have set my receive string to simply "Monitor" (without quotations).

My custom monitor is the only monitor assigned to the pool, the problem I am seeing is that it is marking all 3 servers as up even though the monitor.html file only exist on Server 1. If I perform a curl from the F5 to the server for that file this is what I see.

[root@glb3:Active:In Sync] config curl http://10.0.0.1/monitor.html

MonitorMonitor

For the other two I get 404 not found.

[root@glb3:Active:In Sync] config curl http://10.0.0.2/monitor.html -I HTTP/1.1 404 Not Found Date: Thu, 29 Dec 2016 15:55:03 GMT Server: Apache/2.4.10 (Debian) Content-Type: text/html; charset=iso-8859-1

[root@glb3:Active:In Sync] config curl http://10.0.0.3/monitor.html -I HTTP/1.1 404 Not Found Date: Thu, 29 Dec 2016 15:55:07 GMT Server: Apache/2.4.10 (Debian) Content-Type: text/html; charset=iso-8859-1

Can anybody explain to me exactly why it is marking all 3 pool members as up? I am a bit baffled as the monitor.html resource does not exist on server 2 and 3.

Many thanks in advance.

Baz

2 Replies

  • Hi,

    Monitor parse HTTP headers and content and you post only the http content.

    can you test with this command:

    (echo -ne "GET /monitor.html HTTP/1.1\r\nHost: 127.0.0.1\r\n"; cat) | nc 10.0.0.1 80