Forum Discussion
Custom HTTP Monitor help
I've been going through these posts for a few days and I've stopped making progress. So I'm asking for help. Our webservers have multiple sites on them and I need to be able to monitor each site to be sure it has valid content. My receive string contains content from the page source. I need help confirming the send string and receive string. Any help or a specific example showing this would be greatly appreciated. It seems like something a lot of F5 implementations would be doing, but I cannot find a valid example.
When I do a curl: curl -v -G --header "host:sani.tized.com" http://10.0.27.237:80
I get back the page source and the receive string I expect. The receive string is in there just after the title less than 40 lines down the page.
Monitor Settngs: Send: GET HTTP/1.1\r\nHost: sani.tized.com\r\nConnection: Close\r\n\r\n
Receive String: Brand/Makeware
Every time I enable the monitor, the pool is declared down by LTM. Please help if you can, thank you.
- cjuniorNacreous
If I understand, your receive string value is incorrect or you have a very long request, and with the HTTP default monitor, you can not capture more than 5120 bytes (including the HTTP response headers). If that's right, why do not you make an external monitor using the curl command itself?
https://support.f5.com/kb/en-us/solutions/public/3000/400/sol3451.html?sr=43245974
I hope I have helped you.
- Jay42Nimbostratus
The receive string is roughly 1500 bytes into the page source. External monitor is a good idea, but since there are two webservers loadbalanced, each server needs to be monitored individually, and marked down individually if content is determined to be missing. In all there are about 600 sites to be monitored.
- natheCirrocumulusWhat is it your are trying to GET? Your send string doesn't mention anything. At least is should be GET /
- cjuniorNacreous
Well, have you think an external monitor a good idea, see this article from Deb Allen. You can use arguments and define variables to pass to the script run. I would do an bash script external monitor passing at minimum, as argument the [IP :: local_addr] that will contain each destination IP. I think that's it solves for you.
https://devcentral.f5.com/articles/ltm-external-monitors-the-basics
- Jay42NimbostratusThe Send String may not be correct, I am going off of what I've been able to find on devcentral. I'm trying to GET a website (HTTP) and the monitor should look through the returned text to find the Receive String. Thats what I'm trying to do.
- Jay42NimbostratusNathan, I changed the send string to this: GET / HTTP/1.1\r\nHost: sani.tized.com\r\nConnection: Close\r\n\r\n And so far its working now. So, thanks for the slash. Looks like that is all it needed. If you submit your comment as an answer I'll accept it.
- cjuniorNacreousgood observation nathan. this went through my eyes. good job.
- natheCirrocumulus
What is it your are trying to GET? Your send string doesn't mention anything. At least is should be GET /
N
- natheCirrocumulusAdded it as an answer. Glad I could help
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