Jump to content
Welcome to our new Citrix community!

HTTP Monitor configuration


Philip Hall

Recommended Posts

Hi,

 

I was hoping someone could assist with the following requirement.

 

I would like to set up a HTTP-ECV monitor that looks at a website and it it responds with a certain page a 200 status code is responded.

 

So for instance the following is required:

 

Target - "/Citrix/web/Default.htm"

Response expected - <Title>Citrix Receiver</title>

 

So if it responds with that title then we get a 200 response indicating the service is UP.

 

I hope thats easy to achieve, been testing a few GETs but nothing seems to work for me :-(

Link to comment
Share on other sites

HTTP monitors look at response codes (headers)

HTTP-ECV looks at a string in the response BODY content and not the header.

 

mon1_httptest

To look at the 200 OK status code, use the HTTP monitor.

Target (or send string):  GET /Citrix/web/Default.htm

Response Code 200

 

mon2_http-ecvtest

Target/send string:  Get /Citrix/web/Default.htm

Receive string:  Citrix Receiver

It just needs a string in the body content to; case-sensitive

 

OR you can skip the 200 OK test and confirm just the body content is returned.

Link to comment
Share on other sites

Hi Rhonda,

 

Here is the response I get from going to that webpage:

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

    <title>Citrix Receiver</title>

 

However when I set:

 

Send String “Get /Citrix/MCC/Web/Default.htm”

Receive String “Citrix Receiver”

Secure - Yes

 

It still fails, what am I missing?

Link to comment
Share on other sites

Can you share your actual cli for the monitor.  If you are configuring this in the GUI, the quotes are not needed.

And if you look at the service or servicegroup in the cli, you should see a monitor result:

show service <servicename>

 

Will give you monitor results stat.

 

show ns runningconfig | grep <monitorname> -i

Can let us see if something weird in monitor.

 

Also, if this is specifically against a Citrix storefront page, you can use the storefront monitor, but the reality is the page may present itself differently depending on user-agent header being citrixreceiver based or not. So the monitor may not be "shown" the same response as a receiver.

So, if you can describe exactly what you are trying to do, we might be able to fix the issue for you.

Also, StoreFront (if that is what this is), web urls are /Citrix/StoreName>Web

Run this page in a browser and see if you do in fact get a connection for this page with the body content expected.

If you use a user-agent switching utility, you can see if the page provides different results for a user-agent:citrixreceiver vs other string which may be why the monitor is failing.

 

For monitor of type secure, then your service/servicegroup must be SSL (HTTPS).

 

See if any of this helps. You can also run a trace to see if the monitor is failing for other reasons.

 

Final thought, most monitors leave from the ADC via SNIP to destination so firewall/ports/acls must allow SNIP to destination.

If a net profile is assigned to service/servicegroup or the monitor itself, then the traffic will use the net profile IP to source to destination.

If the monitor type is scriptable (basically you can't assign a net profile at the monitor level), then the monitor sources traffic from the NSIP, which means you now need to ensure either NSIP in the ha pair can reach destinations.  (The 'storefront' monitor, the 'ldap" monitor are scriptable; but http and http-ecv are not and will use the snip or net profile ip)

A trace would confirm if there is a network level issue.

Or use the ping <ip> -S <snip> to ensure a ping can go from ADC to destination using the specified Source IP (-S); see full syntaix from cli as ping --h (or ping -h) if needed.

Link to comment
Share on other sites

Hi Rhonda,

 

The monitor I have configured is as follows:

 

Note: I have changed the receive string to something in the body.

 

Also I have removed the site name

 

>show lb monitor MON-CitrixHTTP
1)   Name.......: Mon-CitrixHTTP  Type......:  HTTP-ECV State....:   ENABLED
Standard parameters:
  Interval.........:            5 sec    Retries...........:                3
  Response timeout.:            2 sec     Down time.........:           30 sec 
  Reverse..........:               NO    Transparent.......:               NO
  Secure...........:              YES
  SSL Profile:.....: ns_default_ssl_profile_backend
  LRTM.............:         DISABLED
  Action...........:   Not applicable    Deviation.........:            0 sec 
  Destination IP...:    Bound service
  Destination port.:    Bound service
  Iptunnel.........:               NO
  TOS..............:               NO
  SNMP Alert Retries:               0      Success Retries..:                1
  Failure Retries..:                0
Special parameters:
  Send string......:
       "Get /Citrix/{SiteName}/Web/Default.htm"
  Custom headers...:""
  Receive string...:
       "<h3>Important Staff Notice from ICT</h3>"

SSL certificates
1)    CertKey Name: {CertName}.local-2022    Client Certificate
 Done

Link to comment
Share on other sites

Is this working or not?

I'm assuming this is storefront, but you haven't said.  For a storefront, you can just use "Get /Citrix/<StoreName>Web

(usually no "/")  Example:  https://server.domain.com/Citrix/StoreWeb  NOT /Citrix/SToreName/Web  (again, no "/" before "Web")

 

Paste your URL path in your get into a browser and see if it in fact retrieves anything.

Then use your web developer tools menu to see if "/" the default page contains the string you are in fact looking for.  If you are looking for content on a page other than "/" or "/default.htm" the monitor will fail; if the content you need doesn't actually appear until after login, your monitor will fail.  If your path is wrong, the monitor will fail.

 

You also don't need to look for the html tags <h3> just the literal text on page will work. However, the match is case sensitive. If your HTML code is actually <H3> then this wouldn't match.

 

For HTTP/HTTP-ECV monitors keep it simple. If you need more validation that an actual StoreFront is doing more robust things, use the storefront monitor instead.  (Don't enable the backend services check as they require additional settings.)  If this isn't a storefront page, sorry for the assumption.

Link to comment
Share on other sites

Hi Rhonda,

 

My apologies, I don't know why that "/" was in there.

 

When I open a browser, and go to the web page, I get the default page "Click install to upgrade Citrix Receiver"

 

So I have changed the monitor to look for the following:

 

>show lb monitor MON-CitrixHTTP
1)   Name.......: Mon-CitrixHTTP  Type......:  HTTP-ECV State....:   ENABLED
Standard parameters:
  Interval.........:            5 sec    Retries...........:                3
  Response timeout.:            2 sec     Down time.........:           30 sec 
  Reverse..........:               NO    Transparent.......:               NO
  Secure...........:              YES
  SSL Profile:.....: ns_default_ssl_profile_backend
  LRTM.............:         DISABLED
  Action...........:   Not applicable    Deviation.........:            0 sec 
  Destination IP...:    Bound service
  Destination port.:    Bound service
  Iptunnel.........:               NO
  TOS..............:               NO
  SNMP Alert Retries:               0      Success Retries..:                1
  Failure Retries..:                0
Special parameters:
  Send string......:
       "Get /Citrix/{SiteName}Web/Default.htm"
  Custom headers...:""
  Receive string...:
       "Citrix Receiver"

SSL certificates
1)    CertKey Name: {CertName}.local-2022    Client Certificate
 Done

 

How can I configure a monitor to look for the title?      <title>Citrix Receiver</title>

 

I have seen from F12 that I get the following:

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <title>Citrix Receiver</title>
    <link rel="SHORTCUT ICON" href="media/ReceiverSmall.ico" />
    <link href="css/jquery-contextmenu.css" rel="stylesheet" type="text/css"/>
    <link href="css/jquery.jscrollpane.css" rel="stylesheet" type="text/css"/>
    <link href="css/Default.htm.style.min.css" rel="stylesheet" type="text/css"/>
    <link href="contrib/custom.style.css" rel="stylesheet" type="text/css"/>
    <script src="scripts/jquery.min.js" type="text/javascript"></script>
    <script src="scripts/jquery-ui.min.js" type="text/javascript"></script>
    <script src="scripts/jquery.contextmenu.js" type="text/javascript"></script>
    <script src="scripts/jquery.hammer.min.js" type="text/javascript"></script>
    <script src="scripts/jquery.mousewheel.js" type="text/javascript"></script>
    <script src="scripts/jquery.jscrollpane.min.js" type="text/javascript"></script>
    <script src="scripts/Default.htm.script.min.js" type="text/javascript"></script>
    <script src="contrib/custom.wrstrings.en.js" type="text/javascript"></script>
    <script src="contrib/custom.script.js" type="text/javascript"></script>
</head>
<body>
    <noscript>
        <!-- JavaScript is not enabled, text in this section cannot be localized using JavaScript -->
        <div id="javascriptmessagepane" class="mainpane messagepane">
            <div class="ctxsui-messagebox centered">
                <div class="messagebox-middle">
                    <div class="messagebox-middlebody">
                        <h1 class="messagebox-title">JavaScript is required</h1>
                        <p class="messagebox-body">Please enable JavaScript in your browser before using Citrix Receiver.</p>
                    </div>
                </div>
            </div>
        </div>
    </noscript>
    <div id="ruler-container">
        <span id="ruler">placeholder</span>
    </div>
    <div id="pluginassistant" class="mainpane" role="alertdialog" aria-live="polite">
    </div>
    <div id="pluginactivation" class="mainpane messagepane" role="alertdialog" aria-live="polite">
    </div>
    <div id="clientdetection" class="mainpane messagepane" role="alertdialog" aria-live="polite">
    </div>
    <div id="prelogin-pane" class="mainpane custom-pane">
    </div>
    <div id="postlogin-pane" class="mainpane custom-pane">
    </div>
    <div id="authentication" class="mainpane">
        <div id="logonbelt-topshadow">
        </div>
        <div id="logonbox-container">
            <div id="logonbox-innerbox">
                <div id="logonbox-logoarea">
                    <div id="logonbox-logoimage"></div>
                </div>
                <div id="logonbox-logonform">
                    <!-- placeholder where the forms will be generated -->
                </div>
                <div id="logonbox-choices">
                    <!-- placeholder where the first-time-use choices screen will be generated -->
                </div>
            </div>
        </div>
        <div id="logonbelt-bottomshadow">
        </div>
    </div>

    <div id="credentialupdate" class="mainpane">
        <div id="credentialupdate-topshadow">
        </div>
        <div id="credentialupdate-container">
            <div id="credentialupdate-innerbox">
                <div id="credentialupdate-logoarea">
                    <div id="credentialupdate-logoimage"></div>
                </div>
                <div id="credentialupdate-form">
                    <!-- placeholder where the forms will be generated -->
                </div>
            </div>
        </div>
        <div id="credentialupdate-bottomshadow">
        </div>
    </div>
    <div id="resources" class="mainpane">
        <div id="resources-header">
            <div id="header-logo"></div>
            <div id="header-rightside">
                <div id="header-userinfo">
                    <a id="header-username" role="menuitem" aria-haspopup="true" href="#"><span></span></a>
                </div>
                <div id="resources-searcharea">
                </div>
                <div id="skiplinks">
                </div>
            </div>
        </div>
        <div id="resources-container">
            <div id="resources-categoriesmenu">
            </div>
            <div id="resources-navigationbar">
                <a role="menuitem" href="#" class="storebutton _ctxstip_StoreButton" aria-haspopup="true" aria-labelledby="storebutton-label-text"></a>
                <span id="storebutton-label-text" class="screenreader-only _ctxstxt_StoreButton"></span>
            </div>
            <div id="resources-myapps">
                <div id="myapps-pane">
                </div>
            </div>
            <div id="resources-mydesktops">
                <div id="mydesktops-pane">
                </div>
            </div>
            <div id="resources-appshortcuts">
                <div id="appshortcuts-pane">
                </div>
            </div>
        </div>
        <div id="resources-footer">
            <div id="resources-switcher">
            </div>
            <div id="copyrightfooter">
                <p id="copyrightFooterText"></p>
            </div>
        </div>
    </div>

    <div id="protocolhandler-welcome" class="mainpane fullscreen-pane scrollable web-screen">
        <div class="vertical-center-outer">
            <div class="vertical-center-inner">
                <div class="welcome-container content-area">
                    <div class="box-links detection-right-links">
                        <h1 class="_ctxstxt_WelcomeToReceiver main-text"></h1>
                        <p class="welcome-for-full-experience detail-text"></p>
                        <a class="welcome-use-native-client default button _ctxstxt_DetectReceiver" href="#"></a>
                        <div class="footer">
                            <p class="welcome-use-light-text detail-text _ctxstxt_YouCanUseLightVersion"></p>
                            <a class="welcome-use-light-link web-screen-link _ctxstxt_UseLightVersion" href="#"></a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div id="protocolhandler-detect" class="mainpane fullscreen-pane scrollable web-screen">
        <div class="vertical-center-outer">
            <div class="vertical-center-inner">
                <div class="detect-container content-area">
                    <div class="box-links detection-right-links">
                        <h1 class="detect-heading main-text"></h1>
                        <p class="detect-if-already-installed detail-text"></p>
                        <p class="detect-no-prompt detail-text"></p>
                        <p class="pluginassistant-details">
                            <input id="legalstatement-checkbox2" class="legalstatement-checkbox" type="checkbox">
                            <label class="legalstatement-label" for="legalstatement-checkbox2">
                                <span class="detail-text _ctxstxt_IAgreeWith"></span>
                                <a class="licenseagreement-link web-screen-link _ctxstxt_CitrixLicenseAgreement" href="#" role="link"></a>
                            </label>
                        </p>
                        <a class="installbutton default button disabled _ctxstxt_Download" href="#"></a>
                        <div class="footer">
                            <a class="detect-retry-detection web-screen-link _ctxstxt_DetectAgain" href="#"></a>
                            <span class="detect-retry-detection-separator bar-separator">|</span>
                            <a class="detect-use-light-version web-screen-link _ctxstxt_UseLightVersion" href="#"></a>
                            <span class="detect-use-light-version-separator bar-separator">|</span>
                            <a class="detect-already-installed web-screen-link _ctxstxt_AlreadyInstalled" href="#"></a>
                            <span class="detect-already-installed-separator bar-separator">|</span>
                            <a class="securitydetailslink web-screen-link _ctxstxt_SecurityDetails" href="#" role="link"></a>
                        </div>
                        <div class="acceptterms-popup pluginassistant-popup">
                            <div class="_ctxstxt_AcceptTermsMessage" role="alertdialog"></div>
                        </div>
                        <div class="securitydetails-popup pluginassistant-popup _ctxstxt_SecurityInformation" role="alertdialog">
                            <h3 class="_ctxstxt_SecurityInformationTitle"></h3>
                            <p class="_ctxstxt_SecurityInformationText"></p>
                        </div>
                        <div class="licenseagreement-popup pluginassistant-popup _ctxstxt_LicenseAgreementContent" role="alertdialog">
                            <h3 class="_ctxstxt_LicenseAgreementContentTitle"></h3>
                            <p class="_ctxstxt_LicenseAgreementContentText"></p>
                            <p class="_ctxstxt_LicenseAgreementContentCode"></p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div id="protocolhandler-download" class="mainpane fullscreen-pane scrollable web-screen">
        <div class="vertical-center-outer">
            <div class="vertical-center-inner">
                <div class="download-container content-area">
                    <div class="box-links detection-right-links">
                        <h1 class="main-text _ctxstxt_DownloadingReceiver"></h1>
                        <p class="download-install-receiver detail-text"></p>
                        <a class="download-complete default button _ctxstxt_Continue" href="#"></a>
                        <div class="footer">
                            <a class="download-retry web-screen-link _ctxstxt_RetryDownload" href="#"></a>
                            <span class="download-retry-separator bar-separator">|</span>
                            <a class="download-use-light-version web-screen-link _ctxstxt_UseLightVersion" href="#"></a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div id="protocolhandler-validate" class="mainpane fullscreen-pane scrollable web-screen">
        <div class="vertical-center-outer">
            <div class="vertical-center-inner">
                <div class="validate-container content-area">
                    <div class="box-links detection-right-links">
                        <h1 class="main-text _ctxstxt_WaitWhileConfirmInstall"></h1>
                        <p class="validate-was-installed detail-text"></p>
                        <p class="validate-no-window detail-text"></p>
                        <div class="footer">
                            <a class="validate-retry-detection web-screen-link _ctxstxt_DetectAgain" href="#"></a>
                            <span class="bar-separator">|</span>
                            <a class="validate-retry-download web-screen-link _ctxstxt_DownloadAgain" href="#"></a>
                            <span class="validate-retry-download-separator bar-separator">|</span>
                            <a class="validate-use-light-version web-screen-link _ctxstxt_UseLightVersion" href="#"></a>
                            <span class="validate-use-light-version-separator bar-separator">|</span>
                            <a class="validate-already-installed web-screen-link _ctxstxt_AlreadyInstalled" href="#"></a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div id="protocolhandler-changeclient" class="mainpane fullscreen-pane scrollable web-screen">
        <div class="vertical-center-outer">
            <div class="vertical-center-inner">
                <div class="changeclient-container content-area">
                    <div class="box-links detection-right-links">
                        <h1 class="changeclient-heading main-text"></h1>
                        <p class="changeclient-currently-using detail-text"></p>
                        <div class="footer">
                            <a class="changeclient-use-light-version web-screen-link _ctxstxt_UseLightVersion" href="#"></a>
                            <span class="changeclient-use-light-version-separator bar-separator">|</span>
                            <a class="changeclient-use-full-version web-screen-link _ctxstxt_UseFullVersion" href="#"></a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div id="protocolhandler-checkupgrade" class="mainpane fullscreen-pane scrollable web-screen">
        <div class="vertical-center-outer">
            <div class="vertical-center-inner">
                <div class="checkupgrade-container content-area">
                    <div class="box-links detection-right-links">
                        <h1 class="_ctxstxt_CheckForUpgrade main-text"></h1>
                        <a id="checkUpgrade-CheckButton" class="installbutton default button _ctxstxt_Check" href="#"></a>
                        <div class="footer">
                            <a id="checkUpgrade-UpgradeLaterLink" class="checkupgrade-upgrade-later web-screen-link _ctxstxt_UpgradeLater" href="#"></a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div id="protocolhandler-detectupgrade" class="mainpane fullscreen-pane scrollable web-screen">
        <div class="vertical-center-outer">
            <div class="vertical-center-inner">
                <div class="detectupgrade-container content-area">
                    <div class="box-links detection-right-links">
                        <h1 class="_ctxstxt_CheckingForUpgrade main-text"></h1>
                        <p class="windowAppearsMessage detail-text"></p>
                        <p class="detectupgrade-continue-message detail-text"></p>
                        <a id="detectUpgrade-ContinueButton" class="installbutton default button _ctxstxt_Continue" href="#"></a>
                        <div class="footer">
                            <a id="detectUpgrade-DetectAgainLink" class="detectupgrade-detect-again web-screen-link _ctxstxt_DetectAgain" href="#"></a>
                            <span class="bar-separator">|</span>
                            <a id="detectUpgrade-UpgradeLaterLink" class="detectupgrade-upgrade-later web-screen-link _ctxstxt_UpgradeLater" href="#"></a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div id="protocolhandler-upgradeavailable" class="mainpane fullscreen-pane scrollable web-screen">
        <div class="vertical-center-outer">
            <div class="vertical-center-inner">
                <div class="upgradeavailable-container content-area">
                    <div class="box-links detection-right-links">
                        <h1 class="main-text"></h1>
                        <p class="pluginassistant-details">
                            <input id="legalstatement-upgrade-checkbox" class="legalstatement-checkbox" type="checkbox">
                            <label class="legalstatement-label" for="legalstatement-upgrade-checkbox">
                                <span class="detail-text _ctxstxt_IAgreeWith"></span>
                                <a class="licenseagreement-link web-screen-link _ctxstxt_CitrixLicenseAgreement" href="#" role="link"></a>
                            </label>
                        </p>
                        <a id="upgradeAvailable-DownloadButton" class="installbutton default button disabled _ctxstxt_Download" href="#"></a>
                        <div class="footer">
                            <a class="securitydetailslink web-screen-link _ctxstxt_SecurityDetails" href="#" role="link"></a>
                            <span class="bar-separator">|</span>
                            <a id="upgradeAvailable-UpgradeLaterLink" class="upgradeavailable-upgrade-later web-screen-link _ctxstxt_UpgradeLater" href="#"></a>
                            <a id="upgradeAvailable-UseLightVersionLink" class="upgradeavailable-use-light-version web-screen-link _ctxstxt_UseLightVersion" href="#"></a>
                            <span class="upgradeavailable-already-installed-separator bar-separator">|</span>
                            <a id="upgradeAvailable-AlreadyInstalledLink" class="upgradeavailable-already-installed web-screen-link _ctxstxt_AlreadyInstalled" href="#"></a>
                        </div>
                        <div class="acceptterms-popup pluginassistant-popup">
                            <div class="_ctxstxt_AcceptTermsMessage" role="alertdialog"></div>
                        </div>
                        <div class="securitydetails-popup pluginassistant-popup" role="alertdialog">
                            <h3 class="_ctxstxt_SecurityInformationTitle"></h3>
                            <p class="_ctxstxt_SecurityInformationText"></p>
                        </div>
                        <div class="licenseagreement-popup pluginassistant-popup _ctxstxt_LicenseAgreementContent" role="alertdialog">
                            <h3 class="_ctxstxt_LicenseAgreementContentTitle"></h3>
                            <p class="_ctxstxt_LicenseAgreementContentText"></p>
                            <p class="_ctxstxt_LicenseAgreementContentCode"></p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div id="protocolhandler-noupgrades" class="mainpane fullscreen-pane scrollable web-screen">
        <div class="vertical-center-outer">
            <div class="vertical-center-inner">
                <div class="noupgrades-container content-area">
                    <div class="box-links detection-right-links">
                        <h1 class="_ctxstxt_NoUpgradesAvailable main-text"></h1>
                        <a id="noUpgradesAvailable-ContinueButton" class="installbutton default button _ctxstxt_Continue" href="#"></a>
                    </div>
                </div>
            </div>
        </div>
    </div>

<!-- One of the main display panes (only one displayed at a time), used for message screens such as logoff -->
    <div id="mainmessagepane" class="mainpane messagepane" role="alertdialog">
    </div>
    <!-- Modal dialog used for change password functionality -->
    <div id="changepassword-dialog" role="alertdialog" aria-describedby="messagebox-text">
    </div>
    <!-- Alert box is an overlay on top of other page content, simulating a modal dialog -->
    <div id="alertbox" role="alertdialog" aria-describedby="messagebox-text">
    </div>
    <div id="hiddeniframes">
        <iframe id="protocolhandler-invoker"></iframe>
        <div id="wizard-plugindetection">
            <!--For the wizard-->
        </div>
    </div>
    <div id="contextmenu">
        <!-- Right click context menu to be created here to faciliate event handling (bubbling)-->
    </div>
</body>
</html>


Link to comment
Share on other sites

Hi Rhonda,

 

I am happy to use HTTP if it can respond on a header.  I have about 8 of these to do for different services and not just storefront.  All wanting the same response from checking a title.  I just put in the citrix storefront as I thought it would have been easier.

 

Is there a way of doing http monitor for checking the title?

Link to comment
Share on other sites

Sorry, for the delay.  

1) to look at the title you have to use the HTTP-ECV monitor to look at body content (which includes the HEAD section) which is not the same thing as the headers (i misspoke earlier). Any content in the body must be early on (which the title qualifies for) other content, it depends.

2) to look at response code (200 or other) you use an HTTP monitor.  You cannot look at the <title> in the HTTP monitor; just response code or a custom web request header.  

3) The "receive string" field is case sensitive and must exactly match what you are looking for and be present on the page you expect.

 

 

For example, I have a call to a simple /maint.htm page with the following output:

Making it for a given website where it just says online vs down for maint is a simple fix and simplifies the content tests by avoiding the long "style" section.

<!doctype html>
<title>Site Maintenance</title>
<style>
  body { text-align: center; padding: 150px; }
  h1 { font-size: 50px; }
  body { font: 20px Helvetica, sans-serif; color: #333; }
  article { display: block; text-align: left; width: 650px; margin: 0 auto; }
  a { color: #dc8100; text-decoration: none; }
  a:hover { color: #333; text-decoration: none; }
</style>

<article>
    <h1>OOPS!</h1>
    <div>
    <p></p>
    <center><p></p>
        <p>Sorry for the inconvenience. Something broke. We're performing some maintenance at the moment. We&rsquo;ll be back online shortly!</p>
        <p>&mdash; The Team</p></center>
    </div>
</article>

 

So in order for the monitor to look at the TITLE, you would configure the following:

add lb monitor mon_rbg_maint1 HTTP-ECV -send "GET /maint.htm" -recv "Site Maintenance" -LRTM DISABLED
## no quotes needed when entered in GUI; just for CLI

 

You can look for the <title> tags, but not required:  but case of tags has to match...

add lb monitor mon_rbg_maint2 HTTP-ECV -send "GET /maint.htm" -recv "<title>Site Maintenance</title>" -LRTM DISABLED
 

BUT this is a simple website, where I know my call to /maint.htm is retrieving a single object and this is the only content I have to look at.

 

===

Use the F12 developer menu and the view page source function of your browser to confirm the page you call is 1) the first object retrieved for the monitor AND 2) contains the content you are looking at.   The reality is the header test is probably the best one to use.

 

If you are load balancing multiple web sites on the same lb vserver; then the service should only monitor one thing as they all go up/down together. If these are separate web sites on separate services/load balanced separately, you *can* use separate monitors; but generally a simple HTTP/200 OK test is all you need.  Keep it simple.  The simplest monitor that works is what you want to go with.  Response body checks are limited.

 

 

But the second thing I think is going on is that your call to https://<storefront>/Citrix/StoreNameWeb

is actually a call to many complex page objects and the page you are sending the monitor too:  /Citrix/StoreNameWeb doesn't actually contain the title string until a much later object loads.  And whether that title says CitrixReceiver or some other value is also going to depend on the user-agent.  

But I may not be on the same version.

But if you see the attached screenshot, the call to load storefront is all those objects in the developer pane; the one that is actually /Store-1Web doesn't contain the title string you are looking for.

 

For storefront specifically, use HTTP or the STOREFRONT monitor for best results. They will work without the title string.

For other websites, keep it simple and make sure page you probe contains the string you are looking for on the exact object requested and not a series of dependent object. If the website is complex; try implementing a specific maintenance test page that can return a simple validation the web server is working or again switch to juse confirming response codes instead of body strings or titles.

screenshot_example_storefront_title.thumb.jpg.8ee87822314ddb7c81fbf3be67472bd8.jpg

 

 

 

 

 

 

 

Link to comment
Share on other sites

Hi Rhonda,

 

Unfortunately that still didn't work.

 

I ran the following command:

add lb monitor mon_citrixHTTPS HTTP-ECV -send "GET /Citrix/xxxWeb" -recv "Citrix Receiver" -LRTM DISABLED.

I then bound the certificate to this monitor to convert to HTTPS.

 

image.thumb.png.a0ffe29f268a23abcd80ed9f3d623236.png

 

Unfortunately when I bind it to the service I get the following error:

Failure - Pattern not found in response

 

Yet when I go to that webpage and press F12, I get the following:

image.thumb.png.9ee0ff4540667d7576060d6d91cefb6a.png

 

Any idea?

Link to comment
Share on other sites

That's what I'm telling you: I don't think the actual /Store-Web page contains the <title> citrix receiver:  my page didn't. One of the dependent objects might have; but the monitor is looking at the one request object only.

Just because its in the page source doesn't mean it is the object you are looking at. 

 

This title is on a different sub-object.

Also that title may change depending on if you have a user-agent that indicates browser vs. server.

 

So, I would change your monitor to JUST looking at the 200 OK message.  HTTP monitor.  OR use the StoreFront monitor. But give up using the title on the storefront server. Other websites the title may be fine.

Link to comment
Share on other sites

Hi Rhonda,

 

Thank you for the response.

 

It's interesting that that monitor configuration works for the barracuda but not the VPX.  We are migrating from Barracuda to VPX, using the same IP Addresses, etc and the VPX equivalent monitors.

 

I am thinking its an issue with the https-ecv monitor rather than anything else.

 

I also changed the receive content to something in the body and it still fails.

 

Can you test if it works for you please (HTTPS-ECV) if possible.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...