Question: How the Netscaler monitors the XML service when Citrix-XML-Monitor is used on Netscaler ?
Answer: When Citrix-XML monitor is bound to to the service on Netscaler. Netscaler send the below POST request:
POST /scripts/wpnbr.dll HTTP/1.1
Host: 54.97.64.99
Content-Length: 239
Content-Type: text/xml
Connection: Close
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE NFuseProtocol SYSTEM "NFuse.dtd">
<NFuseProtocol version="4.1">
<RequestAddress>
<Flags>no-load-bias</Flags><Name>
<AppName>NOTEPAD</AppName> <<------ This is the Appname being monitored.
</Name>
</RequestAddress>
</NFuseProtocol>
HTTP/1.1 100 Continue
Server: Citrix Web PN Server
Date: Fri, 08 Jan 2016 15:38:43 GMT
Backend sends below response if everything is correct and NetScaler will mark the service UP with Success: Ticket Tag found in the Response:
HTTP/1.1 200 OK
Server: Citrix Web PN Server
Date: Fri, 08 Jan 2016 15:38:44 GMT
Content-type: text/xml
Content-length: 442
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE NFuseProtocol SYSTEM "NFuse.dtd">
<NFuseProtocol version="5.0">
<ResponseAddress>
<ServerAddress addresstype="dot">5.214.54.50</ServerAddress>
<ServerType>win32</ServerType>
<ConnectionType>tcp</ConnectionType>
<ClientType>ica30</ClientType>
<TicketTag>IMAHostId:20826</TicketTag> <<<---------This is the ticket tag netscaler look for in the response.
<FarmLoadHint>0</FarmLoadHint>
</ResponseAddress>
</NFuseProtocol>
================
In case if there is any issue in 200 OK response, we will see some errors like below and Netscaler will mark the service as DOWN with Failure: Ticket Tag not found in Response.
First example below:
===
HTTP/1.1 200 OK
Server: Citrix Web PN Server
Date: Tue, 26 Jan 2016 14:26:04 GMT
Content-type: text/xml
Content-length: 308
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE NFuseProtocol SYSTEM "NFuse.dtd">
<NFuseProtocol version="5.0">
<ResponseAddress>
<ErrorId>unspecified</ErrorId>
<MPSError type="IMA">0x8000000D</MPSError> <<--- We are not getting TicketTag from backend server and getting Error
<BrowserError>0x00000024</BrowserError>
</ResponseAddress>
</NFuseProtocol>
Second example below:
===================
HTTP/1.1 200 OK
Server: Citrix Web PN Server
Date: Tue, 26 Jan 2016 14:26:04 GMT
Content-type: text/xml
Content-length: 316
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE NFuseProtocol SYSTEM "NFuse.dtd">
<NFuseProtocol version="5.0">
<ResponseAddress>
<ErrorId>service-unavailable</ErrorId>
<MPSError type="IMA">0x8000000B</MPSError> <<<-------- This is the error we get in case of any issues with backend
<BrowserError>0x00000024</BrowserError>
</ResponseAddress>
</NFuseProtocol>