Microsoft.SystemCenter.WebApplication.UrlProbe

The Microsoft.SystemCenter.WebApplication.UrlProbe probe module connects to one or more URLs and returns Microsoft.SystemCenter.WebApplication.WebApplicationData. This data can then be used with other modules from the Microsoft.SystemCenter.WebApplication.Library to evaluate the health state of various aspects of the target website.

Usage

The primary function of Microsoft.SystemCenter.WebApplication.UrlProbe is to send a request to one or more URLs and report on the results. The format of the request is a complex type and is used with other modules to evaluate the health state of the target URL. Because large numbers of requests can be made with a single probe, and because the results of the request can contain a large amount of data, the probe itself carries out some evaluation of the request before producing the output. For example, instead of just providing the status code from the queried URL as output, the module compares the status code against a specified range and provides a success or failure code as output. The module can also match the content of the HTML that's returned by the request, for example, matching the word error to determine if an error page was returned. This evaluation performed by the module removes the need for complex expression matching logic in your rule or monitor.

This module is often commonly triggered using Microsoft.SystemCenter.WebApplication.PerProbe.Scheduler.

The Microsoft.SystemCenter.WebApplication.UrlProbe module is commonly used with a number of condition detection modules, which are intended to evaluate its output. The module evaluates different aspects of the health of the URL based on parameters defined in the request and returns the appropriate output for each.

Some of those parameters evaluate directly to a health state. For these parameters, you would use three condition detection modules, each of which matches a specific integer output from the probe indicating a particular health state, as shown in the following table:

Condition Detection Module Matched value
Microsoft.SystemCenter.WebApplication.OKCriteriaMatch 1
Microsoft.SystemCenter.WebApplication.WarningCriteriaMatch 2
Microsoft.SystemCenter.WebApplication.ErrorCriteriaMatch 3

Other parameters return a binary status. For those cases, two condition detection modules are used, each of which matches a Boolean type from the probe as shown in the following table:

Condition Detection Module Matched value
Microsoft.SystemCenter.WebApplication.Boolean.CriteriaDoesNotMatch false
Microsoft.SystemCenter.WebApplication.Boolean.CriteriaMatch true

Finally, some raw values are returned, which you can either collect for analysis and reporting or use with expression filter condition detection modules.

Type definition

<ProbeActionModuleType ID="Microsoft.SystemCenter.WebApplication.UrlProbe" Accessibility="Public" Batching="false" PassThrough="false">
   <Configuration>
      <IncludeSchemaTypes>
         <SchemaType>Microsoft.SystemCenter.WebApplication.WebModulesSchema</SchemaType>
      </IncludeSchemaTypes>
      <xsd:element name="Proxy" type="xsd:string" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
      <xsd:element name="ProxyUserName" type="xsd:string" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
      <xsd:element name="ProxyPassword" type="xsd:string" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
      <xsd:element name="ProxyAuthenticationScheme" type="AuthenticationSchemeType" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
      <xsd:element name="CredentialUserName" type="xsd:string" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
      <xsd:element name="CredentialPassword" type="xsd:string" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
      <xsd:element name="AuthenticationScheme" type="AuthenticationSchemeType" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
      <xsd:element name="IgnoreServerCertError" type="xsd:boolean"  xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
      <xsd:element name="FollowRedirects" type="xsd:boolean" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
      <xsd:element name="RetryCount" type="xsd:unsignedInt" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
      <xsd:element name="RequestTimeout" type="xsd:unsignedInt" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
      <xsd:element name="Requests" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
         <xsd:complexType>
            <xsd:sequence>
               <xsd:element name="Request" type="RequestType" minOccurs="0" maxOccurs="unbounded" />
            </xsd:sequence>
         </xsd:complexType>
      </xsd:element>
      <xsd:element name="TransactionResponseTimeWarningCriteria" type="RequestEvaluationNumericCriteriaType" minOccurs="0" maxOccurs="1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
      <xsd:element name="TransactionResponseTimeErrorCriteria" type="RequestEvaluationNumericCriteriaType" minOccurs="0" maxOccurs="1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
      <xsd:element name="PerformanceCollectionFrequencyInCycles" type="xsd:unsignedInt" minOccurs="0" maxOccurs="1" default="1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
   </Configuration>
   <OverridableParameters>
      <OverridableParameter ID="Proxy" Selector="$Config/Proxy$" ParameterType="string" />
      <OverridableParameter ID="ProxyUserName" Selector="$Config/ProxyUserName$" ParameterType="string" />
      <OverridableParameter ID="ProxyPassword" Selector="$Config/ProxyPassword$" ParameterType="string" />
      <OverridableParameter ID="ProxyAuthenticationScheme" Selector="$Config/ProxyAuthenticationScheme$" ParameterType="string" />
      <OverridableParameter ID="CredentialUserName" Selector="$Config/CredentialUserName$" ParameterType="string" />
      <OverridableParameter ID="CredentialPassword" Selector="$Config/CredentialPassword$" ParameterType="string" />
      <OverridableParameter ID="AuthenticationScheme" Selector="$Config/AuthenticationScheme$" ParameterType="string" />
      <OverridableParameter ID="IgnoreServerCertError" Selector="$Config/IgnoreServerCertError$"  ParameterType="bool"/>
      <OverridableParameter ID="FollowRedirects" Selector="$Config/FollowRedirects$" ParameterType="bool" />
      <OverridableParameter ID="RetryCount" Selector="$Config/RetryCount$" ParameterType="int" />
      <OverridableParameter ID="RequestTimeout" Selector="$Config/RequestTimeout$" ParameterType="int" />
   </OverridableParameters>
   <ModuleImplementation Isolation="Any">
      <Native>
         <ClassID>92C599FD-6639-4A9F-90DA-E1350162A318</ClassID>
      </Native>
   </ModuleImplementation>
   <OutputType>Microsoft.SystemCenter.WebApplication.WebApplicationData</OutputType>
   <TriggerOnly>true</TriggerOnly>
</ProbeActionModuleType>

Parameters

The Microsoft.SystemCenter.WebApplication.UrlProbe module supports the configuration parameters described in the following table.

Parameter Type Overridable Description
Proxy String True Required parameter, but can be empty. Specifies the name of the proxy server if the agent requires one to access the URL.
ProxyUserName String True Required parameter, but can be empty. Specifies the username to be used with the proxy server if the specified proxy server requires authentication.
ProxyPassword String True Required parameter, but can be empty. Specifies the password to be used with the proxy server if the specified proxy server requires authentication.
ProxyAuthenticationScheme AuthenticationSchemeType True Required parameter. Specifies the authentication scheme to be used with the proxy server, if the agent requires one to access the URL. Valid values are None, Basic, NTLM, Digest, and Negotiate.
CredentialUserName String True Required parameter, but can be empty. Specifies the username to be used with the URL being queried.
CredientialPassword String True Required parameter, but can be empty. Specifies the password to be used with the URL being queried.
AuthenticationScheme AuthenticationSchemeType True Required parameter. Specifies the authentication scheme to be used with the URL being queried. Valid values are None, Basic, NTLM, Digest, and Negotiate.
IgnoreServerCertError Boolean True Specifies whether the server certificate errors should be ignored.
FollowRedirects Boolean True Required parameter. Specifies whether the query should follow URL redirects.
RetryCount Integer True Required parameter. Specifies the number of times the module should retry the specified URL before timing out.
RequestTimeout Integer True Required parameter. Specifies the length of time to wait for a response from the specified URL before retrying.
Requests Complex Type False Collection of Request elements (see below).
TransactionResponseTimeWarningCriteria RequestEvaluationNumericCriteriaType False Optional parameter. Specifies the response time at which to specify a warning.
TransactionResponseTimeErrorCriteria RequestEvaluationNumericCriteriaType False Optional Parameter. Specifies the response time at which to specify an error.
PerformanceCollectionFrequencyInCycles Integer False Optional Parameter. Specifies how many query intervals must be completed before each collection. If the value is 1, then the counters will be collected each time the browser session is run. If it's 2, then the counters will only be collected every second time the browser session is run, and so on.

Request element

The Requests element is a collection of one or more Request elements. Each Request element has a RequestID subelement which uniquely identifies the request within that set of Requests. Requests are processed in order, according to their RequestID. The Request element consists of the following elements:

Element Type Description
RequestID Integer Because each probe can initiate multiple requests, the RequestID uniquely identifies each request and specifies the order that the requests will be processed.
URL String The URL to be queried.
Verb VerbType Indicates the verb to use with the URL request. Can take any of the following values: GET, HEAD, or POST.
Version VersionType Indicates the HTTP type for the request. Valid values are HTTP/1.0 and HTTP/1.1.
HttpHeaders HttpHeadersType HTTP headers for the request. The HttpHeadersType is a complex type consisting of 0 or more HttpHeader elements, which are of type NameValueType. The NameValueType, in turn consists of two required elements, Name and Value.
Body String The value will be empty if the VerbType is GET or HEAD. If the VerbType is POST. This is the body of the request submitted by the post.
CheckContentChange Boolean If true, provides additional content validation.
ContentHash ContentHashType Consists of a string of 36 characters, hexadecimal 8-4-4-4-12.
Depth Integer Specifies the number of levels of external links to collect. If the value is 0, only the links on the page itself are evaluated. If the value is 1, then the links on each target page are evaluated. If the value is 2, then the links on those target pages are evaluated, and so on.
ThinkTime Integer Amount of time to wait between the request and collection of the body.
CheckInternalLinks Boolean Enables collection of the status of each internal link and includes internal links in the evaluation of the monitor for the request. An internal link is a link that refers to a location on the same page.
CheckExternalLinks Boolean Enables collection of the status of each external link and includes external links in the evaluation of the monitor for the request. An external link is a link that refers to a location outside the current page.
CheckResources Boolean If true, the monitor returns the status of the resources for the page. Instead of measuring each individual resource, the total of all resources are evaluated. If false, the resource monitor isn't functional for the request.
RequestEvaluationCriteria RequestEvaluationCriteriaType A complex type that evaluates the data returned by the request (see below).
FormsAuthCredentials FormsAuthCredentialsType Complex type that consists of CredentialName, UserName, and Password strings.

RequestEvaluationCriteria element

The RequestEvaluationCriteria element provides the ability to evaluate the data returned by the request and determine the health of the URL. Each element is a complex type, which contains criteria that can be matched in one of three ways:

  • Numeric criteria. This is the most common and is used to evaluate a measurable value, such as a returned status code or response time.
  • Content match criteria. This is used to evaluate the content of the returned HTML to determine whether it contains a particular string of text.
  • Custom criteria. This is an expression that matches on a variety of different available parameters defined by the user.

Any number of numeric criteria or custom criteria can be used, but only one content match criterion is allowed. The RequestEvaluationCriteriaType consists of the following elements:

Element Type Description
StopProcessingIfWarningCriteriaIsMet Boolean If true, stops processing the request once the warning condition has been met.
StopProcessingIfErrorCriteriaIsMet Boolean If true, stops processing the request once the error condition has been met.
BasePageEvaluationCriteria Complex type Consists of two elements evaluating the base page, WarningCriteria and ErrorCriteria , both of type BasePageEvaluationCriteriaType.
LinksEvaluationCriteria Complex type Consists of two elements evaluating the links on the page, WarningCriteria and ErrorCriteria, both of type ChildRequestsEvaluationCriteriaType. ChildRequestsEvaluationCriteriaType consists of zero or more NumericCriteriaExpressions of type RequestEvaluationNumericCriteriaType, zero or one StatusCodeCriteria of type ListNumericRequestCriteriaType, and zero or more CustomCriteria of type ExpressionType.
ResourcesEvaluationCriteria Complex type Consists of two elements evaluating the resources on the page, WarningCriteria and ErrorCriteria, both of type ChildRequestsEvaluationCriteriaType. ChildRequestsEvaluationCriteriaType consists of zero or more NumericCriteriaExpressions of type RequestEvaluationNumericCriteriaType, zero or one StatusCodeCriteria of type ListNumericRequestCriteriaType, and zero or one CustomCriteria of type ExpressionType.
WebPageTotalEvaluationCritieria Complex type Consists of two elements, WarningCriteria and ErrorCriteria, both of type WebPageTotalEvaluationCriteriaType (see below). WebPageTotalEvaluationCriteriaType measures the total statistics for the page, including the base page, links, and resources, and is of type WebPageTotalEvaluationCriteriaType. WebPageTotalEvaluationCriteriaType consists only of zero or more instances of NumericCriteriaExpression, which is of RequestEvaluationNumericCriteriaType, described below.
DepthEvaluationCriteria Complex type Consists of two elements, WarningCriteria and ErrorCriteria, both of type DepthEvaluationCriteriaType. DepthEvaluationCriteriaType consists of zero or one instance(s) of ListNumericRequestCriteriaType, discussed below.

The most common type of evaluation is numeric, in which an item of returned data, such as a resolution time, is compared against a configured threshold. NumericCriteriaExpression is of type RequestEvaluationNumericCriteriaType, which has three elements: NumericRequestMetric, Operator, and Value.

NumericRequestMetric is of type NumericRequestMetricType, which is an enumeration that can consist one of a number of metrics. Each metric is associated with a specific evaluation criterion, as follows:

Criteria Metric
BasePageData DNSResolutionTime
TCPConnectTime
TimeToFirstByte
TimeToLastByte
RedirectTime
DownloadTime
TotalResponseTime
ContentSize
StatusCode
DaysToExpiry
LinkData AggregateDNSResolutionTime
AggregateTCPConnectTime
AggregateTimeToFirstByte
AggregateTimeToLastByte
AggregateRedirectTime
AggregateDownloadTime
AggregateTotalResponseTime
AggregateContentSize
ResourceData AggregateDNSResolutionTime
AggregateTCPConnectTime
AggregateTimeToFirstByte
AggregateTimeToLastByte
AggregateRedirectTime
AggregateDownloadTime
AggregateTotalResponseTime
AggregateContentSize
TotalData AggregateDNSResolutionTime
AggregateTCPConnectTime
AggregateTimeToFirstByte
AggregateTimeToLastByte
AggregateRedirectTime
AggregateDownloadTime
AggregateTotalResponseTime
AggregateContentSize
None TransactionResponseTime

The Operator element is of type CriteriaCompareType, which consists of one of the following: Equal, NotEqual, Greater, Less, GreaterEqual, or LessEqual.

The Value element is of type double, and specifies the type of the value being compared.

If the returned data item you wish to evaluate is not numeric, such as a content evaluation, you will need to compare against a string. ContentMatchCriteria is of type RequestEvaluationStringCriteriaType, which has two subelements: Operator and Value. Operator can be one of two types:

  • SimpleStringOperator, which is of type CriteriaCompareType, which is an enumeration consisting of Equal, NotEqual, Greater, Less, or GreaterEqual.
  • RegExOperator, which is of type RegExCompareType, which is an enumeration type consisting of ContainsSubstring, MatchesWildcard, MatchesRegularExpression, MatchesMOM2005RegularExpression, MatchesMOM2005BooleanRegularExpression, DoesNotContainSubstring, DoesNotMatchWildcard, DoesNotMatchRegularEspression, DoesNotMatchMOM2005RegularExpression, or DoesNotMatchMOM2005BooleanRegularExpression

The other element of RequestEvaluationStringCriteriaType is Value, which is a string to be compared.

The CustomCriteria element is of type ExpressionType.

The StatusCodeCriteria element found in LinksEvaluationCriteria and ResourcesEvaluationCriteria is of type ListNumericRequestCriteriaType. ListNumericRequestCriteriaType consists of a sequence of three elements: ListNumericRequestMetric, which can only be the string StatusCode, Operator, which is of CriteriaCompareType, covered earlier, and a Value, which must be of type double.

The key to creating a useful URL probe is in the Request element, and usually in the NumericRequestMetric. If you know what part of the web page you're trying to evaluate, you can choose the correct metric from the enumeration. However, ensure to select the correct category of metric. The metrics for link data, resource data, and total data are all aggregates, and are available for all three categories. So ensure to specify the correct category and ask for it in the correct part of the Request element.

If you only want to evaluate the status code for a particular part of the page (base page, links), use the StatusCodeCriteria element, which would look like this:

<StatusCodeCriteria>
  <ListNumericRequestMetric>StatusCode</ListNumericRequestMetric>
  <Operator>GreaterEqual</Operator>
  <Value>400</Value>
</StatusCodeCriteria>

This StatusCodeCriteria section checks for a success response from the probe (Status code greater than or equal to 400).

Composition

The Microsoft.SystemCenter.WebApplication.UrlProbe module is a native module.

Module Type Usage
Microsoft.SystemCenter.WebApplication.OKCriteriaMatch Condition detection module used to evaluate when the data source module returns a value of 1 (OK).
Microsoft.SystemCenter.WebApplication.WarningCriteriaMatch Condition detection module used to evaluate when the data source module returns a value of 1 (Warning).
Microsoft.SystemCenter.WebApplication.ErrorCriteriaMatch Condition detection module used to evaluate when the data source module returns a value of 1 (Error).
Microsoft.SystemCenter.WebApplication.Boolean.CriteriaDoesNotMatch Condition detection module used to evaluate when the data source module returns a value of false.
Microsoft.SystemCenter.WebApplication.Boolean.CriteriaMatch Condition detection module used to evaluate when the data source module returns a value of true.

External module references

Module Type Usage
Microsoft.SystemCenter.WebApplication.SingleUrlProbe Tests a single URL to determine if the status code is anything other than 200.

Sample

The following example carries out a simple URL probe against the URL http://www.microsoft.com. The data source evaluates the status code returned for the base page, and returns a value of 3 if the status code is greater than 400, indicating an error state. It also evaluates the status code returned for the resources, and links, and returns a value of 2 if the status code is greater than 400, indicating a warning state.

<TypeDefinitions>
 <ModuleTypes>
   <DataSourceModuleType ID="MPAuthor.WebApplications.UrlDataSource" Accessibility="Public" Batching="false">
     <Configuration />
     <ModuleImplementation Isolation="Any">
       <Composite>
         <MemberModules>
           <DataSource ID="Scheduler" TypeID="MicrosoftSystemCenterWebApplicationLibrary!Microsoft.SystemCenter.WebApplication.PerProbe.Scheduler">
             <Scheduler>
               <SimpleReccuringSchedule>
                 <Interval Unit="Seconds">120</Interval>
                 <SpreadInitializationOverInterval Unit="Seconds">120</SpreadInitializationOverInterval>
               </SimpleReccuringSchedule>
               <ExcludeDates />
             </Scheduler>
             <UniquenessKey>$Target/Id$</UniquenessKey>
           </DataSource>
           <ProbeAction ID="Probe" TypeID="MicrosoftSystemCenterWebApplicationLibrary!Microsoft.SystemCenter.WebApplication.UrlProbe">
             <Proxy />
             <ProxyUserName />
             <ProxyPassword />
             <ProxyAuthenticationScheme>None</ProxyAuthenticationScheme>
             <CredentialUserName />
             <CredentialPassword />
             <AuthenticationScheme>None</AuthenticationScheme>
             <IgnoreServerCertError>false</IgnoreServerCertError>
             <FollowRedirects>true</FollowRedirects>
             <RetryCount>0</RetryCount>
             <RequestTimeout>0</RequestTimeout>
             <Requests>
               <Request>
                 <RequestID>1</RequestID>
                 <URL>http://www.microsoft.com</URL>
                 <Verb>GET</Verb>
                 <Version>HTTP/1.1</Version>
                 <HttpHeaders>
                   <HttpHeader>
                     <Name>User-Agent</Name>
                     <Value>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)</Value>
                   </HttpHeader>
                 </HttpHeaders>
                 <Body />
                 <CheckContentChange>false</CheckContentChange>
                 <ContentHash>00000000-0000-0000-0000-000000000000</ContentHash>
                 <Depth>0</Depth>
                 <ThinkTime>0</ThinkTime>
                 <CheckInternalLinks>false</CheckInternalLinks>
                 <CheckExternalLinks>false</CheckExternalLinks>
                 <CheckResources>false</CheckResources>
                 <RequestEvaluationCriteria>
                   <StopProcessingIfWarningCriteriaIsMet>false</StopProcessingIfWarningCriteriaIsMet>
                   <StopProcessingIfErrorCriteriaIsMet>false</StopProcessingIfErrorCriteriaIsMet>
                   <BasePageEvaluationCriteria>
                     <WarningCriteria />
                     <ErrorCriteria>
                       <NumericCriteriaExpressions>
                         <NumericCriteriaExpression>
                           <NumericRequestMetric>BasePageData/StatusCode</NumericRequestMetric>
                           <Operator>GreaterEqual</Operator>
                           <Value>400</Value>
                         </NumericCriteriaExpression>
                       </NumericCriteriaExpressions>
                     </ErrorCriteria>
                   </BasePageEvaluationCriteria>
                   <LinksEvaluationCriteria>
                     <WarningCriteria>
                       <StatusCodeCriteria>
                         <ListNumericRequestMetric>StatusCode</ListNumericRequestMetric>
                         <Operator>GreaterEqual</Operator>
                         <Value>400</Value>
                       </StatusCodeCriteria>
                     </WarningCriteria>
                     <ErrorCriteria />
                   </LinksEvaluationCriteria>
                   <ResourcesEvaluationCriteria>
                     <WarningCriteria>
                       <StatusCodeCriteria>
                         <ListNumericRequestMetric>StatusCode</ListNumericRequestMetric>
                         <Operator>GreaterEqual</Operator>
                         <Value>400</Value>
                       </StatusCodeCriteria>
                     </WarningCriteria>
                     <ErrorCriteria />
                   </ResourcesEvaluationCriteria>
                   <WebPageTotalEvaluationCriteria>
                     <WarningCriteria />
                     <ErrorCriteria />
                   </WebPageTotalEvaluationCriteria>
                   <DepthEvaluationCriteria>
                     <WarningCriteria />
                     <ErrorCriteria />
                   </DepthEvaluationCriteria>
                 </RequestEvaluationCriteria>
                 <FormsAuthCredentials />
                 <CollectResponseBody>OnContentMatchCriteria</CollectResponseBody>
                 <CollectLinksHeaders>false</CollectLinksHeaders>
                 <CollectResourcesHeaders>false</CollectResourcesHeaders>
               </Request>
             </Requests>
           </ProbeAction>
         </MemberModules>
         <Composition>
           <Node ID="Probe">
             <Node ID="Scheduler" />
           </Node>
         </Composition>
       </Composite>
     </ModuleImplementation>
     <OutputType>MicrosoftSystemCenterWebApplicationLibrary!Microsoft.SystemCenter.WebApplication.WebApplicationData</OutputType>
   </DataSourceModuleType>
 </ModuleTypes>
 <MonitorTypes>
   <UnitMonitorType ID="MPAuthor.WebApplications.BasePageErrorCodeMonitor" Accessibility="Internal">
     <MonitorTypeStates>
       <MonitorTypeState ID="ErrorCodeFailure" NoDetection="false" />
       <MonitorTypeState ID="ErrorCodeSuccess" NoDetection="false" />
     </MonitorTypeStates>
     <Configuration>
       <xsd:element minOccurs="1" name="RequestID" type="xsd:integer" />
     </Configuration>
     <MonitorImplementation>
       <MemberModules>
         <DataSource ID="DS1" TypeID="MPAuthor.WebApplications.UrlDataSource" />
         <ConditionDetection ID="CDErrorCodeFailureTrue" TypeID="System!System.ExpressionFilter">
           <Expression>
             <SimpleExpression>
               <ValueExpression>
                 <XPathQuery>RequestResults/RequestResult[@Id="$Config/RequestID$"]/BasePageData/ErrorCode</XPathQuery>
               </ValueExpression>
               <Operator>NotEqual</Operator>
               <ValueExpression>
                 <XPathQuery>0</XPathQuery>
               </ValueExpression>
             </SimpleExpression>
           </Expression>
         </ConditionDetection>
         <ConditionDetection ID="CDErrorCodeFailureFalse" TypeID="System!System.ExpressionFilter">
           <Expression>
             <SimpleExpression>
               <ValueExpression>
                 <XPathQuery>RequestResults/RequestResult[@Id="$Config/RequestID$"]/BasePageData/ErrorCode</XPathQuery>
               </ValueExpression>
               <Operator>Equal</Operator>
               <ValueExpression>
                 <XPathQuery>0</XPathQuery>
               </ValueExpression>
             </SimpleExpression>
           </Expression>
         </ConditionDetection>
       </MemberModules>
       <RegularDetections>
         <RegularDetection MonitorTypeStateID="ErrorCodeFailure">
           <Node ID="CDErrorCodeFailureTrue">
             <Node ID="DS1" />
           </Node>
         </RegularDetection>
         <RegularDetection MonitorTypeStateID="ErrorCodeSuccess">
           <Node ID="CDErrorCodeFailureFalse">
             <Node ID="DS1" />
           </Node>
         </RegularDetection>
       </RegularDetections>
     </MonitorImplementation>
   </UnitMonitorType>
 </MonitorTypes>
</TypeDefinitions>

Information

** ** ** **
Module Type ProbeActionModuleType
Input Type None
Output Type Microsoft.SystemCenter.WebApplication.WebApplicationData
Implementation Native
Library Microsoft.SystemCenter.WebApplication.Library