Forum Discussion

Jay42's avatar
Jay42
Icon for Nimbostratus rankNimbostratus
Jan 19, 2015

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.

 

9 Replies

  • 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

     

    https://support.f5.com/kb/en-us/solutions/public/13000/400/sol13423.html

     

    I hope I have helped you.

     

  • Jay42's avatar
    Jay42
    Icon for Nimbostratus rankNimbostratus

    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.

     

  • nathe's avatar
    nathe
    Icon for Cirrocumulus rankCirrocumulus
    What is it your are trying to GET? Your send string doesn't mention anything. At least is should be GET /
  • 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

     

    https://devcentral.f5.com/wiki/AdvDesignConfig.HTTPMonitor_cURL_BasicGET.ashx

     

  • Jay42's avatar
    Jay42
    Icon for Nimbostratus rankNimbostratus
    The 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.
  • Jay42's avatar
    Jay42
    Icon for Nimbostratus rankNimbostratus
    Nathan, 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.
  • good observation nathan. this went through my eyes. good job.
  • nathe's avatar
    nathe
    Icon for Cirrocumulus rankCirrocumulus

    What is it your are trying to GET? Your send string doesn't mention anything. At least is should be GET /

     

    N