health monitor
71 TopicsHTTP SOAP XML monitor help needed
Hi All, I am attempting to implement HTTPS heath monitor that sends SOAP POST request to an XML gateway. I have had my request sorted out through SOAP UI which work as expected. The response I am getting in XML format indicates that back-end service is up and running. With some trial and error, I have converted SOAP UI request into send sting as below: POST /servcie HTTP/1.1\r\nHost: applicaiton.companyname.com:8443\r\nAccept-Encoding: gzip,deflate\r\nUser-Agent: Apache-HttpClient/4.1.1 (java 1.5)\r\nContent-Type: text/xml;charset=utf-8\r\nSOAPAction: http://www.companyname.com/EnterpriseServices/Scheduling/v1.0.0/GetDemographics\r\nContent-Length: 1314\r\nConnection: Close\r\n\r\n<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"><soap:Header><wsse:Security soap:mustUnderstand = \"1\" xmlns:wsse = \"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"><wsse:UsernameToken wsu:Id = \"UsernameToken-7198221\" xmlns:wsse = \"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\" xmlns:wsu = \"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\"><wsse:Username xmlns:wsse = \"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">serviceuser</wsse:Username><wsse:Password Type = \"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\" xmlns:wsse = \"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\">somepassword</wsse:Password></wsse:UsernameToken></wsse:Security></soap:Header><soap:Body><GetDemographics xmlns=\"http://www.companyname.com/EnterpriseServices/Scheduling/v1.0.0\"><getDemographicsRequestParam><Body><ClientCode>ABC</ClientCode><ProgramCode>ABC</ProgramCode><examCode>2NE</examCode></Body></getDemographicsRequestParam></GetDemographics></soap:Body></soap:Envelope>\r\n I see the request from the monitor and successful response on XML gateway appliance. As a receive string I am expecting message status below: <Success>true</Success> While the response is HTTP 200, my monitor still seems to fail with response string match . Looking at the monitor log I see the request and response. However, the format of response shows as heximal representation. This is weird. I have checked against some other monitors and they show response content in readable format. [0][16420] 2021-04-06 16:50:06.599136: ID 367 :(_recv_active_service_ping): rcvd 715 bytes: -->HTTP/1.1 200 OK\x0d\x0aServer: Apache-Coyote/1.1\x0d\x0aContent-Encoding: gzip\x0d\x0aContent-Type: text/xml;charset=utf-8\x0d\x0aContent-Length: 530\x0d\x0aDate: Tue, 06 Apr 2021 20:50:06 GMT\x0d\x0aConnection: close\x0d\x0a\x0d\x0a\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x00\xad\x95\xc9n\xdb0\x10\x86_e\xa0K\x93CL;\xe9\xa10h\x05\x8d\xb7\x04\xb0\x03#\x02\xd2^Yr"\x11\x15I\x81\x8bl\xbf})\xc7n\xed\x14i \xd57\x91\xd4\xf7\xcfp8\x0b\xbd\xdd\xa8\x12j\xb4N\x1a=J\x06\xbd~\x02\xa8\xb9\x11R\xe7\xa3$\xf8\x97\xab/\xc9mJ\x9da\xd5p\xaak,M\x85\x10\x11\xed\x86\xcd\xde()\xbc\xaf\x86\x848^\xa0b\xae\x17\x8f\x9a\xfd\x9e\xb19i>\x08\xee!\x92\xec\xb1\x8d\x93\xbf\xa9\xf5z\xdd[\xdf\xec~\xbe\xee\xf7\x07\xe4\xfbr\x91\xed\x84\xae\xa4v\x9ei\x8e\x7f(\xf11\x95\xec\x1d\xbd3b\x9b\xd29\xfa\x09*\x93[V\x15\x92\xbb't\x95\xd1n\xef\xfd\x89\xd8\xca\x1a\x85\xdeJ\xde\xe3F\x91\xa9\xf6h++\x1dfhk\xc9\xd1\x91F^\x842\xc6\x84\xd41D1H\xef\xca\xa7\xf4\x1e\x99@\x9b\xd2%:\xc7r\xcc<\xf3\xc1\xa54\x0b<J\xb9\xd4\xdb\x80\x94\x1cV\x94\xbc\xf9\x8d\x1c\xf0\xd7K\x1c\x9b8Y\xa5\xf4\x91)Lg\xd2:\x0f\x17sY\xa3\xbe\x84f\x8b\x92\xdd\x01}fe@ Q\xf1\x84\xfa[b)\x85(\xb1\x1b\xbb`\x8d\xf5\x19S\xb2\xdcv4?6\xaabz\xdb\x0d\xce\xbcE\xf4\xf0U\x08\x1b\xc3\x08\x0b\xa9\x11\x06gQ\xb9>\x8b\xca\xcdYT>\xb7\x0f\xaa\xf4\xdb\x0e\xa6\x99G\x12\x8b\xa1\x96\xb1\xf2Z\xe3+\x13K\xb6\x84\xb1\x11]\x92 ho\xdb\xbb<UL\x96\x87`\xb5\xa6\xbf\x19\xfb\x93L\xd8\x16V\x85\xd1\xed\x9d>\xc5a\xba\xf1\xa8\x9b6\xdaZ\xe8>\xb6\x1f\xb8\x98\xc6\x12\x8e\x1d\xe6\xb2\xa373\xb6\xe9HN\xe2\xb3\x83y\x81;i}\xd1>k\x0c\x97\xf1\xd93\xe4\xc1\xc6\xac\x83\xc7\xa0~\xa0m\xdf\x85\x8c/\xd0~r\xb0dR\xa0\xee\xd6\x0e\xe6&N2\xadP{x\x98\xfc\x1f\x0d\x0f\xce\x85\xf8\x1c\xd055\xc7\xc6\xda\xddL\x88\xb7\xe1\x08\x0b\xa6\xf3\x10\xfb\xfc\x07:\xc7\xabf\x1a\xbcN\x01\xf2\xee\xb0\xf9\xc7\xc9\xd1($'\xf3;\xfd\x05,\xa4\x8a2\xf5\x07\x00\x00<-- [ tmm?=false td=true tr=false addr=::ffff:10.2.1.123:8443 srcaddr=::ffff:10.2.1.2%0:49550 ] It almost looks like LTM is failing to interpret response properly. Any Ideas? Has anyone seen something like this before? All help is greatly appreciated. Thanks, AlexSolved1.7KViews0likes4CommentsHTTP Health Monitor in LTM
Hi Folks, We've following requirement to configure HTTP health monitor and this is what we need to implement. Type Send Receive HTTP GET /Sample/healthchecksimple HTTP/1.1 200|OK HTTP GET /Sample123/servlet/fcs/ping HTTP/1.1 200|System Current Time HTTP GET /sample456/test-alive HTTP/1.1 200|OK HTTP GET /Sample789/manager?query=monitoring HTTP/1.1 302 HTTP GET /Sample459/monitoring/healthcheck HTTP/1.1 200|OK HTTP GET /Sample324/servlet/fcs/ping HTTP/1.1 200|System Current Time HTTP GET /Sample438/monitoring/healthcheck HTTP/1.1 200|OK HTTP GET /healthcheck HTTP/1.1 200|OK Would like to know if this is correct syntax for Send and Receive string or need to modify? we need to associate this to pool.1.4KViews0likes12CommentsConfigure a monitor/irule to check a webpage health only after login using a test credentials
I am looking for help to configure a monitor/irule to login to a web page with credentials then check the service up/down when the login is successful. It would be really appreciated if someone could be able to share/help me with coding/programming to achieve this. I have gone through some F5 articles but did not find a better solution.Solved1.4KViews1like2CommentsHealth Monitor issue
Hi, I am facing a weird issue. We renewed our SSL certificate and our health monitor uses this renewed certificate. Post renewal , our pool member went down. For Tshooting, i enabled monitor logging and the weird part is LTM was not showing any logs in the /var/log/monitor path. So i tried to debug manually by telnetting to the server port and issued the GET string commands, but as soon i paste it, the cli closes the connection (not sure why??) Eg: String in health montior :GET /keepAlive.html\r\n HTTP/1.1\r\nHost: \r\nConnection: close\r\n\r\n in CLI: 1) [Active F5] # telnet 10.177.222.35 15000 Trying 10.177.222.35... Connected to 10.177.222.35. Escape character is '^]'. GET /keepAlive.html HTTP/1.1 (As soon as i put this line, immediately connection closes) Host: Connection closed by foreign host 2) I tired another method, through openssl openssl s_client -connect 10.177.222.35:15000 GET /keepAlive.html HTTP/1.1 Host: Connection: Close I get a 400 bad request. 3) Tried curl :curl -vk https://10.177.222.35:15000/keepAlive.html, now i get a 403 So kinda confused, if i am doing anything wrong. I more interested in the first one why the connection closes as soon as i paste it. Note : Reverted to old certificate and the Pool came up. And after this only the montior logging started to work. Now even after the pool member is up, i tried the above methods, and i still get the same results. We are checking internally on the certificate, why this is happening, as its the same cert , just the validity is extended . But i am concerned about the montior tshoot steps i did.1.2KViews0likes4CommentsF5 is not marking the pool member status as DOWN
Hi All , When the service on the member node 10.179.16.19 is DOWN, the F5 monitor is not marking the pool member status as offline . When server team changes the receive string code to 503 from 200 from the server end , pool member is not marked as DOWN , We then tested it and decided to change the monitor string to "200 OK" from 200 on the F5 ,it than worked correctly . Meaning when server team now changed the string to 503 , monitor on the F5 marked pool member down . So what is the issue here ? What is the difference with string 200 and 200 OK ? ltm pool gw-internet-test_POOL { description gw-internet-test members { 10.179.16.19%6:https { address 10.179.16.19%6 session user-disabled--------------> Manually disabled state user-down } 10.179.18.12%6:https { address 10.179.18.12%6 session monitor-enabled state up } } monitor gw-internet-test_Monitor partition CORP ltm monitor https gw-internet-test_Monitor { adaptive disabled cipherlist DEFAULT:+SHA:+3DES:+kEDH compatibility enabled defaults-from /Common/https destination *:* interval 5 ip-dscp 0 partition CACF recv 200 >>>>>>>>>>>>>>>>>>>>>>>> When we changed the string to "200 OK" , it worked recv-disable none send "GET /test/admin/login.jsp HTTP/1.1\r\nHost:gw-internet-test.corp.com" time-until-up 0 timeout 16 }Solved1.2KViews0likes4CommentsGTM (DNS) Monitoring of LTM Virtual Servers with LTM Virtual Server IPs are NAT via Firewall
I'd like to share my experience of a specific scenario in deploying GTM and LTM and open it up to the community if we could find a better way to do this than what I've come up with. My company recently purchased some F5 LTMs and GTMs and there were a couple of design requirements / constraints that we had to follow. Scenario & Network Design Requirements: All Self-IPs and Virtual Servers on the F5 LTM must use private IP addresses and must not use public IP addresses For applications that are served via F5 LTM Virtual Servers which needs to be accessed over the internet, the public IP will be NAT-ed from an internet facing firewall to the private IP that is configured on the F5 LTM virtual server GTM will need to be able to monitor the status of Virtual Servers on the LTM using iQuery but when GTM responds to public DNS queries, GTM must return the public IP. As you can see, we already have a problem here because the Virtual Server Discovery will populate the LTM Server Object on the GTM with all the Virtual Servers on the LTM but they're all configured with private IPs. You cannot link these virtual servers to Wide IP Pools and onwards to Wide IPs because then GTM will return private IPs when it receives DNS queries. The solution that I came up with was to do this: Establish iQuery between the LTM and GTM and also enable Virtual Server Discovery Manually create Server objects of product Generic Host for each Virtual Server that needs to be reached over the internet, use the public IP that has been allocated by the Network Team which will be NAT-ed at the Firewall (eg. 1.1.1.1), do not apply any Health monitors, do not fill in the "Translation" field Manually create Virtual Server objects under the Server object created in 2 above, use the public IP that has been allocated by the Network Team which will be NAT-ed at the Firewall (eg. 1.1.1.1), switch the "Configuration" drop down menu to "Advanced", apply a simple gateway_icmp monitor, in the Dependency List - search for the actual virtual server which will accept the traffic (eg. 10.1.1.1), this virtual server would have been discovered earlier in 1 by Virtual Server Discovery. This means the diagram now becomes like this: When we do 3 above, what happens is that the GTM will ping the public NAT-ed IP of the Virtual Server (1.1.1.1), the firewall will NAT the IP to the private IP (10.1.1.1), the ping will reach the LTM Virtual Server and if the ping is successful, the object will be green on the GTM. This alone is not enough however as on the LTM, a "Standard" type virtual server will still respond to pings even if all the pool members are unavailable and the virtual server is also unavailable (this is where I think Virtual Server status as updated via iQuery is superior to a normal monitor), so to solve this problem I used the Dependency List option below the Health Monitor section and I chose the corresponding Virtual Server that was discovered by the Virtual Server Discovery (VS1 10.1.1.1). This way, should all the pool members become unavailable on the LTM, the LTM will update the status of the virtual server to the GTM via iQuery and the GTM will make the 1.1.1.1 Virtual Server object unavailable even if the pings are still successful. So my question to the community is: Given the restrictions above, is this the correct way to make GTM give out Public IPs when the Virtual Servers on the LTMs are configured with private IPs? There was another question on this same topic from 2016 (linked below), but it sort of died out without a resolution: https://devcentral.f5.com/questions/gtm-to-give-away-public-ip-address-while-monitoring-the-private-ltm-vs-49835 Update 15 Mar 2019: I learnt that when adding an LTM that's separated from the GTM via a Firewall that does NAT translation, the GTM will not perform Virutal Server Discovery: https://support.f5.com/csp/article/K91381.1KViews0likes2Commentshealth monitor IIS
Hello, I was wondering if someone can shed some light on a health monitor I am trying to setup. Ill give a brief overview of the setup. We have an application that gets proxied via apache ( apache are the nodes in the pool being monitored, acts as proxy nothing more) to IIS where the application actually lives. I am trying to setup a monitor so that it monitors say an index.html page on the IIS server something along the lines of Send string - http://Portal/dir/index.html receive string - IIS is up Tried to use this but nodes fail the health check when applying the monitor to the pool The service ports that its monitoring for are https Any help is greatly appreciated Thanks998Views0likes4CommentsHealth Monitor being sourced from Management interface causing async routing
I have a health monitor that is being sourced from the management interface - this was discovered by accident when i was doing a TCPDUMP on the vlan interface the traffic should have been sourced from. example vlan 10 interface on f5 10.0.0.1 destination ip address of device being monitored = 10.0.0.6 when i did a tcpdump on the vlan to troubleshoot a separate problem i didnt see the traffic - i could see other health monitor traffic using the vlan for devices on the subnet and i know the routing and connectivity is working fine. Wondering what reason there would be for the health monitor not to use the vlan associated with the subne t and use the management ip address to source the health traffic. FYI the health monitor is working and responding as expected but would just like the traffic to use the correct path - via the connected vlan instead of sending around the world and through various firewalls to reach its destination (lucky the firewalls are permitting the traffic. Thanks899Views0likes6CommentsGTM https health monitor has never worked
I'm trying to construct a health monitor in GTM 11.5.4 that looks for text on an https web page. I have never been able to get the monitor to go green so I am trying to troubleshoot it. gtm monitor https mhconnect_https { cert /Common/default.crt cipherlist DEFAULT:+SHA:+3DES:+kEDH compatibility enabled defaults-from https description "Look for specific text" destination *:* interval 30 key /Common/default.key probe-timeout 5 recv "Please sign in to begin your secure session." send "GET /dana-na/auth/url_default/welcome.cgi" timeout 120 } The /var/log/gtm log shows this: 011ae0f2:1: Monitor instance /Common/mhconnect_https x.x.x.x:443 UNKNOWN_MONITOR_STATE --> DOWN from x.x.x.x (connect: server error search result false) From the GTM in question, I can use CURL and see the text in the HTML page that the health monitor keys on: curl --insecure -v https://x.x.x.x/dana-na/auth/url_default/welcome.cgi This returns many lines of text, including HTML containing the text I'm looking for. A telnet test fails: [root@F5-GTM-MC-01:Active:Standalone] monitors telnet x.x.x.x 443 Trying x.x.x.x... Connected to x.x.x.x. Escape character is '^]'. GET /dana-na/auth/url_default/welcome.cgi Connection closed by foreign host. [root@F5-GTM-MC-01:Active:Standalone] monitors I have also tried using this as the send string, to force HTTP 1.0: GET /dana-na/auth/url_default/welcome.cgi HTTP/1.0\r\n ..and that doesn't work either. If I open the IP and path () in a web browser, it works fine. I have used tcpdump to capture the traffic, and I can see the regular health monitor TCP traffic flowing, but the application data is all encrypted so that's been no help. The "011ae0f2:1" error seems to be somewhat well documented but I've seen nothing that relates to my problem. What should I do next to troubleshoot this?899Views0likes6Comments