Web Services is an XML-based technology that allow applications to communicate with each other, regardless of the environment, by exchanging messages in a standardized format (XML) via web interfaces (SOAP and WSDL APIs).
ManageEngine Applications Manager provides a flexible approach to manage a SOA that uses SOAP Web Services. It helps business managers configure SLAs and track high level availablity of the Web Service. Application admins can monitor the performance of these Web Services by configuring Applications Manager to execute 'Operations' published by the Web Service. By specifying the WSDL, a simple wizard helps you configure operations that need to be invoked and gives the ability to specify arguments to the operation. In addition to this, there is out-of-the-box support for configuring thresholds on individual operation execution times and user-defined XSLT parameters.
Prerequisites for monitoring Web Services metrics: Click here
Using the REST API to add a new Web Services monitor: Click here
To create a Web Services monitor, follow the steps given below:
If you have added Monitors and not associated them with a Monitor Group, you can do this manually anytime. For information on associating a Monitor with a Monitor Group, refer to Associating Monitor with Monitor Groups topic.
Note: If you want to access Web Services through Proxy, go to Settings → Configure Proxy Settings → Check if Proxy is configured, else configure the same. For hosts that don't require Proxy, add them to the No Proxy list.
You can add Operations to the Web Service for monitoring. Operations are abstract descriptions of actions supported by the service.
Follow the steps given below to add operations:
The Operations thus added, will be listed in the details page under the Operation Statistics section. In this section, you can view the details of the operation such as Operation Name, SOAP Request, SOAP Response, status and execution time. Applications Manager provides a link in the Alert Email for SOAP Action, to view the SOAP response for the specific operation. You can also configure thresholds and alarms for all the operations.
The Web Service Functions are used to give dynamic input for each SOAP Request. You have to replace the input value with the function specified in the above format.
Function | Description | Usage |
---|---|---|
${random(MinValue,MaxValue)} | This function will generate Random numbers as input. | ${random(100,1000)} This will generate a random number between 100 and 1000 E.g. 446. |
${time(TimeFormat)} | This method will generate current date and time as input. You can specify your own Date and Time Format. | ${time(yyyy-MM-dd(HH:mm:SSS))} This will generate the date and time in this format2015-09-21(16:49:717). |
${time(TimeFormat)#(1d,-1y)} | This method will generate custom year,date and time as input. You can specify your own Date and Time Format. | ${time(yyyy-MM-dd(HH:mm:SSS))#(5d,2m,-1y)} This will generate the date and time in this format2014-11-26(16:49:717). |
${passAuthToken(authtoken)} | This method will replace token/access key which is already derived from SOAP Response mentioned in ''Authentication Token''. | ${passAuthToken(authtoken)} This will generate token node in this format<LogOnToken>${passAuthToken(authtoken)}</LogOnToken>. Tag name <LogOnToken> is just an example, it could be anything actually. |
${nonce()} | This method will generate a random base64 encoded,16-byte nonce value. | ${nonce()} This will generate a random base64 encoded,16-byte nonce value to prevent request duplication. Ex : NGMzb05BeHF6V1dHNTNuNQ== |
After clicking Add Operation link, the user can define specific values to be monitored for a particular SOAP operation using the XSL transformation in the SOAP Request tab. When adding a particular operation, click Add XSL Transformation button and define the attributes to be monitored in the following format:
Syntax
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:m="<Endpoint_Method_URL>"
<xsl:output method="text"/>
<xsl:template match="/">
<Path to fetch the attribute>
</xsl:template>
</xsl:stylesheet>
To define specific attributes to be monitored, ensure that the following criterias are met:
<xsl:output method="text"/>
Example: To add an attribute for checking the days, make sure that the XSLT output is of the format Days:<xsl:value-of select="days"/> would create an attribute 'Days' whose value will be the value of the <days> tag present in the SOAP response.
Upon clicking the Update button, the defined attributes will be fetched and monitored along with their corresponsing values in the table under the SOAP Response tab, which can then be used to configure alarms, thresholds, actions, and generate reports as well. However, reports cannot be generated if the attributes monitored is of String format.
The keys should be unique within a particular SOAP Operation. They can be duplicated across operations.
Example
Let us consider the following SOAP Request of XML format which will be shown in the SOAP Request tab:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://webservice.domainname.com/temperature">
<soapenv:Body>
<xs:CelsiusToFahrenheit>
<xs:nCelsius>20</xs:nCelsius>
</xs:CelsiusToFahrenheit>
</soapenv:Body>
</soapenv:Envelope>
Let's say you want to monitor the result of the CelsiusToFahrenheit operation from the SOAP Request. To do so, click on Add XSL Transformation and define the attributes in the following format:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:m="http://webservice.domainname.com/temperature" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
Result:<xsl:value-of select="soap:Envelope/soap:Body/m:CelsiusToFahrenheitResponse/m:CelsiusToFahrenheitResult"/>
</xsl:template>
</xsl:stylesheet>
where,
Similarly, to fetch CelsiusToFahrenheitResponse node value, we can define as soap:Envelope/soap:Body/m:CelsiusToFahrenheitResponse in the path which will fetch the response node value.
Upon clicking Update, the attribute Result will be monitored along with the value of the CelsiusToFahrenheit operation in the table under the SOAP Response tab, which can then be used to configure alarms, thresholds, actions, and generate reports as well.
Under the Operation Statistics table, select the operation for which you wish to view the XSLT data. This opens the SOAP Response tab under which the attributes are listed in a tabular format with functionality to add thresholds and view reports. For numeric data, the graphic data is displayed after the table.
Click the Manage Operation link under the Operation Statistics section to go to the 'Manage Operation' page. In this page, click the icon to edit the Operation Display name as well as the Arguments including SOAP Action and SOAP Request values.
How to add XSLT input to existing operations ?
Where to view the attributes created using XSLT ?
How do I enable reports for the attributes?
You can enable reports for the attributes in the following two ways:
From the SOAP Response Page:
From the Reports Tab:
Following are the metrics monitored in Web server monitor:
Parameter | Description |
---|---|
WSDL Response Time | |
Response Time | Time taken obtain a response from the web service (in milliseconds). |
Operation Statistics | |
Operation Name | Name of the operation performed. |
Execution Time | Time taken for the operation to be executed (in milliseconds). |
You can also view the custom attributes of the Web Service in the same page. Click Add Attributes to add custom Web Services attributes. For information on adding Custom Monitors, refer to Custom Monitors topic.
Sequential execution of SOAP Operations:
Create a sequence of SOAP Operations wherein the output obtained from one SOAP Response is used as the input for the next SOAP Request. To do so, follow the steps given below:
After monitor creation, add the operations. For the operations where the input is taken from the response of another operation, call the function passAuthToken.
Syntax: ${passAuthToken(authtoken)}
Example: ${passAuthToken(GetCitiesByCountry_SEP_City)}