EditAttachPrintable
r18 - 2015-03-30 - 14:55:17 - GeraldMitchellYou are here: TWiki >  Deployment Web > DeploymentMonitoring > CLMServerMonitoring > CLMServerMonitoringRules

new.png CLM Server Monitoring Rules

constantchange.png Authors: Boris Kuschel (BorisKuschel), GeraldMitchell
Build basis: Collaborative Lifecycle Management 4.0.6 and higher, CLM Server Monitoring Agent 5.0.1 and higher

Note that the CLM 4.0.x rules are different from the CLM 5.0.0 and above rules in structure. The CLM 5 rules capabilities are easier to manipulate and are more robust and are the recommended rules type for CLM 5.0 and higher. The rules behaviour resides in the MBeans, and so the behaviour is reliant of the CLM version, which is what has the CSM Plugin installed.

This is not dependent on CSM Agent version, as CSM Agent 5.0.1 and above have support for both rules types. Using CSM 4.0.6 rules in CSM 5.0.0 will revert CLM Server Monitoring Plugin to CSM 4.0.6 behavior, and is not recommended.


Warning These rules are currently under development.

CLM Server Monitoring rules 5.0 and higher

The issue rules are defined in an xml document and sent to the server to install into the rules engine. This provides the engine a way to evaluate resources as they are executing. A rule is comprised of the target resource information (type and name) followed by 1..n number of action elements. The action elements contain the logic which tests or evaluates the resource. See adding/removing rule section

Rule Schema

<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="ruleSet">
   <xsd:complexType>
      <xsd:sequence>
         <xsd:element name="rule" maxOccurs="unbounded" minOccurs="0">
            <xsd:complexType> 
                   <xsd:sequence>
                     <xsd:element name="action" maxOccurs="unbounded">
                        <xsd:complexType>                             
                           <xsd:choice>
                           <xsd:element name="and" maxOccurs="1" minOccurs="0" type="logicType"/>
                           <xsd:element name="or" maxOccurs="1" minOccurs="0" type="logicType"/>
                           <xsd:element name="not" maxOccurs="1" minOccurs="0" type="logicType"/>
                           <xsd:element name="test" maxOccurs="1" minOccurs="0" type="Test"/>
                        </xsd:choice>
                           <xsd:attribute name="name" use="required" type="xsd:string"/>
                        </xsd:complexType>
                     </xsd:element>
                   </xsd:sequence>
                   <xsd:attribute name="resourceType" type="xsd:string" use="required"/>
                   <xsd:attribute name="resourceName" type="xsd:string" use="optional"/>
                   <xsd:attribute name="id" type="xsd:string" use="optional"/>
            </xsd:complexType>
         </xsd:element>
      </xsd:sequence>
   </xsd:complexType>
</xsd:element>
<xsd:complexType name="Test">
   <xsd:attribute name="operator" type="opTypes" use="required"/>
   <xsd:attribute name="attributePath" type="xsd:string" use="required"/>
   <xsd:attribute name="value" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:simpleType name="opTypes">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="EQ" />
        <xsd:enumeration value="LT" />
        <xsd:enumeration value="GT" />
        <xsd:enumeration value="IN" />
   <xsd:enumeration value="NEQ" />
   <xsd:enumeration value="STARTSWITH" />
   <xsd:enumeration value="CONTAINS" />
    </xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="logicType">
   <xsd:sequence>
      <xsd:element name="not" maxOccurs="unbounded" minOccurs="0" type="logicType"/>
      <xsd:element name="and" maxOccurs="unbounded" minOccurs="0" type="logicType"/>
      <xsd:element name="or" maxOccurs="unbounded" minOccurs="0" type="logicType"/>
      <xsd:element name="test" maxOccurs="unbounded" minOccurs="0" type="Test"/>
   </xsd:sequence>
</xsd:complexType>
</xsd:schema> 

Examples of basic rules

Example simple rule:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ruleSet>
    <rule resourceType="request" resourceName="/scr">
        <action name="problem">
               <test operator="GT" value="10000" attributePath="duration"/>
        </action>
    </rule>
</ruleSet>

Example of "or" condition rule:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ruleSet>
    <rule resourceType="request" resourceName="/scr">
        <action name="problem">
             <or>
                <test operator="EQ" value="someValue" attributePath="someAttribute"/>
                <test operator="GT" value="10000" attributePath="duration"/>
             </or>
        </action>
    </rule> 
</ruleSet> 

Example of "and" condition rule:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ruleSet>
    <rule resourceType="request" resourceName="/scr">
        <action name="problem">
             <and>
                <test operator="EQ" value="someValue" attributePath="someAttribute"/>
                <test operator="GT" value="10000" attributePath="duration"/>
             </and>
        </action>
    </rule> 
</ruleSet> 

Example mixed group condition and ungrouped tests

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ruleSet>
    <rule resourceType="request" resourceName="/scr">
        <action name="problem">
             <or>
                <test operator="EQ" value="someValue" attributePath="someAttribute"/>
                <test operator="GT" value="10000" attributePath="duration"/>
             </or>
             <test operator="EQ" value="foo" attributePath="another.attribute"/>
        </action>
    </rule> 
</ruleSet> 

Example nested conditions:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ruleSet>
    <rule resourceType="service">
        <action name="problem">
            <or>
                <and>
                    <not>
                        <test attributePath="name" value="com.ibm.team.repository.service.diagnostics.database.internal" operator="STARTSWITH"/>
                    </not>
                    <test attributePath="duration" value="10000" operator="GT"/>
                </and>
                <test attributePath="duration" value="70000" operator="GT"/>
            </or>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
</ruleSet>

Adding/Removing Rule

There are 2 ways to add/remove rules:

  1. Edit the issueRules.xml file - Provisional
  2. Use the SmarterServerConfigurationMBean:

  • Object Name: type=Monitoring,name=Rules,rulesType=Issue
  • Management interface: com.ibm.team.server.monitoring.jmx.beans.ProblemRulesAdminMBean
  • Attributes: None

  • Operations:
    Name Parameters Description
    installRuleSet String ruleXml, boolean persist The rule set will be installed and replace the current one is it exists. The persist parameter is used to write to the issueRules.xml file
    listRules String List of rules running in server

CLM 5.0 and higher example rulesets for jazz Applications

These are suggested rules for supported server monitoring applications.

Jazz Team Server (jts) Rules 5.0

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ruleSet>
    <rule resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceType="db_statement">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceType="request">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceType="http_client_request">
        <action name="problem">
            <and>
                <test attributePath="duration" value="5000" operator="GT"/>
                <test attributePath="activity.name" value="/jauth-proxy" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                 <test attributePath="duration" value="100000" operator="GT"/>
                 <test attributePath="activity.name" value="/jauth-proxy" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceType="sparql">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.jts.contributor.internal.ContributorRecordUpdateRestService.service" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="/contributorRecords/" resourceType="request">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.server.monitoring.service.SmarterServerRestService.service" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="/monitoring/dumps" resourceType="request">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.TransactionService.runInTransaction" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="1000000" operator="GT"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="1000000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.PrimitiveTransactionService.runInTransaction" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="1000000" operator="GT"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="1000000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.rdb.ConnectionPoolService.withCurrentConnection" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="1000000" operator="GT"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="1000000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.ProcessChangeEvents" resourceType="asynchtask">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.RepositoryItemService.saveItem" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="20000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.process.ProcessChangeEvents" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.process.ProcessChangeEvents" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.service.ProcessService.processChangeEvents" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.service.ProcessChangeEventsTask.executeTask" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="3100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.service.ProcessService.processChangeEvents" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="Update REPOSITORY.ITEM_STATES Set MODIFIED = ?, VAL_ENCODING = ?, ITEM_VALUE = ? Where KEY_UUID = ?" resourceType="db_statement">
        <action name="problem">
            <and>
                <test attributePath="duration" value="20000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.process.ProcessChangeEvents" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.process.ProcessChangeEvents" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="/jauth-proxy" resourceType="request">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.auth.proxy.AuthProxy.service" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.auth.proxy.AuthProxy.service" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceType="http_client_request">
        <action name="problem">
            <and>
                <test attributePath="duration" value="20000" operator="GT"/>
                <test attributePath="activity.name" value="/jauth-proxy" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="/jauth-proxy" operator="EQ"/>
            </and>
        </action>
    </rule>
</ruleSet>

Change and Configuration Management (ccm) Rules 5.0

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ruleSet>
    <rule resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceType="db_statement">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceType="request">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceType="http_client_request">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceType="sparql">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.compatibility.contributor.internal.ContributorSynchronizingTask.executeTask" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="15000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.compatibility.contributor.internal.CompatContributorService.performSynchronization" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="15000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.ContributorSynchronizingTask" resourceType="asynchtask">
        <action name="problem">
            <test attributePath="duration" value="15000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="Insert Into REPOSITORY.ITEM_TYPES (ITEM_UUID, ITEM_TYPE_DBID) VALUES (?, ?)" resourceType="db_statement">
        <action name="problem">
            <and>
                <test attributePath="duration" value="15000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.repository.ContributorSynchronizingTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.repository.ContributorSynchronizingTask" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="Insert Into REPOSITORY.DELETED_ITEMS (ITEM_UUID, DELETED_WHEN, DELETED_BY, ITEM_TYPE_DBID, CONTENT_DELETED, STATES_DELETED) VALUES (?, ?, ?, ?, ?, ?)" resourceType="db_statement">
        <action name="problem">
            <and>
                <test attributePath="duration" value="15000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.repository.ContributorSynchronizingTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.repository.ContributorSynchronizingTask" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.compatibility.util.http.CrossServerHttpClientService.send" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="10000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.repository.ContributorSynchronizingTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="https://bluesdev.torolab.ibm.com:9443/jts/contributorRecords/" resourceType="http_client_request">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.jts.internal.userregistry.ldap.LDAPNightlySyncService.synchronizeUsers" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.jts.internal.userregistry.ldap.LDAPNightlySyncTask.executeTask" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="/service/com.ibm.team.process.internal.service.web.IProcessWebUIService/projectArea" resourceType="request">
        <action name="problem">
            <test attributePath="duration" value="15000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.authoring.service.ProcessAuthoringCopyProcessDescriptionService.run" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="15000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.service.ProcessService.initializeProjectArea" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="15000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.service.web.ProcessWebUIService.postProjectArea" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="15000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.authoring.service.ProcessAuthoringCopyProcessDescriptionService.run" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="15000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.server.monitoring.service.SmarterServerRestService.service" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="/monitoring/dumps" resourceType="request">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.build.BuildResultPrunerTask" resourceType="asynchtask">
        <action name="problem">
            <and>
                <test attributePath="duration" value="30000" operator="GT"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.build.internal.service.InternalTeamBuildService.pruneBuildResults" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="30000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.build.BuildResultPrunerTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.build.internal.service.delete.BuildResultPrunerTask.executeTask" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="30000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.build.BuildResultPrunerTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.TransactionService.runInTransaction" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="1000000" operator="GT"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="1000000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.PrimitiveTransactionService.runInTransaction" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="1000000" operator="GT"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="1000000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.rdb.ConnectionPoolService.withCurrentConnection" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="1000000" operator="GT"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="1000000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.service.web.ProcessWebUIService.getLPAContainingProjectAreaUrl" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="10000" operator="GT"/>
                <test attributePath="activity.name" value="https://bluestg.torolab.ibm.com/admin/user-projects" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="https://bluestg.torolab.ibm.com/admin/user-projects" resourceType="request">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="/service/com.ibm.team.process.internal.service.web.IProcessWebUIService/lPAContainingProjectAreaUrl" resourceType="http_client_request">
        <action name="problem">
            <and>
                <test attributePath="duration" value="10000" operator="GT"/>
                <test attributePath="activity.name" value="https://bluestg.torolab.ibm.com/admin/user-projects" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.scm.versionedContentCleanup" resourceType="asynchtask">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.scm.service.internal.content.VersionedContentCleanupTask.executeTask" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="SELECT c.HASH_CODE, c.DELTA_PREDECESSOR FROM SCM.CONTENT c LEFT OUTER JOIN SCM.CONTENT_CLAIMER cl on c.HASH_CODE = cl.CLAIMED_CONTENT_HASH WHERE c.SEQUENCE_COL = 0 AND cl.CLAIMED_CONTENT_HASH IS NULL" resourceType="db_statement">
        <action name="problem">
            <and>
                <test attributePath="duration" value="10000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.scm.versionedContentCleanup" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.ProcessChangeEvents" resourceType="asynchtask">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.RepositoryItemService.saveItem" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="20000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.process.ProcessChangeEvents" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.process.ProcessChangeEvents" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.service.ProcessService.processChangeEvents" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.service.ProcessChangeEventsTask.executeTask" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.service.ProcessService.processChangeEvents" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="Update REPOSITORY.ITEM_STATES Set MODIFIED = ?, VAL_ENCODING = ?, ITEM_VALUE = ? Where KEY_UUID = ?" resourceType="db_statement">
        <action name="problem">
            <and>
                <test attributePath="duration" value="20000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.process.ProcessChangeEvents" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.process.ProcessChangeEvents" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="com.ibm.rational.connector.hudson.HudsonSyncLoopTask" resourceType="asynchtask">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.ServerQueryService.queryItems" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="10000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.rational.connector.hudson.HudsonSyncLoopTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.rational.connector.hudson.HudsonSyncLoopTask" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="com.ibm.rational.hudson.team.internal.service.HudsonSyncLoopScheduledTask.executeTask" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="select t1.ITEM_ID, t1.STATE_ID from BUILD.BUILD_ENGINE t1 left outer join BUILD.BUILD_ENGINE_CONFIGURATION_ELEMENTS t2 on (t1.ITEM_ID = t2.JZ_PARENT_ID) left outer join PROCESS.PROCESS_AREA t3 on (t1.PROCESS_AREA_ITEM_ID = t3.ITEM_ID) where ((t2.ELEMENT_ID = 'com.ibm.rational.connector.hudson.engine') and (t1.ACTIVE = 1) and (t3.ARCHIVED = 0))" resourceType="db_statement">
        <action name="problem">
            <and>
                <test attributePath="duration" value="10000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.rational.connector.hudson.HudsonSyncLoopTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.rational.connector.hudson.HudsonSyncLoopTask" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="com.ibm.rational.buildforge.buildagent.BuildAgentLoopTask" resourceType="asynchtask">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.rational.buildforge.connector.BuildForgeEventPollerTask" resourceType="asynchtask">
        <action name="problem">
            <test attributePath="duration" value="=100000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="200000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.rational.buildforge.team.internal.service.BuildForgeEventPollerScheduledTask.executeTask" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="200000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.rational.buildforge.buildagent.internal.service.BuildAgentLoopTask.executeTask" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="200000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.ServerQueryService.queryItems" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="20000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.rational.buildforge.buildagent.BuildAgentLoopTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.rational.buildforge.buildagent.BuildAgentLoopTask" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="com.ibm.rational.buildforge.buildagent.internal.service.BuildRequestLookupService.lookupBuildRequestAndRun" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="20000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.rational.buildforge.buildagent.BuildAgentLoopTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.rational.buildforge.buildagent.BuildAgentLoopTask" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.build.internal.service.InternalTeamBuildRequestService.setLastContactTimeWithoutProcess" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="20000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.rational.buildforge.buildagent.BuildAgentLoopTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.rational.buildforge.buildagent.BuildAgentLoopTask" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="select t1.ITEM_ID, t1.STATE_ID from BUILD.BUILD_ENGINE t1 left outer join BUILD.BUILD_ENGINE_CONFIGURATION_ELEMENTS t2 on (t1.ITEM_ID = t2.JZ_PARENT_ID) left outer join PROCESS.PROCESS_AREA t3 on (t1.PROCESS_AREA_ITEM_ID = t3.ITEM_ID) where ((t2.ELEMENT_ID = 'com.ibm.rational.buildforge.buildagent') and (t1.ACTIVE = 1) and (t3.ARCHIVED = 0)) order by t1.ID asc" resourceType="db_statement">
        <action name="problem">
            <and>
                <test attributePath="duration" value="20000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.rational.buildforge.buildagent.BuildAgentLoopTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.rational.buildforge.buildagent.BuildAgentLoopTask" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="Update REPOSITORY.ITEM_STATES Set MODIFIED = ?, VAL_ENCODING = ?, ITEM_VALUE = ? Where KEY_UUID = ?" resourceType="db_statement">
        <action name="problem">
            <and>
                <test attributePath="duration" value="20000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.rational.buildforge.buildagent.BuildAgentLoopTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.rational.buildforge.buildagent.BuildAgentLoopTask" operator="EQ"/>
            </and>
        </action>
    </rule>
</ruleSet>

Quality Management (qm) Rules 5.0

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ruleSet>
    <rule resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceType="db_statement">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceType="request">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceType="http_client_request">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceType="sparql">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.compatibility.contributor.internal.ContributorSynchronizingTask.executeTask" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="15000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.compatibility.contributor.internal.CompatContributorService.performSynchronization" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="15000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.ContributorSynchronizingTask" resourceType="asynchtask">
        <action name="problem">
            <test attributePath="duration" value="15000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="Insert Into REPOSITORY.ITEM_TYPES (ITEM_UUID, ITEM_TYPE_DBID) VALUES (?, ?)" resourceType="db_statement">
        <action name="problem">
            <and>
                <test attributePath="duration" value="15000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.repository.ContributorSynchronizingTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.repository.ContributorSynchronizingTask" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="Insert Into REPOSITORY.DELETED_ITEMS (ITEM_UUID, DELETED_WHEN, DELETED_BY, ITEM_TYPE_DBID, CONTENT_DELETED, STATES_DELETED) VALUES (?, ?, ?, ?, ?, ?)" resourceType="db_statement">
        <action name="problem">
            <and>
                <test attributePath="duration" value="15000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.repository.ContributorSynchronizingTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.repository.ContributorSynchronizingTask" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.compatibility.util.http.CrossServerHttpClientService.send" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="10000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.repository.ContributorSynchronizingTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="https://bluesdev.torolab.ibm.com:9443/jts/contributorRecords/" resourceType="http_client_request">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.server.monitoring.service.SmarterServerRestService.service" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="/monitoring/dumps" resourceType="request">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.TransactionService.runInTransaction" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="1000000" operator="GT"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="1000000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.PrimitiveTransactionService.runInTransaction" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="1000000" operator="GT"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="1000000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.rdb.ConnectionPoolService.withCurrentConnection" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="1000000" operator="GT"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="1000000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.service.web.ProcessWebUIService.getLPAContainingProjectAreaUrl" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="10000" operator="GT"/>
                <test attributePath="activity.name" value="https://bluestg.torolab.ibm.com/admin/user-projects" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="https://bluestg.torolab.ibm.com/admin/user-projects" resourceType="request">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="/service/com.ibm.team.process.internal.service.web.IProcessWebUIService/lPAContainingProjectAreaUrl" resourceType="http_client_request">
        <action name="problem">
            <and>
                <test attributePath="duration" value="10000" operator="GT"/>
                <test attributePath="activity.name" value="https://bluestg.torolab.ibm.com/admin/user-projects" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.ProcessChangeEvents" resourceType="asynchtask">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.RepositoryItemService.saveItem" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="20000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.process.ProcessChangeEvents" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.process.ProcessChangeEvents" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.service.ProcessService.processChangeEvents" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.service.ProcessChangeEventsTask.executeTask" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.service.ProcessService.processChangeEvents" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="Update REPOSITORY.ITEM_STATES Set MODIFIED = ?, VAL_ENCODING = ?, ITEM_VALUE = ? Where KEY_UUID = ?" resourceType="db_statement">
        <action name="problem">
            <and>
                <test attributePath="duration" value="20000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.process.ProcessChangeEvents" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.process.ProcessChangeEvents" operator="EQ"/>
            </and>
        </action>
    </rule>
</ruleSet>

Requirements Management (rm) Rules 5.0

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ruleSet>
    <rule resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceType="db_statement">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceType="request">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceType="http_client_request">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceType="sparql">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.compatibility.contributor.internal.ContributorSynchronizingTask.executeTask" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="15000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.compatibility.contributor.internal.CompatContributorService.performSynchronization" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="15000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.ContributorSynchronizingTask" resourceType="asynchtask">
        <action name="problem">
            <test attributePath="duration" value="15000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="Insert Into REPOSITORY.ITEM_TYPES (ITEM_UUID, ITEM_TYPE_DBID) VALUES (?, ?)" resourceType="db_statement">
        <action name="problem">
            <and>
                <test attributePath="duration" value="15000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.repository.ContributorSynchronizingTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.repository.ContributorSynchronizingTask" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="Insert Into REPOSITORY.DELETED_ITEMS (ITEM_UUID, DELETED_WHEN, DELETED_BY, ITEM_TYPE_DBID, CONTENT_DELETED, STATES_DELETED) VALUES (?, ?, ?, ?, ?, ?)" resourceType="db_statement">
        <action name="problem">
            <and>
                <test attributePath="duration" value="15000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.repository.ContributorSynchronizingTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.repository.ContributorSynchronizingTask" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.compatibility.util.http.CrossServerHttpClientService.send" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="10000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.repository.ContributorSynchronizingTask" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="https://bluesdev.torolab.ibm.com:9443/jts/contributorRecords/" resourceType="http_client_request">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.server.monitoring.service.SmarterServerRestService.service" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="/monitoring/dumps" resourceType="request">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.TransactionService.runInTransaction" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="1000000" operator="GT"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="1000000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.PrimitiveTransactionService.runInTransaction" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="1000000" operator="GT"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="1000000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.rdb.ConnectionPoolService.withCurrentConnection" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="1000000" operator="GT"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="1000000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.service.web.ProcessWebUIService.getLPAContainingProjectAreaUrl" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="10000" operator="GT"/>
                <test attributePath="activity.name" value="https://bluestg.torolab.ibm.com/admin/user-projects" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="https://bluestg.torolab.ibm.com/admin/user-projects" resourceType="request">
        <action name="problem">
            <test attributePath="duration" value="10000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="/service/com.ibm.team.process.internal.service.web.IProcessWebUIService/lPAContainingProjectAreaUrl" resourceType="http_client_request">
        <action name="problem">
            <and>
                <test attributePath="duration" value="10000" operator="GT"/>
                <test attributePath="activity.name" value="https://bluestg.torolab.ibm.com/admin/user-projects" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.ProcessChangeEvents" resourceType="asynchtask">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.repository.service.internal.RepositoryItemService.saveItem" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="20000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.process.ProcessChangeEvents" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.process.ProcessChangeEvents" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.service.ProcessService.processChangeEvents" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.service.ProcessChangeEventsTask.executeTask" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.process.internal.service.ProcessService.processChangeEvents" resourceType="service">
        <action name="problem">
            <test attributePath="duration" value="20000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="Update REPOSITORY.ITEM_STATES Set MODIFIED = ?, VAL_ENCODING = ?, ITEM_VALUE = ? Where KEY_UUID = ?" resourceType="db_statement">
        <action name="problem">
            <and>
                <test attributePath="duration" value="20000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.process.ProcessChangeEvents" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="com.ibm.team.process.ProcessChangeEvents" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="/publish/resources/*" resourceType="request">
        <action name="problem">
            <test attributePath="duration" value="30000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="https://bluestg.torolab.ibm.com/rm/query" resourceType="http_client_request">
        <action name="problem">
            <and>
                <test attributePath="duration" value="30000" operator="GT"/>
                <test attributePath="activity.name" value="/publish/resources/*" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="/publish/resources/*" operator="EQ"/>
            </and>
        </action>
    </rule>
    <rule resourceName="/query" resourceType="request">
        <action name="problem">
            <test attributePath="duration" value="5000" operator="GT"/>
        </action>
        <action name="javacore">
            <test attributePath="duration" value="100000" operator="GT"/>
        </action>
    </rule>
    <rule resourceName="com.ibm.team.jfs.rdf.internal.jena.JenaQueryService.service" resourceType="service">
        <action name="problem">
            <and>
                <test attributePath="duration" value="50000" operator="GT"/>
                <test attributePath="activity.name" value="/query" operator="EQ"/>
            </and>
        </action>
        <action name="javacore">
            <and>
                <test attributePath="duration" value="100000" operator="GT"/>
                <test attributePath="activity.name" value="/query" operator="EQ"/>
            </and>
        </action>
    </rule>
</ruleSet>

CLM Server Monitoring 4.0.6 Rules

CLM Server Monitoring needs a more robust way to identify performance issues. In 4.0.5, each monitor had its own Threshold attribute which was a one size fits all value that encompassed all resources that the monitor was watching. For example the request monitor can have a threshold value 1000ms. This means that any requests with a duration > 1000ms, an issue was raised. This does not scale very well, as some operations are expected to take longer than others. This goes for any of the monitors. Some things just take longer and flagging an issue is premature.

In 4.0.6 problem detection rules were put into place. The rules are properties-based, and are stored in the same smarterserver.properties file as all other properties. See the Adding or removing rules section.

CLM Server Monitoring 4.0.6 Rules - Syntax

[context/namspace].[groupName: optional].[resource type].[attribute].[operator]=[value]

context/namespace - To avoid collisions in the future, with other possible rule types, this namespace uniquely identifies the rule type.
groupName - The name of the group this rule belongs to.
resouceType - The type of resource to test. There are a few in the system. Some examples are Request,Service,Http_Client_Request,Cache,etc...
attribute - The name of the attribute to test.
operator - Equality and relational operator. The only possible values are <, >, and =

A few basic rules about this syntax:

  1. Any rule missing a group name will be grouped into the DEFAULT group
  2. A rule group rules together using the logical AND operator. This means all rules must evaluate to true
  3. When evaluating multiple groups, they are bound together using the logical OR operator. This means only one set of the groups has to evaluate to true in order to have the compound statement to evaluate to true
  4. The monitor already has a built in duration for the resource. This rule is always included as a rule in the default group. Using a rule such as the following does not make much sense, but is acceptable:

problem.service.duration.gt=10000

The threshold on the monitor should be used.

CLM Server Monitoring 4.0.6 Rules - Rule groups

Rules can be grouped together in a logical "AND" ordering. This means all rules in the group must evaluate to true for the group to return a true evaluation result. The use of groups now allows you to evaluate items with different conditions and allows users to gain a more finer grain control over problem detection. All that is needed in addition to the simple syntax is a group name.

An example to set the threshold for a specific service (FooService):

problem.mygroup.service.duration.gt=20000
problem.mygroup.service.servicename.eq=FooService

This rule states that a problem will be flagged on a service named FooService if the duration of the call took > 20000ms. This now supercedes the default threshold defined by the monitor. Even if the monitor has an overall threshold of say 10000ms, it will not apply here.

CLM Server Monitoring 4.0.6 Rules - Adding or removing rules

There are two ways to add or remove rules:

  1. Edit the smarterserver.properties
  2. Use the SmarterServerConfigurationMBean:

  • Object Name: type=Monitoring,name=Rules,rulesType=Issue
  • Management interface: com.ibm.team.server.monitoring.jmx.beans.ProblemRulesAdminMBean
  • Attributes: None

  • Operations:
    Name Parameters Description
    addRule String key, String value, boolean persist This rule will be dynamicall installed and effective immediately
    removeRule String key Removes a rule if it exists
    listRules String List of rules running in server

CLM Server Monitoring 4.0.6 Rules - Multivalue rules

Sometimes there might be multiple values that are valid for a particular attribute. Using the service resource as an example, a problem may want to be flagged on both FooService and BarService if its duration > 30000ms. A few properties can be defined as follows:

problem.mygroup.service.duration.gt=30000
problem.mygroup.service.servicename.eq=FooService,BarService

The value for the attribute key must be a comma separated string. Under the covers, the service name gets grouped into an or expression, overall an and expression is used to group the duration + the or expression for the service name.

CLM Server Monitoring 4.0.6 Rules - Rule Actions

Sometimes an action must be taken when certain conditions are met. The problem rule vocabulary has been expanded to accommodate this. It is used in conjunction with an attribute value test.

Take for example a test on a request duration for > 2000ms:

problem.group1.request.duration.gt=2000

This makes any request that takes longer than 2000ms a problem. It may be desirable to perform an action when the duration is say > 10000ms. To do this the original duration test must be extended. Using the example above, the new rule definition will look like:

problem.group1.request.duration.gt=2000;action.gt=10000:__<some action>__

This says "flag the request as a problem if it exceeds a 2000ms threshold." Additionally take when the duration has exceeded a 10000ms threshold.

The number actions available is limited. Currently, there are only 2 actions available:

  • heap - Performs a Java heap dump
  • core - Performs a core dump
  • javacore - Performs a Java core dump

If I wanted to force a core dump when a request exceeds 10000ms, I could write the following rule:

problem.group1.request.duration.gt=2000;action.gt=10000:core

CLM Server Monitoring 4.0.6 Rules Examples

Jazz Team Server (jts) Rules 4.0.6

#Defaults
problem.service.duration.gt=4000;action.gt=10000:javacore
problem.db_statement.duration.gt=4000;action.gt=10000:javacore
problem.request.duration.gt=4000;action.gt=10000:javacore
problem.http_client.duration.gt=4000;action.gt=10000:javacore

# Contributor Sync takes 5 second on a regular basis
problem.group1.service.name.eq=com.ibm.team.repository.service.jts.contributor.internal.ContributorRecordUpdateRestService.service
problem.group1.service.duration.gt=10000
problem.group2.request.name.eq=/contributorRecords/
problem.group2.request.duration.gt=10000

Change and Configuration Management (ccm) Rules 4.0.6

#Defaults
problem.service.duration.gt=4000;action.gt=10000:javacore
problem.db_statement.duration.gt=4000;action.gt=10000:javacore
problem.request.duration.gt=4000;action.gt=10000:javacore
problem.http_client.duration.gt=4000;action.gt=10000:javacore

# Contributor Sync takes 5 second on a regular basis, raise threshold to 10 seconds
problem.group1.http_client_request.name.eq=https://csmserver:9444/jts/contributorRecords/
problem.group1.http_client_request.duration.gt=10000
problem.group2.service.name.eq=com.ibm.team.repository.service.compatibility.contributor.internal.CompatContributorService.performSynchronization
problem.group2.service.duration.gt=10000
problem.group3.service.name.eq=com.ibm.team.repository.service.compatibility.util.http.CrossServerHttpClientService.send
problem.group3.service.duration.gt=10000

Related topics: None

External links:

  • None

Additional contributors: None

Topic attachments
I Attachment Action Size Date Who Comment
Propertiesproperties ccm_406_rules.properties manage 0.8 K 2015-03-30 - 13:28 GeraldMitchell CCM 4.0.6 and 4.0.7 Rules as a properties file
Xmlxml ccm_500_rules.xml manage 24.9 K 2015-03-30 - 13:35 GeraldMitchell CCM 5.0.0, 5.0.1, 5.0.2 rules example as an XML file
Propertiesproperties jts_406_rules.properties manage 0.6 K 2015-03-30 - 13:27 GeraldMitchell JTS 4.0.6 and 4.0.7 example Rules as a properties file
Xmlxml jts_500_rules.xml manage 8.9 K 2015-03-30 - 13:37 GeraldMitchell JTS 5.0.0, 5.0.1, 5.0.2 rules example as an XML file
Xmlxml qm_500_rules.xml manage 11.4 K 2015-03-30 - 13:38 GeraldMitchell RQM 5.0.0, 5.0.1, 5.0.2 rules as an example XML file
Xmlxml rm_500_rules.xml manage 13.3 K 2015-03-30 - 13:40 GeraldMitchell RDNG 5.0.1 and 5.0.2 rules example as an XML file
Edit | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r20 < r19 < r18 < r17 < r16 | More topic actions...
 
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Contributions are governed by our Terms of Use. Please read the following disclaimer.
Ideas, requests, problems regarding the Deployment wiki? Create a new task in the RTC Deployment wiki project