JavaAgent7 2 1 0
JavaAgent7 2 1 0
Date: 01-2008
Copyright 2008, CA. All rights reserved. Wily Technology, the Wily Technology Logo, Introscope, and All Systems Green are registered trademarks of CA. Blame, Blame Game, ChangeDetector, Get Wily, Introscope BRT Adapter, Introscope ChangeDetector, Introscope Environment Performance Agent, Introscope ErrorDetector, Introscope LeakHunter, Introscope PowerPack, Introscope SNMP Adapter, Introscope SQL Agent, Introscope Transaction Tracer, SmartStor, Web Services Manager, Whole Application, Wily Customer Experience Manager, Wily Manager for CA SiteMinder, and Wily Portal Manager are trademarks of CA. Java is a trademark of Sun Microsystems in the U.S. and other countries. All other names are the property of their respective holders. For help with Introscope or any other product from CA Wily Technology, contact Wily Technical Support at 1-888-GET-WILY ext. 1 or [email protected]. If you are the registered support contact for your company, you can access the support Web site directly at http://support.wilytech.com. We value your feedback. If you have comments or suggestions about Wily documentation, please send us an e-mail at [email protected].
US Toll Free 888 GET WILY ext. 1 US +1 630 505 6966 Fax +1 650 534 9340 Europe +44 (0)870 351 6752 Asia-Pacific +81 3 6868 2300 Japan Toll Free 0120 974 580 www.wilytech.com
CONTENTS
Table of Contents
SECTION I
Chapter 1
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . .
1
3 . 4 . 5 . 5 . 5 . 6 . 6 . 7 . 7 . 7 . 8 . 9 12 12 12 13 13 13
Planning a Java Agent implementation Discover Introscope functionality . Define Java Agent configuration .
Evaluate Java Agent performance overhead . Validate and deploy Java Agent configuration Implementing the Java Agent . Basic implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Java Agent installation directories and files . Java Agent Configuration Options Wily CEM integration . Before you start . . . . . . . . . .
Planning the installation, configuration, and evaluation process . Chapter 2 Installing and Configuring the Java Agent . Installing the Java Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Agent Installer Archives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 15 . . . . . . . 16 16 17 18 18 19 19
Java Agent-to-Enterprise-Manager connection properties . Configuring the Java Agent name Configuring ProbeBuilder options Configuring JVM AutoProbe . .
Contents iii
CA Wily Introscope
. .
. . . . .
. . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
24 25 25
. 27 . . . . . . . . . . 28 28 29 29 30 30 30 31 31 32
Recommended dynamic instrumentation configuration settings . ProbeBuilding multi-level class hierarchies (JVM 1.5) Enable instrumentation of multiple levels of subclasses . Configure periodic polling for uninstrumented subclasses Disable directive updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controlling directive logging
. 33 . . . . . . . . . . . . . . . . . . . . 34 34 34 35 36 36 37 37 39 39 40 41 42 42 43 43 43 47 48 48
Directives and the ProbeBuilding process . Default component tracing . ProbeBuilder Directive files . Instrumentation and inheritance . Default ProbeBuilder Directives files
Full and typical ProbeBuilder Directives sets . Modifying default ProbeBuilder Directives . Default Tracer Groups and toggles files Turning Tracer Groups on or off . Adding classes to a Tracer Group . Blame Tracers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Using Blame Tracers to mark blame points . Blame Tracers in standard PBDs . Creating Custom Tracers . . . . .
Custom method tracer examples . Creating advanced Custom Tracers . Advanced single-metric tracers .
iv Contents
Skips
. . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . .
50 51 51 51 52 52 56 56 57
Combining custom tracers . Counting object instances . Directive keywords . . . . ProbeBuilder Skip keywords
Applying new and changed ProbeBuilder Directives . Copy in new ProbeBuilder Directives files . Introscope-enabling with new and changed PBDs . Chapter 5 AutoProbe for Application Servers . Before You Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 59 . . . . . . . . . . . . . . . . . . . 60 60 60 60 61 61 62 62 62 63 63 63 64 65 65 66 66 67 68
Configuring WebLogic Server to use AutoProbe WebLogic Server 6.1 . WebLogic Server 7.0 . WebLogic Server 6.1 SP3
WebLogic Server 8.1, 9.0, or 9.1 . WebSphere 4.0 (Distributed) . WebSphere 6.0/5.1/5.0 . Java2 Security Policy . . . . . . . . .
Configuring WebSphere z/OS to Use AutoProbe WebSphere 5.x and 6.0 for z/OS . Java2 Security Policy . Sun ONE 7.0 . . . . . . . . . . . . . . . . . . . . . . .
Configuring Oracle 10g to use AutoProbe . Oracle 10g 10.0.3 . Configuring HTTP servlet tracing . Modifying Java2 Security Policy . Chapter 6 Manual ProbeBuilding . Before you begin . . . . . . .
. 69 . . . . . 70 70 70 72 72
Contents v
CA Wily Introscope
Adding Probes to bytecode using ProbeBuilder from the command line 72 Editing the classpath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 75 75 76 Running Introscope-enabled code . ProbeBuilder Wizard.lax . . . . .
SECTION II
Chapter 7
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. 77
. 79 . . 80 80
Configuring a proxy server for Agent HTTP tunneling Chapter 8 Java Agent Naming . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
. 83 . . . . . . . . . . . . . . . . . . 84 84 86 86 87 88 88 89 89 89 90 90 91 92 92 92 92 93
Understanding the Java Agent name . Aspects of the Java Agent name . How the Agent determines its name.
Agent naming considerations for clustered applications . Specifying an Agent name using a system property key Obtaining an Agent name from the application server . Application servers that support Agent naming . How automatic Agent naming works Enabling automatic Agent naming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Automatic Java Agent naming and renamed agents . Advanced automatic Agent naming options . Disabling Agent naming for WebSphere Cloned Agent naming scenario. . . .
Enabling cloned Agent naming in clustered environments . Enabling cloned Agent naming in the Agent profile.
Configuring unique names for application instances . Chapter 9 Agent Monitoring and Logging . . . . . . . . . . . . . . . . . . . . . . .
. 95 . . . . 96 96 97 97
Turning off socket Metrics in the Agent profile . Running the Agent in verbose mode .
vi Contents
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . .
97 98 98 99 99 99 101
Agent log files and automatic Agent naming . Logging considerations for WebSphere z/OS . Managing the ProbeBuilder Log . . . . . . . . . . . . . ProbeBuilder log name and location . AutoProbe log name and location . Chapter 10
Using Virtual Agents to Aggregate Metrics . Understanding Virtual Agents . Virtual Agent requirements Configuring Virtual Agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapter 11
Configuring Java Agent failback to primary Enterprise Manager . Agent failover and domain/user configuration .
.
. . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . .
109
111 . 112 . 112 . 113 115 . 116 . 116 . 117 . 121 . 122 . 122 123 . 124 . 124 . 124 . 125
Configuring Access to Application Server Data . Application Server management data and the Agent . Configuring startup class for WebLogic 8.1 or 9.0 . .
Configuring a custom service in WebSphere 5.0 or 6.0 . Chapter 13 Configuring Boundary Blame . Understanding Boundary Blame . Using URL groups . . . . . . . . . . . . . Configuring URL groups . Running the URLGrouper. Using Blame tracers . . . Disabling Boundary Blame . Chapter 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
Controlling automatic transaction tracing behavior Transaction trace sampling by URL group . Configuring automatic trace sampling .
Contents vii
CA Wily Introscope
Configuring cross-process transaction tracing . Enabling cross-process tracing in WebSphere Extending transaction trace data collection . About User ID data. . . . . . . . . . . . . . . . . . . . . . . . . . . . About servlet request data . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 125 . 125 . 126 . 126 . 126 . 127 . 127 . 128 131 . 132 . 133 . 133 . 134 . 134 . 134 . 136 . 136 . 138 . 138 . 138 141 . 142 . 142 . 142 . 143 . 144 . 145 . 145 . 147 149 . 150 . 150 . 150 . 151 . 152
Configuring Agent to collect additional transaction trace data . Disabling the capture of stalls as Events . Chapter 15 Configuring Introscope SQL Agent . SQL Agent overview . SQL Agent files . . . . . . . . . . . . . . .
Supported JDBC drivers and data sources Configuring SQL Agent for WebSphere
Step 1: Configure the JDBC datasource or Driver in WebSphere . Step 2: Introscope-enable the JDBC DataSource or Driver . Configuring SQL Agent for WebLogic Server . Turning off Blame Metrics for SQL Agent . Turning Off Statement Metrics SQL Agent Metrics . Chapter 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introscope Java Agent JMX support . Default JMX Metric conversion process
Using primary key conversion to streamline JMX Metrics Managing Metric volume with JMX filters . JMX filters for WebLogic . Configuring JMX reporting . . . . . . . . . . . . . . . . .
Enabling JSR-77 data for WAS 6.x . Chapter 17 Configuring Platform Monitoring Understanding platform monitors .
Enabling platform monitors on Windows Server 2003 Enabling platform monitors on AIX . Disabling platform monitors . . .
viii Contents
Chapter 18
. . .
. . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
153 . 154 . 154 . 156 . 156 . 157 159 . 160 . 160 . 161 163 . 163 . 163 . 163 165 . 166 . 167 . 169 . 169 . 169 . 169 . 170 . 170 . 172 . 173 . 174 . 175 . 176 . 177 . 177 . 177 . 177 . 178 . 178 . 180
Using PMI with Introscope on z/OS . Configuring PMI in Introscope. Viewing WebSphere Agent PMI data Chapter 19
Enabling WebLogic Diagnostic Framework . Understanding WLDF Metric conversion . Enabling WLDF reporting . . . . . . . . . . . . . . . . . . . . . . . . .
. . .
Appendix A
Wily Knowledge Base Articles . The Wily Java Agent . . . . . . . Accessing the Java Agent
. . . .
. .
. . . . . . . . . . . . . . . . . . . .
Configuring IntroscopeAgent.profile location Agent naming properties Wily CEM integration . . Agent failover properties
Agent to Enterprise Manager connection properties . Error Detector properties . Extensions properties JMX properties . . . . . . . .
Platform monitoring properties . WebSphere PMI properties . Socket metrics properties . SQL Agent properties. . . . . . . . Stall metrics properties . URL grouping properties WLDF metrics properties AutoProbe properties . Logging properties . . .
Contents ix
CA Wily Introscope
Blame properties .
. . .
. . .
. . .
. . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. 182 . 182 . 182 . 183 . 183 185 . 186 . 186 . 186 . 187 189
Agent HTTP Tunneling Proxy Server Properties . Cross-process tracing in WebLogic Server Appendix C Using the Introscope PBD Generator . About the Wily PBD Generator . . . . . . . . . . . . . . Configuring the PBD Generator . Using the PBD Generator Index . . . . . . . . . . . . . . . .
x Contents
SECTION
The chapters in this section describe the Java Agent implementation process.
Installing and Configuring the Java Agent on page 15 ProbeBuilding Options on page 27 ProbeBuilder Directives on page 33 AutoProbe for Application Servers on page 59 Manual ProbeBuilding on page 69
CA Wily Introscope
SECTION
This chapter explains the Java Agent implementation process. The Introscope environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 . 5 . 7 . 9 12
Planning a Java Agent implementation . Implementing the Java Agent . Before you start . . . . . Java Agent Configuration Options .
CA Wily Introscope
Since Introscope is employed across an application lifecyclein development, test, and productionyour monitoring goals, environmental constraints, and service level requirements will change over time. You will need to configure Java Agents differently in each phase or environment. Java Agent configuration is a trade-off between visibility vs. overhead. The goal is to obtain optimal visibility at a reasonable cost. In pre-production environments, such as development and QA, you typically configure a higher level of data collection to provide deeper visibility into the performance characteristics of the application. In production or production-like environments, you reduce the level of metric reporting to control Java Agent overhead, and when appropriate, implement optional configurations, such as Virtual Agents or agent failover. If you intend to collect data from multiple environments, you will need to develop an appropriate Java Agent configurations for each.
For example, you can load test your application before and after implementing out-of-the-box monitoring to verify impact. Similarly, a conservative approach is to extend data collection in a controlled fashionfor instance, one PowerPack at a timeand evaluate the impact of each add-on individually. Occasionally, too many Java classes are selected for monitoring in a ProdeBuilding Directive (PBD) file, causing the Java Agent to start incorrectly, or to experience a hang. If this happens, use the AutoProbe.log file to identify the classes that caused the Java Agent to hang and add a skip directive to the PBD file, skipping the classes that may have caused the problem. For more information about adding skip directives to your custom PBD files, see Skips on page 50.
Basic implementation
The Java Agent implementation process is as follows: Step 1 Install the Agent on the target JVM. For more information, see Installing and Configuring the Java Agent on page 15. Step 2 Configure the properties in IntroscopeAgent.profile that govern the operating and data collection behaviors of the Java Agent, including which PBDs to use during the ProbeBuilding process and optional ProbeBuilding behaviors. For more information, see ProbeBuilding Options on page 27 and ProbeBuilder Directives on page 33. Step 3 Use a supported method of ProbeBuilding and desired PBDs to Introscope-enable your applications, and configure ProbeBuilding options. Step 4 Restart your application and start data collection.
control the behavior of the Agent and AutoProbe. Defaults are supplied for many properties; the default values for certain properties vary, depending on the application server your Agent installation supports. If you have requirements to locate the Agent profile in other than the Wily directory, see Configuring IntroscopeAgent.profile location on page 166.
PBDsContains the standard PBDs provided with the Java Agent, which vary,
depending on the application server your Agent installation supports. AutoProbe looks for the PBDs you configure for use during the ProbeBuilding process. A template custom.pbd file is located in this directory for your use when creating custom PBDs. If you create custom PBDs, they must be saved in this directory.
enable dynamic instrumentation, which allows you to implement new and changed PBDs without restarting the managed application or the Agent.
ProbeBuilder.jarContains ProbeBuilder executable. One of the following extensions to ProbeBuilder.jar
SQLAgent.jar Contains SQL Agent executable. Supportability-Agent.jarSupportability extensions for use by Wily
analyzes web server log files and produces BRTA property settings for a set of URL Groups. For more information about the URLGrouper, see Running the URLGrouper on page 121.
Virtual Agents
If you want multiple agents to monitor separate instances of a clustered application, you must configure those agents as a Virtual Agents which allows you to aggregate metrics at the application level. For more information, see Using Virtual Agents to Aggregate Metrics on page 101.
Logging options
By default, the Java Agent writes information log messages to the console window. You can configure the Java Agent for more detailed logging and direct messages to log files. For more information, see Configuring Agent logging options on page 97.
Domains
Unless you assign a Java Agent to a custom Introscope Domain, it is part of the SuperDomain by default. For information about Domains and their use in configuring user permission, see the Introscope Installation Guide.
Important Application Server Autoprobe is not supported on any JVM 1.5 and above platforms.
bandwidth rate metrics for individual sockets. For more information, see Turning off socket Metrics in the Agent profile on page 96.
URL Groups for Blame ReportingTo control the way that metrics for front-
ends are aggregated and presented in the Investigator in WebView and the Workstation, you must configure URL groups. The Java Agent profile contains properties for specifying URL groups. For more information, see Using URL groups on page 116.
Stall Event ReportingBy default, the Java Agent reports stalls as events, and
stores them in the Transaction Event Database. You can disable this behavior, or tailor the stall reporting behavior. For more information, see Disabling the capture of stalls as Events on page 128.
JMX and JSR-77You can optionally configure the Java Agent to report JMX
metrics, JSR-77 metrics, or WebLogic Diagnostic Framework metrics. For more information, see Enabling JMX Reporting on page 141 and Enabling WebLogic Diagnostic Framework on page 159
Transaction Tracing BehaviorYou can tailor the behavior of the automatic
transaction tracing the Agent performs, and configure the collection of User IDs for Servlet and JSP invocations. For more information, see Configuring Transaction Trace Options on page 123.
PMIIn WebSphere environments you can configure the reporting of
WebSphere Performance Monitoring Infrastructure (PMI) metrics. For more information, see Configuring WebSphere PMI on page 153.
Platform MonitoringPlatform monitors enable the Agent to report system
CA Wily Introscope
metrics, including CPU statistics, to the Enterprise Manager. Platform monitors on all operating systems except Windows Server 2003 and AIX are automatically enabled upon Agent installation. Windows Server 2003 and AIX platform monitors require a minimal configuration to work. For more information, see Configuring Platform Monitoring on page 149.
SQL AgentIntroscope SQL Agent is installed automatically with the Agent
installation. This Agent extension provides visibility into the performance of individual SQL statements. For more information, see Configuring Introscope SQL Agent on page 131.
Oracle 10g version 10.0.3 Application Server and any required updates. SAP NetWeaver 6.2 and 6.4 (NWO4)
products1/unix/java. For more information, see Installing and Configuring the Java Agent on page 15. If your JVM does not support it, or you prefer to use another method, you can either configure Application Server AutoProbe, as described in AutoProbe for Application Servers on page 59, or perform the ProbeBuilding process manually as described in Manual ProbeBuilding on page 69.
CA Wily Introscope
Note The Java Agent will require at least 20 MB of free disk space on the system on which it will be installed.
SECTION
This chapter has instructions for installing the Introscope Java Agent and configuring the JVM AutoProbe method of Introscope-enabling your applications. To verify that your environment supports JVM AutoProbe or to learn about other methods of Introscope-enabling your applications, see ProbeBuilding method and options on page 13. Installing the Java Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 17 18 19 25
Java Agent-to-Enterprise-Manager connection properties Configuring the Java Agent name . Configuring JVM AutoProbe. Uninstalling the Java Agent . . . .
CA Wily Introscope
WebSphere
Sun ONE
IntroscopeAgentInstall7.2.0.0sunoneas.unix.tar IntroscopeAgentInstall7.2.0.0sunoneas.windows.zip
Application Server
Oracle 10g SAP NetWeaver
Windows:
IntroscopeAgentInstall7.2.0.0netweaver.windows.zip
Solaris, HP-UX, AIX, and Linux:
IntroscopeAgentInstall7.2.0.0netweaver.unix.tar
For SAP support only: Windows:
IntroscopeAgentInstall7.2.0.0netweaver.windows.SAP. zip
Solaris, HP-UX, AIX, and Linux:
IntroscopeAgentInstall7.2.0.0netweaver.unix.SAP. tar
Other
IntroscopeAgentInstall7.2.0.0default.unix.tar IntroscopeAgentInstall7.2.0.0default.windows.zip IntroscopeAgentInstall7.2.0.0default.zOS.tar IntroscopeAgentInstall7.2.0.0default.os400.zip
Defines the Enterprise Managers listen port, which should be the same port specified in the Enterprise Managers introscope.enterprisemanager.port.DEFAULT property.
introscope.agent.enterprisemanager.transport.tcp.socketfactory.
DEFAULT
CA Wily Introscope
Defines the socket factory used for connections to the Enterprise Manager. To specify an alternative Enterprise Manager channel, define its connection properties by adding these properties to the Java Agent profile:
introscope.agent.enterprisemanager.transport.tcp.host.NAME introscope.agent.enterprisemanager.transport.tcp.port.NAME Introscope.agent.enterprisemanager.transport.tcp.socketfactory.
NAME Replace
NAME with an identifier for the new Enterprise Manager channel, and
specify the Enterprise Managers connection details. For more information about connection properties, Agent to Enterprise Manager connection properties on page 169.
Agent is monitoring.The agentName value must start with an alphabetical character, and cannot contain a percent (%) character. See introscope.agent.agentName on page 167 for a description.
introscope.agent.customProcessName Name the process being
AutoProbeConnector.jar
CA Wily Introscope
-Xbootclasspath/p:PathToAutoProbeConnectorJar:PathToAgentJar
add the -X switch to the final start command at the end of the script, after the JAVA_VM and JAVA_OPTIONS. The excerpt below shows the correct place to insert the switch:
"$JAVA_HOME/bin/java" ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} -Xbootclasspath/p:${WL_HOME}/wily/connectors/ AutoProbeConnector.jar:${WL_HOME}/wily/Agent.jar -Dweblogic.Name=${SERVER_NAME} -Dweblogic.management.username=${WLS_USER} -Dweblogic.management.password=${WLS_PW} -Dweblogic.ProductionModeEnabled=${PRODUCTION_MODE} -Djava.security.policy="${WL_HOME}/server/lib/weblogic.policy" weblogic.Server
2 If you are using something other than the default bootstrap classpath, add the Agent.jar and AutoProbeConnector.jar files to the beginning of your customized bootstrap classpath.
wily/connectors/AutoProbeConnector.jar:PathToAgentJar
4 Apply the changes in the Administrators Console. 5 In WebSphere environments with Java2 Security enabled, for AutoProbe to run correctly, it may be necessary to add permissions to your Java2 Security Policy. To add permissions, edit the <WebSphere home>/properties/server.policy file to include these lines:
// permissions for Introscope AutoProbe grant codeBase "file:${was.install.root}/-" { permission java.io.FilePermission "${was.install.root}${/ }wily${/}-", "read"; permission java.net.SocketPermission "*", "connect,resolve";
6 Restart WebSphere.
and Process Management > Process Definition > Java Virtual Machine.
For WebSphere 5.1/5.0: navigate to Application Servers > your_server >
Process Definition > Java Virtual Machine 2 Set the Generic JVM Arguments field in the following format:
-Xbootclasspath/p:<Path-ToAutoProbeConnector.jar>AutoProbeConnector.jar;<Path-ToAgent.jar>Agent.jar -Dcom.wily.introscope.agentProfile=<path-toIntroscopeAgent.profile>IntroscopeAgent.profile -Dcom.wily.introscope.agent.agentName=<your-Agent-Name>
For example:
-Xbootclasspath/p:<AppServerHome>/wily/connectors/ AutoProbeConnector.jar:<AppServerHome>/wily/Agent.jar -Dcom.wily.introscope.agentProfile=<path-toIntroscopeAgent.profile>IntroscopeAgent.profile -Dcom.wily.introscope.agent.agentName=<your-Agent-Name>
Use a semicolon (;) as a path separator on Windows systems. Note The /p: option in the command above prepends the supplied path to the default bootstrap classpath. For example: If you installed the Java Agent in c:\Program Files\IBM\WebSphere\AppServer\profiles\default , the Generic JVM Arguments field would be set to:
CA Wily Introscope
For troubleshooting Java Agent start-up problems, review the basic WebSphere Application Server log (i.e native_stderr.log). If an incorrect configuration is placed in the Generic JVM Arguments section and you experience errors starting the server, please review and correct the generic JVM arguments in the server.xml file. 3 Click OK. 4 Apply the changes in the Administrators Console. 5 The default for file encoding for WebSphere 5.x and 6.0 on z/OS is now ASCII, but Introscope expects an EBCDIC file format. When you configure JVM AutoProbe for z/OS, click on Custom Properties and add the name value pair:
name: com.wily.introscope.default.encoding value: Cp1047
Note This step is for z/OS operating systems only. 6 In WebSphere environments with Java2 Security enabled, for AutoProbe to run correctly, it may be necessary to add permissions to your Java2 Security Policy. If Java2 Security is enabled, follow the instructions in Modifying Java2 Security Policy on page 68. 7 Restart WebSphere. In a moment you will see WebSphere metrics in your Introscope Workstation.
<drive>:\usr\sap\<J2EE_ENGINE_ID>\j2ee\j2ee_<INSTANCE>\cluster\ server\cmdline.properties
2 Append these commands to JavaParameters section:
-Xbootclasspath/p:PathToAutoProbeConnectorJar;PathToAgentJar -Dcom.wily.introscope.agentProfile=<path-toIntroscopeAgent.profile>
For example:
<drive>:\usr\sap\ccms\P66\JC00\j2ee\cluster\instance.properties
8 Look for a line beginning with ID<server_id>.JavaParameters, and confirm that it contains the lines you entered.
CA Wily Introscope
For example:
<jvm-options> -Xbootclasspath/p:/sw/sun/sunone7/wily/connectors/ AutoProbeConnector.jar:/sw/sun/sunone7/wily/Agent.jar </jvm-options>
-Xbootclasspath/p:wily/connectors/ AutoProbeConnector.jar:PathToAgentJar
-Xbootclasspath/p:wily/connectors/ AutoProbeConnector.jar:PathToAgentJar
-javaagent:PathToAgentJar -Dcom.wily.introscope.agentProfile=PathToAgentProfile
Dcom.wily.introscope.agentProfile=xxxxx)
2 Reboot your application. To uninstall the Java Agent from WebSphere Application Server (WAS) 5.0, 5.1, or 6.0: 1 Connect to the Administration Console for your WebSphere Application Server. 2 Remove the Java Agent switches from the "Generic JVM Arguments". 3 Reboot your application.
CA Wily Introscope
SECTION
ProbeBuilding Options
This chapter has information about ProbeBuilding options. Full or typical tracing options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 28 30 32
ProbeBuilding multi-level class hierarchies (JVM 1.5) Removing line numbers in bytecode .
ProbeBuilding Options 27
CA Wily Introscope
and restart the managed application. Note For more information on full and typical system directives files and customizing the TYPICAL settings, see Default ProbeBuilder Directives files on page 36.
28 ProbeBuilding Options
3 Exclude classes from the dynamic instrumentation in terms of the classloader which loads them, adding this property to the agent profile:
introscope.autoprobe.dynamicinstrument.avoidClassLoaders
Supply a comma-separated list of classloader class names. Specify the system classloader with the string System. 4 Limit the classes that are subject to dynamic instrumentation by explicitly identifying them by package name, adding this property in the agent profile:
introscope.autoprobe.dynamicinstrument.instrumentList
Specify all or a portion of a package name, starting with the beginning of the package name. Wildcards are not supported. For example:
introscope.autoprobe.dynamicinstrument.instrumentList=com.xyz, com.foo.ejb.session
If you do not specify this property, no classes are instrumented. To instrument all classes, set the property to all:
introscope.autoprobe.dynamicinstrument.instrumentList=all
5 To change the frequency which Introscope polls for uninstrumented classes from the default of 1 minute, add this property to the Agent profile and set its value to the desired frequency:
introscope.autoprobe.dynamicinstrument.pollIntervalMinutes
com.xyz,com.foo.ejb.session
substituting com.xyz,com.foo.ejb.session with a list of the packages you wish to be dynamically instrumented.
introscope.autoprobe.dynamicinstrument.avoidClassLoaders=System
CA Wily Introscope
introscope.autoprobe.hierarchysupport.enabled=true
introscope.autoprobe.hierarchysupport.runOnceOnly=false
2 To change the frequency with which Introscope polls for uninstrumented subclasses from its default value of 5, add this property to the Java Agent profile, and set it to the desired polling frequency:
introscope.autoprobe.hierarchysupport.pollIntervalMinutes
30 ProbeBuilding Options
3 Optionally, you can limit the number of times that Introscope polls uninstrumented subclasses by adding this property, set to the desired limit, to the Agent profile:
introscope.autoprobe.hierarchysupport.executionCount
This information is logged in both the pbdupdate.log file and the agent.log file. To prevent this information from being logged in the agent.log file, add the following property to the agent profile:
log4j.additivity.IntroscopeAgent.inheritance=false
log4j.logger.IntroscopeAgent.inheritance=INFO,pbdlog log4j.appender.pbdlog.File=pbdupdate.log log4j.appender.pbdlog=com.wily.introscope.agent.AutoNaming RollingFileAppender log4j.appender.pbdlog.layout=com.wily.org.apache.log4j. PatternLayout log4j.appender.pbdlog.layout.ConversionPattern=%d{M/dd/yy hh:mm:ss a z} [%-3p] [%c] %m%n
CA Wily Introscope
introscope.autoprobe.hierarchysupport.enabled=true introscope.autoprobe.hierarchysupport.runOnceOnly=false
option:
com.wily.probebuilder.removeLineNumbers=true
32 ProbeBuilding Options
SECTION
ProbeBuilder Directives
This chapter describes how to create and modify ProbeBuilder Directives. Directives and the ProbeBuilding process Default ProbeBuilder Directives files . Creating Custom Tracers Directive keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 36 41 43 48 51 56
Using Blame Tracers to mark blame points . Creating advanced Custom Tracers .
ProbeBuilder Directives 33
CA Wily Introscope
(JNDI)
Java Message Service (JMS) Common Object Request Broker
Architecture (CORBA)
User Datagram Protocol (UDP) File Systems Threads System Logs Thrown and Caught Exceptions (off by
default)
34 ProbeBuilder Directives
For example, assume a class hierarchy in which ClassB extends ClassA, and ClassC extends ClassB. In pre-5.0 JVMs, when you instrument ClassA, ClassB is also instrumented because it explicitly extends ClassA. However, Introscope does not instrument ClassC, because ClassC does not explicitly extend ClassA. In pre-1.5 Java environments, to ensure that subclasses are instrumented, follow the instructions in EJB subclass tracing on page 40. If you run under JVM 1.5, you can configure Introscope to instrument multiple levels of subclasses of a probed class. For instructions, see ProbeBuilding multilevel class hierarchies (JVM 1.5) on page 30. If you wish to instrument a private method, you may need to use more specific tracers. For more information about directives and tracers for custom PBDs, please see the Directive & Tracer Type Definitions document on the Wily community site.
CA Wily Introscope
on.
Typical (default)a subset of Tracer Groups in the referenced PBD files are
turned on. The typical set includes common settings, and is the set you can customize for a particular environment. Note For instructions on switching between full and typical .PBL files, see Full or typical tracing options on page 28.
36 ProbeBuilder Directives
CorbaTracing EntityBeanTracing SessionBeanTracing MessageDrivenBeanTracing J2eeConnectorTracing JavaMailTransportTracing JDBCQueryTracing JDBCUpdateTracing JMSListenerTracing JMSConsumerTracing JMSPublisherTracing JMSSenderTracing JSPTracing RMIClientTracing
CORBA method invocations Entity EJB method invocations Session EJB method invocations Message-driven EJB method invocations J2EE connector information Mail sending times JDBC queries JDBC updates
JMS message processing times on JMS message processing times on JMS message broadcast times JMS message broadcast times JSP service responses RMI client method invocations on on on on
CA Wily Introscope
Name
Definition
RMIServerTracing HTTPServletTracing
Note: If you are using Application Server AutoProbe, turn on this Tracer Group:
HTTPAppServerAutoProbeServletTracing
StrutsTracing InstanceCounts Execution times of actions in the Struts framework Counts number of instances of object type identified with Tracer Group. on on on on
Note: Nothing will be traced until classes are identified with this Tracer Groups.
FileSystemTracing JAXMListenerTracing JNDITracing JSPDBTagsTagLibraryTracin g JSPIOTagLibraryTracing File system bytes written and read JAXM message sends JNDI lookup times Jakarta DB Tags custom tag library for reading and writing from a SQL database Jakarta IO custom tag library for a variety of input and output tasks Commit times using JTA EJB activity at method level Network socket bandwidth Network socket bandwidth Number of active threads by class Time spent parsing XML document XML transformation time Processing time of custom JSP tags on on on on off off off off
on
off
on on on on on on on off
Tracer Groups report information only when turned on (uncommented). Tracer Groups are activated with the keyword TurnOn. For more information about directives and tracers for custom PBDs, please see the Directive & Tracer Type Definitions document on the Wily community site.
38 ProbeBuilder Directives
DefaultStalledMethod Tracing Stalled method tracing DefaultConcurrent InvocationTracing DefaultRateMetrics Concurrent invocation information Invocation rate metrics
Note Any uncommented (turned on) directive for a Tracer Group causes the Tracer Group to be used. To turn a Tracer Group off:
Comment the Tracer Group by placing a pound sign at the beginning of the line,
CA Wily Introscope
Exceptions
The following directives are used to turn on tracing of exceptions either where thrown or caught. They can cause performance degradation so they are not turned on by default. To turn either of these on, uncomment the appropriate line:
#InstrumentPoint: ThrowException #InstrumentPoint: CatchException
Agent Initialization
The Agent Initialization instrument point directive does not cause additional overhead and is turned on by default in both full and typical PBD sets.
#InstrumentPoint: AgentInitialization
If multiple ProbeBuilder Directive files are used, any settings (such as Tracer Groups, Skips, InstrumentPoints, Custom Method Tracers) turned on in any file take effect.
For details on the Identify keywords, see Directive keywords on page 51.
40 ProbeBuilder Directives
For EJB subclasses to be tracked by Introscope, they must be added to the appropriate Tracer Group. To do this, add entries that refer to the direct ancestors of the EJB subclasses to be tracked. From these models, replace <entity.bean.ancestor.class> or <session.bean.ancestor.class> with the fully-qualified class name of the immediate ancestor of the EJBs to be Introscope-enabled. For entity EJBs:
IdentifyInheritedAs: <entity.bean.ancestor.class> EntityBeanTracing
The Tracer Group, SessionBeanTracing, causes the tracking of mySessionEJB: The following tracer traces mySessionEJBsubclass1 and mySessionEJBsubclass2.
CA Wily Introscope
The following sections describe how you can use tracers to explicitly mark the frontends and backends in your application.
Blame Tracers
Introscope provides tracers for capturing front and backend metrics: FrontendMarker and BackendMarker. These tracers explicitly mark a frontend and backend, respectively. You can use FrontendMarker and BackendMarker to instrument your own code, for instance code that accesses a backend, to cause Introscope to capture and present metrics for custom components in the Investigator tree. If no FrontendMarker is configured, the first component in the blame stack will be the default frontend. In some environments this may not be desirable. For example, if your environment includes Introscope Browser Response Time Adapter (BRTA), by default the browser component will appear as the default frontend. In this case, you might configure servlets as frontends. If no BackendMarker is configured, Introscope will infer a backendany component that opens a client socket will be a default backend if none is explicitly marked. It is useful to use BackendMarker:
to assign a desired name to an item that Introscope detects as a backend to mark custom Java sockets that Introscope does not instrument for native sockets that are called through the Java Native Interface (JNI), to
identify a Java/JNI bridging method as the backend. FrontendMarker and BackendMarker are instances of BlamePointTracer which provides metrics such as average response time, per interval counts, concurrency, stalls, and errors for a blamed component. A BlamePointTracer can be applied to middle components for a more granular Blame Stack.
The following Blame Tracers used in previous versions of Introscope still exist, but are not typically used in Introscope PBDs:
BlamedMethodTimer
42 ProbeBuilder Directives
#Socket data from the Oracle driver reports too many metrics SkipPackagePrefixForFlag: oracle.jdbc. SocketTracing SkipPackagePrefixForFlag: oracle.net. SocketTracing
comment out the skips, as shown below:
#Socket data from the Oracle driver reports too many metrics #SkipPackagePrefixForFlag: oracle.jdbc. SocketTracing #SkipPackagePrefixForFlag: oracle.net. SocketTracing
CA Wily Introscope
direct interface implementations of the specified class or interface. Note Only concrete, implemented methods can be traced and report metric data while running. An abstract method specified in a Custom Tracer results in no metric data being reported. You must use a specific syntax when constructing Custom Tracers, or Introscope will not be able to recognize and process your tracers, and wont collect the desired information. This syntax is described in the next section.
Tracer syntax
A tracer is composed of a directive and information about the method or class to trace, in the following format:
<directive>: <class> <method> <Tracer-name> <metric-name>
Tracer component
<class>
Definition
A fully qualified class or interface name to trace. Fully qualified means it includes the full package of the class as well as the name, for example, com.mycompany.mypackage.MyClass. The simplest method specifier is the name of the method to trace. If just the name of the method is given, all instances of the method are traced, regardless of signature. If a signature is also given, only the instance with that signature will be traced. (See also Signature differentiation on page 48.)
<method>
44 ProbeBuilder Directives
Tracer component
<Tracer-name>
Definition
Specifies how the method is to be traced. See the table below for descriptions of tracer names. Controls how the collected data is displayed in the Workstation. The following examples describe the three ways to specify the name and location of a metric at different levels of the metrics tree. metric-name The metric appears immediately inside the Java Agent. resource:metric-name The metric appears inside one Resource (folder) below the Java Agent. resource|sub-resource|sub-subresource:metric-name The metric appears more than one Resource (folder) level deep below the Agent, use pipe characters (|) to separate the Resources.
<metric-name>
The following table describes tracer names and what they trace. Tracer name What It Traces
Reports as a count the number of times a method has started but not yet finished. The result is reported under <metric-name> in the Investigator tree. An example use of this Tracer would be counting the number of simultaneous database queries Average CPU time (in milliseconds) used during method execution and reports it under <metricname> in the metrics tree.
ConcurrentInvocation Counter
MethodCPUTimer
MethodNanoCPUTimer
Average CPU time (in nanoseconds) used during method execution and reports it under <metricname> in the metrics tree. This tracer provides nanosecond precision, but not necessarily nanosecond accuracy; it relies on the JVM to provide the current value of the most precise available system timer, in nanoseconds.
CA Wily Introscope
Tracer name
What It Traces
Average method execution time in nanoseconds, reported under <metric-name> in the metrics tree. This tracer provides nanosecond precision, but not necessarily nanosecond accuracy; it relies on the JVM to provide the current value of the most precise available system timer, in nanoseconds.
MethodNanoTimer
MethodRateTracer
Number of invocations per second. An example use of this would be logins per second when tracing a method that represents a user logging into the system. It is reported under <metric-name> in the Investigator tree. Average method execution time in milliseconds and reports it under <metric-name> in the metrics tree Adds (or subtracts, respectively) one to the value of a counter specified by <metric-name> every time the metric is traced. These two metrics can be combined to trace complex metrics like number of connected users, when one method is called to create a new user session, and a second method is called to end a user session. Number of invocations per interval. This interval will change based on the view period of the consumer of the data (for example, the View pane in the Investigator). It is reported under <metric-name> in the Investigator tree. Dumps a stack trace to the instrumented application's stderr for methods to which it is applied. The exception stack trace thrown by the Dump Stack Tracer is not a true exceptionit is a mechanism for printing the method stack trace. This feature is useful for determining callpaths to a method.
and
PerIntervalCounter
DumpStackTraceTracer
WARNING This feature imposes heavy system overhead. It is strongly recommended that this tracer only be used in a diagnostic context where a sharp increase in overhead is acceptable.
46 ProbeBuilder Directives
CA Wily Introscope
Keyword-based substitution
Keyword-based substitution allows runtime substitution of values into the metric name.
48 ProbeBuilder Directives
The parameters in the metric name in the tracer are substituted at runtime for the actual values into the metric name. This feature can be used with any directive. Parameter
{method} {classname} {packagename}
Runtime substitution
Name of the method being traced Runtime class name of the class being traced Runtime package name of the class being traced
{packageandclassname} Runtime package and class name of the class being traced
Note If Introscope processes a class which does not have a package, it will replace {packagename} with the string <Unnamed Package>.
Example 1:
If the metric name for a tracer in the pbd file is:
Example 2:
If a tracer with a metric name in the .pbd file of
"myPackage.myClass|myMethod:Response Time(ms)"
Note Note the . between the package and class instead of the | in the first example.
Metric-name-based parameters
You can create a single-method Tracer that creates a metric name based on parameters passed to a method using the TraceOneMethodWithParametersOfClass keyword.
CA Wily Introscope
Parameters can be used in the metric name. This is accomplished by substituting the value of parameters for placeholder strings in the metric name. The placeholder strings to use are {#} where # is the index of the parameter to substitute. The indices start counting at zero. Any number of parameter substitutions can be used in any order. All parameters are converted to strings before substitution into the metric name. Object parameters other than strings should be used with caution because they are converted using the toString() method. If you are unclear about what string the parameter will be converted to, you should refrain from using it in the metric name.
Example:
A Web site uses a class named order, with a method named process. The method has parameters for different kinds of orders, either book or music. You can create a tracer like this:
TraceOneMethodWithParametersOfClass: order process(LJava/lang/string;)V MethodTimer Order|{0}Order:Average Response Time (ms)
This tracer produces metrics like these: Order BookOrder Average Response Time (ms) MusicOrder Average Response Time (ms) You can also use the TraceOneMethodWithParametersIfInherits keyword. For more information on both keywords, see Directive keywords on page 51.
Skips
Certain packages, classes, or methods can be skipped by AutoProbe or ProbeBuilder by using skip directives. By default, Introscope Agent and fundamental Java classes and packages are skipped by AutoProbe or ProbeBuilder. For more information, see ProbeBuilder Skip keywords on page 52.
50 ProbeBuilder Directives
Example
Create tracers for the login and logout methods of the user class:
TraceOneMethodOfClass user login MethodTraceIncrementor Logged-in Users TraceOneMethodOfClass user logout MethodTraceDecrementor Logged-in Users
This increments the metric Logged-in Users when someone logs in and decrements Logged-in Users when someone logs out.
Directive keywords
This section contains a list of Introscope Directive keywords. Specifics for using these keywords with arguments to create directives are described in this section. Two tracers, StalledMethodTracer and ThresholdMethodTimer use their own keywords (see Threshold ProbeBuilder action keywords on page 55). The table below defines parameters used in theIntroscope Directive keyword syntax. Parameter
<package-name> <class-name>
Value
Period-separated, fully qualified package name, such as
java.lang.
Period-separated, fully qualified class name, such as
java.lang.Object.
Directive keywords 51
CA Wily Introscope
Parameter
<Tracer-name>
Value
Name of Tracer to use, one of the following in this list: MethodTimer PerIntervalCounter MethodRateTracer MethodTraceIncrementor MethodTraceDecrementor ConcurrentInvocationCounter BlamePointTracer FrontendMarker BackendMarker
Main([Ljava/lang/String;)V.
Valid metric name or resource category depending on the specific tracer class, such as Resource|Sub-resource. Name of tracer group to use.
52 ProbeBuilder Directives
IdentifyCorbaAs: <Tracer-group> Adds all CORBA classes to the specified Tracer Group. IdentifyInheritedAs: <class-name> <Tracer-group> Adds all direct subclasses or interfaces to the specified Tracer Group. If a class is specified, it adds all direct subclasses. If an interface class name is specified, it adds all direct implementers of that interface. InstrumentPoint: <ThrowException> or <CatchException> ThrowException Track all exceptions at the location where they are thrown. High performance impact, turned off by default. CatchException Track all exceptions at the location where they are caught. High performance impact, turned off by default. TraceAllMethodsIfInherits: <class-name> <Tracer-name> <name> Traces all methods in direct subclasses or implementers of the named interface with the given tracer class and metric name. Only concrete, implemented methods are Introscope-enabled and report metric data while running. The result is a single aggregate metric for all methods traced. To get detail results for particular methods, use one of the TraceOneMethod keywords. An abstract method specified in a tracer results in no metric data being reported. TraceAllMethodsOfClass: <class-name> <Tracer-name> <name> Traces all methods in the named class with the given tracer class and metric name. Only concrete, implemented methods are Introscope-enabled and report metric data while running. The result is an aggregate metric for all methods traced. To get detailed results for particular methods, use one of the TraceOneMethod keywords. An abstract method specified in a tracer results in no metric data being reported. TraceOneMethodOfClass: <class-name> <method> <Tracer-name> <name> Traces the specific method in the named class with the given tracer class and metric name.
Directive keywords 53
CA Wily Introscope
Only concrete, implemented methods are Introscope-enabled and report metric data while running. An abstract method specified in a tracer results in no metric data being reported. TraceOneMethodWithParametersIfInherits: <class-name> <method> <Tracer-name> <name> Traces the specific method in direct subclasses or implementers of the named superclass or interface with the given tracer class and metric name. Only concrete, implemented methods are Introscope-enabled and report metric data while running. An abstract method specified in a tracer results in no metric data being reported. The specified method name must include a signature. The metric name can include strings like {#} that are substituted with the value of the parameter at index # (where 0 is the first parameter, 1 is the second parameter, etc). TraceOneMethodWithParametersOfClass: <class-name> <method> <Tracername> <name> Traces the specific method in the named class with the given tracer class and metric name. Only concrete, implemented methods are Introscope-enabled and report metric data while running. An abstract method specified in a tracer results in no metric data being reported. The specified method name must include a signature. The metric name can include strings like {#} that are substituted with the value of the parameter at index # (where 0 is the first parameter, 1 is the second parameter, etc). TurnOn: <Tracer-group> Enables the specified Tracer Group. There is no corresponding Directive to disable a Tracer Group. To disable a Tracer Group, comment out the associated TurnOn Directive.
54 ProbeBuilder Directives
Keyword syntax
The table below defines parameters used in the keyword syntax for these specific directives. Parameter
<class-name>
Value
Period-separated, fully qualified class name, such as
java.lang.Object.
<Tracer-name> Name of tracer to use, one of the following in this list: StalledMethodTracer ThresholdMethodTimer <method> <name> <threshold> Method name with an optional descriptor, such as Main or Main([Ljava/lang/String;)V). Valid metric name or resource category depending on the specific tracer class, such as Resource|Sub-resource. Length of threshold in milliseconds
Action keywords
TraceOneMethodWithThresholdOfClass: <class-name> <method> <Tracername> <name> <threshold> Traces the specific method in the named class with the given tracer class and metric name. Only concrete, implemented methods are Introscope-enabled and report metric data while running. An abstract method specified in a tracer results in no metric data being reported. TraceAllMethodsWithThresholdOfClass: <class-name> <Tracer-name> <name> <threshold> Traces all methods in the named class with the given tracer class and metric name.
Directive keywords 55
CA Wily Introscope
Only concrete, implemented methods are Introscope-enabled and report metric data while running. The result is an aggregate metric for all methods traced. To get detailed results for particular methods, use one of the TraceOneMethod keywords. An abstract method specified in a tracer results in no metric data being reported.
Threshold tracers
StalledMethodTracer traces the number of method invocations that have exceeded a user-defined execution threshold value and have not finished. This number serves as an approximation of the number of hung threads. The result is reported in the metrics tree using the fully qualified metric name specified in the directives file. If desired, users can set up Alerts on this metric. Over and Under Threshold Counter Tracers:
OverThresholdPerIntervalCounter, which traces the number of invocations
equal to or less than a user-defined threshold. Each of these tracers produces one metric each, which is displayed in the Investigator tree. The fully qualified metric name is specified in the directives file.
56 ProbeBuilder Directives
2 Update the introscope.autoprobe.directivesFile property, in wily/ IntroscopeAgent.profile file, to include the names of any new directives files, separated by commas. In the following example, a directives file named petstore.pbd has been added:
introscope.autoprobe.directivesFile=default.pbl,petstore.pbd
Note Do not remove any ProbeBuilder list files (.pbl) already in the property.
CA Wily Introscope
If your managed applications are running, you do not need to restart the application server to apply the new or changed directives, but it is necessary to load, or reload, the managed application classes. How you cause the classes to reload depends upon the application server you use. For instance, on SAP NetWeaver 6.40, a redeploy is sufficient. Other environments may require a production redeploy.
58 ProbeBuilder Directives
SECTION
This chapter provides instructions for configuring AutoProbe for application servers. AutoProbe dynamically Introscope-enables all applications loaded by a specific application server. Before You Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 60 62 63 65 66 67 68
Configuring WebLogic Server to use AutoProbe Configuring WebSphere to Use AutoProbe . Configuring Sun ONE to use AutoProbe . Configuring Oracle 10g to use AutoProbe Configuring HTTP servlet tracing . Modifying Java2 Security Policy . . . . . . . . . Configuring WebSphere z/OS to Use AutoProbe
CA Wily Introscope
page 69. The instructions in this chapter assume that you have performed the following installation and configuration tasks:
Installing the Java Agent on page 16 Java Agent-to-Enterprise-Manager connection properties on page 17 Configuring the Java Agent name on page 18 Configuring ProbeBuilder options on page 18
WARNING Application Server AutoProbe is not supported on any JVM 1.5 and above platforms.
-Dweblogic.classloader.preprocessor= com.wily.introscope.api.weblogic.PreProcessor
3 Configure Tracer Groups to collect servlet data. For more information, see Configuring HTTP servlet tracing on page 67.
-Dweblogic.classloader.preprocessor= com.wily.introscope.api.weblogic.PreProcessor
3 Configure Tracer Groups to collect servlet data. For more information, see Configuring HTTP servlet tracing on page 67.
-Dweblogic.classloader.preprocessor= com.wily.introscope.api.weblogic.PreProcessor
3 Configure Tracer Groups to collect servlet data. For more information, see Configuring HTTP servlet tracing on page 67.
WebSphere 6.0/5.1/5.0
To configure WebSphere 6.0/5.1/5.0 to use AutoProbe: 1 Add the Agent.jar to the runtime extensions directory for WebSphere at <product_installation_root>/lib/ext. 2 In WebSphere, start the Administrators Console and go to the JVM Settings section for the application server you want to modify:
For WebSphere 6.0, navigate to Application Servers > your_server > Java
and Process Management > Process Definition > Java Virtual Machine.
For WebSphere 5.0, navigate to Application Servers > your_server >
Process Definition > Java Virtual Machine. 3 Set the Generic JVM Arguments field to specify the classloader plug-in and the location of the IntroscopeAgent.profile file. You will set EITHER the com.wily.introscope.agentProfile, OR
Note Although the examples shown break across lines, make sure that your argument does not have any breaks. 4 Apply the changes in the Administrators Console. 5 Restart the Web Application Server. 6 Configure Tracer Groups to collect servlet data. For more informaiton, see Configuring HTTP servlet tracing on page 67.
OR
5 Place the Agent.jar file in the <WebSphere Instance dir>/lib/ext directory. Note Do not place the Agent.jar file in the WebSphere installation directory. The following shows examples of the wrong and right directory:
Note This step is fo z/OS operating systems only. 7 Confirm that all newly created Introscope files and directories within the ./wily directory are read-accessible by the WebSphere process. 8 Confirm that all *.log files (written by the Introscope Agent and ProbeBuilder) in the ./wily folder have write-access to the WebSphere process. These include:
all the Introscope files and directories the Introscope files inside <WAS instance dir>/lib/ext
9 Restart WebSphere application server. 10 When WebSphere says open for e-business, open the Administrators Console. Metrics should start reporting. 11 Configure Tracer Groups to collect servlet data. For more informaiton, see Configuring HTTP servlet tracing on page 67.
com.wily.introscope.api.sun.appserver.SunONEAutoProbe.
For example:
<java-config ... bytecodepreprocessors="com.wily.introscope.api.sun.appserver.SunONEAutoProbe" >
Add a jvm-options element to define the location of the Agent profile. Define
5 OPTIONAL: If you configured com.wily.introscope.agentResource, add the resource file to the server classpath. 6 Configure Tracer Groups to collect servlet data. For more informaiton, see Configuring HTTP servlet tracing on page 67.
value of com.wily.introscope.api.oracle.OracleAutoProbe. 3 Set the system property oracle.j2ee.class.preprocessing with the value of true. 4 Run this command at the command line:
-Dcom.wily.introscope.probebuilder.oracle.enable=true
5 Restart the Oracle Application Server 10g, using this command:
java -Doracle.classpreprocessor.classes=com.wily.introscope.api. oracle.OracleAutoProbe -Doracle.j2ee.class.preprocessing=true -Dcom.wily.introscope.probebuilder.oracle.enable=true -classpath oc4j.jar:<path to wily install dir>/wily/Agent.jar com.evermind.server.OC4JServer -config <path to oracle install
dir>/config/server.xml
6 Configure Tracer Groups to collect servlet data. For more informaiton, see Configuring HTTP servlet tracing, below.
4 Turn on the HTTPAppServerAutoProbeServletTracing Tracer Group by removing the pound sign from the beginning of the line. For example:
TurnOn: HTTPAppServerAutoProbeServletTracing
CA Wily Introscope
following:
// permissions for Introscope AutoProbe grant codeBase "file:${was.install.root}/-" { permission java.io.FilePermission "${was.install.root}${/ }wily${/}-", "read"; permission java.net.SocketPermission "*", "connect,resolve"; permission java.lang.RuntimePermission "setIO"; permission java.lang.RuntimePermission "getClassLoader"; permission java.lang.RuntimePermission "modifyThread"; permission java.lang.RuntimePermission "modifyThreadGroup"; permission java.lang.RuntimePermission "loadLibrary.*"; permission java.lang.RuntimePermission "accessClassInPackage.*"; permission java.lang.RuntimePermission "accessDeclaredMembers"; }; grant { permission java.util.PropertyPermission "*", "read,write"; };
Note Line breaks are shown for user readability and are not needed when adding the permissions to the server.policy file.
SECTION
Manual ProbeBuilding
This chapter provides instructions for manually Introscope-enabling your applications. Manual ProbeBuilding is a non-dynamic method of Introscopeenabling your classes. When you run ProbeBuilder manually, it Introscope-enables classes on disk before the application server is run. You can use Manual ProbeBuilder when your environment does not support AutoProbe, or you prefer not to use AutoProbe. WARNING Introscope supports two other methods of instrumenting your applications. CA Wily recommends you use these other methods before using manual ProbeBuilding. Manual ProbeBuilding should not be used with the other methods of instrumentation, and should be used as a last resort. For more information, see Configuring ProbeBuilder options on page 18 and AutoProbe for Application Servers on page 59. Follow the steps in this chapter to manually Introscope-enable your applications. Before you begin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 70 72 72 75 75 76
Manual ProbeBuilding 69
CA Wily Introscope
WARNING Introscope supports two other methods of instrumenting your applications. CA Wily recommends you use these other methods before using manual ProbeBuilding. Manual ProbeBuilding should not be used with the other methods of instrumentation, and should be used as a last resort. For more information, see Configuring ProbeBuilder options on page 18 and AutoProbe for Application Servers on page 59.
without a windowing system. Follow the instructions in Using ProbeBuilder from the command line, below.
installation process.
Configured basic Agent settings as described in Installing and Configuring the
Java Agent on page 15. 1 If you have custom .pbds, add them to the <Introscope
home>/config/
custompbd directory.
2 Launch the ProbeBuilder Wizard from your <IntroscopeHome> directory. 3 On the Welcome screen, Click Next.
70 Manual ProbeBuilding
4 Enter or browse to your bytecode directory and click Next. Note You can also select .jar files or individual .class files. 5 Click Select Java Bytecode to enter your desired directory and click Next. 6 Enter the name and location for the new directory to contain the Introscopeenabled code, or click Browse to select a location. The default name is the original directory with the suffix isc. Note If you select a directory that already exists, ProbeBuilder Wizard will display the following dialog:
Click Overwrite to overwrite existing files as necessary, or click Cancel to go back to the previous dialog to select another location. 7 Click Next if you didnt overwrite an existing directory. 8 In the System Directives window, locate the set of system Directives which correspond to your environment (if your application server isnt listed, use the Default Java selection). Note that you now have a choice of either using system directives files in which most Tracer Groups are turned on (FULL) or only a subset of Tracer Groups are turned on (TYPICAL). For more information on full and typical system directives files and the what kind of information they provide, see Full and typical ProbeBuilder Directives sets on page 36. 9 Click Next. If you installed custom directives files in your config/custompbd directory, they appear in the Custom Directives window. Check the box next to any custom directives that you want to use with this bytecode. Note For information on creating custom directives, see ProbeBuilder Directives on page 33. 10 Check the box for any custom .pbd files you want to use, then click Add Probes. 11 Introscope adds Probes to the specified bytecode. This operation may take several minutes. 12 When the Finished window opens, click Exit or Add Additional Probes to add Probes to another directory.
3 Save the changes. 4 Start your application with the new startup script.
line
configure basic Introscope Agent settings
The ProbeBuilder classpath varies, depending on whether you installed it using an agent installer or the full Introscope installer. This is an example of invoking ProbeBuilder from the agent directory:
java -cp ext/ProbeBuilder.jar com.wily.introscope.api.IntroscopeProbeBuilder -directives default.pbl,stream.pbd -origdir /usr/myApp/classes -destdir /usr/myApp/classes.isc verbose
Result
Displays a help screen REQUIRED: a comma-separated list of ProbeBuilder Directives files (.pbd), ProbeBuilder list files (.pbl), or directories to scan. Select either a full or typical .pbl file, depending on how much information you want gathered (see Full or typical tracing options on page 28). If you used the default Agent installer, you will see all possible default PBD and PBL files in the \wily directory. However, if you used an application-server specific Agent installer, you will only see PBD and PBL files specific to that application server.
Select one set of the next three pairs to specify your original code location and your Introscope-enabled code destination, using either directories, jar files, or classes. -origdir directory -destdir directory -origjar file -destjar file -origclass file -destclass file Specifies the original directory (including subdirectories) Specifies the destination directory Specifies the original archive, including .jar, .zip, .war, .rar and .ear archives Specifies the destination archive Specifies the original class Specifies the destination class
Option
-skipitems
Result
Skips any files that are not Java bytecode files or archive files (.jar and .zip files). If -skipitems is not set, the non-Java bytecode files are copied to the destination, unchanged. Turns on an interactive text UI when problems arise.
-prompt
3 Save the changes. 4 Start your application with the new startup script.
The instructions in this chapter directed you to perform this process when you Introscope-enabled your application for the first time.
Prepend paths to classpaths.
If only part of the applications code was Introscope-enabled, you could place the Introscope-enabled code paths before the original-code paths (prepend) in the classpath. If you do this, Introscope-enabled code loads and reports performance data. Non-Introscope-enabled code still loads and works normally, but does not report performance data.
Place Introscope-enabled code in original classpath.
Use this method when classpaths are set in many places, or to conduct an evaluation. Be careful using this method in a production environment, when with this method it is easy to forget whether you are using the original or the Introscope-enabled code.
Move the original code to a new location. Leave the classpaths unchanged. Then move the Introscope-enabled code to the original location. On a UNIX machine, you could also create a symbolic link from the current location of the Introscope-enabled code to the original location.
then replace paths to the Introscope-enabled code in Java classpaths with original paths.
If you added paths to the Introscope-enabled code in front of the paths to the
original code, remove prepended paths to classpaths Remove the prepended portion of the classpath so that only the original classpath remains.
If you put Introscope-enabled code in the original classpath, then remove the
Introscope-enabled code from the original path and place the original code in the original classpath.
CA Wily Introscope
If you used symbolic links on a UNIX system, point the symbolic link to the original directory or remove the link and move the code into the original classpath.
ProbeBuilder Wizard.lax
File: <Introscope home>/Introscope ProbeBuilder Wizard.lax
lax.nl.current.vm
VM to use the next time the ProbeBuilder is started. Can be set to any installed JDK or Default: JRE version 1.3. Varies by operating system
lax.stderr.redirect
Standard Error Output. Leave blank for no output, console to send to a console window, or any path to a file to save to the file. Default: blank
lax.stdin.redirect
Standard Input. Leave blank for no input, console to read from the console window, or any path to a file to read from that file. Default: blank
lax.stdout.redirect
Standard Output. Leave blank for no output, console to send to a console window, or any path to a file to save to the file. Default: blank
76 Manual ProbeBuilding
SECTION
II
The chapters in this section have information about Java Agent administration and operations.
Configuring Agent HTTP Tunneling on page 79 Java Agent Naming on page 83 Agent Monitoring and Logging on page 95 Using Virtual Agents to Aggregate Metrics on page 101 Configuring Agent Failover on page 105
SECTION
This chapter describes how to configure Introscope Agents for HTTP tunneling. This feature enables Agents at a remote site to connect securely to an Enterprise Manager that is managed elsewherefor example, offshore. Configuring Agent HTTP tunneling . . . . . . . . . . . . . . . . . . . . 80 80
CA Wily Introscope
com.wily.isengard.postofficehub.link.net.HttpTunnelingSocketFa ctory.
To configure Agent HTTP tunneling: 1 Configure an agent connection to the Enterprise Manager by setting the host name, connection port, and socket factory properties:
introscope.agent.enterprisemanager.transport.tcp.host.DEFAULT on page 169 introscope.agent.enterprisemanager.transport.tcp.port.DEFAULT on page 169 introscope.agent.enterprisemanager.transport.tcp.socketfactory.DEFAULT on
3 If the proxy server requires the agent to authenticate with it, set these properties:
introscope.agent.enterprisemanager.transport.http.proxy.username on
page 183
introscope.agent.enterprisemanager.transport.http.proxy.password on
page 183
CA Wily Introscope
SECTION
This chapter has information about Agent naming, related environmental and deployment considerations, and options for automatically naming your Agents. Understanding the Java Agent name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 88 88 89 91 92
Specifying an Agent name using a Java system property Specifying an Agent name using a system property key Obtaining an Agent name from the application server . Advanced automatic Agent naming options. . . . .
CA Wily Introscope
When you configure management logic in the Workstationfor instance, Dashboards, Alerts, and Actionsthe Agent name is a component in the regular expressions you define that identify the applications to which the management logic applies.
SuperDomain Custom Metric Host Custom Metric Process Custom Metric Agents
User-defined Domains
CA Wily Introscope
If an Agent tries to connect to an Enterprise Manager to which an Agent with the same fully-qualified Agent name is already connected, the Enterprise Manager appends a unique identifier to the name of the newly connecting Agent. The identifier consists of a percent (%) character and a digit. This mechanism ensures that multiple Agents that connect using the same fully-qualified name can be uniquely identified for the duration of the connection. The Enterprise Manager renames the first duplicate Agent to connect by appending %1 to its Agent name. For instance, assume that two Agents with the fully qualified Agent name:
hostPA|processNIM|PodAgent
connect to the Enterprise Manager, one after the other. The Enterprise Manager renames the second Agent:
PodAgent%1
If other Agents with the same fully qualified name connect, they are renamed, in succession, PodAgent%2, PodAgent%3, PodAgent%4, and so on, where the digit following the percent character is the next number in sequence. When a renamed agent disconnects, the suffix it was assigned can be re-used. For example, if PodAgent%1 disconnects while PodAgent remains connected, the next Agent with the fully qualified name hostPA|processNIM|PodAgent to connect will be renamed PodAgent%1. Reuse of suffix identifier makes it possible that the Enterprise Manager might assign the same suffix to a particular Agents name from connection to connection. However, on subsequent connections, a given Agent could just as well be renamed differently. Having an Agents name vary from connection to connection is problematic when querying historical datait is preferable to configure a naming strategy that avoids the Enterprise Manager renaming Agents.
CA Wily Introscope
Agent (described in Configuring unique names for application instances on page 93.)
Let Introscope uniquely name each Agent using its own naming scheme
com.wily.introscope.agent.agentName
Note If the Java system property specified here doesnt exist, this property will be ignored. 3 Restart the application server.
The name of the application server displayed in the Introscope Workstation is determined by a Java J2EE API. This sometimes causes the name of the application servers to display differently in the Workstation because all application servers implement the API differently. The names of multiple application servers may be formatted differently in the Workstation, and even the same application server name may be formatted differently from release to release.
CA Wily Introscope
cell (domain) + process (instance of WAS) When information is obtained, segments are separated by forward slashesfor example:
medrec/MyCluster/MedRecServer
Any forward slashes in the segment name are converted to underscores. For example, if a Domain is named Petstore/West, it will be converted to Petstore_West. Note: When constructing the Agent name that appears in Introscope, Introscope
edits the information to make the Agent name compliant with Introscope Agent naming rules:
characters such as pipes, colons, or percentage signs are replaced by
underscores
names that begin with any character other than a letter will have the letter A
prepended to them
empty names are replaced by UnnamedAgent (so as to be distinguishable
How to change
When using the Automatic Agent Naming feature, the Agent waits up to a configurable amount of time before connecting to the Enterprise Manager while trying to find Agent name information. The default delay is 120 seconds.
To change the delay value:
1 Open the IntroscopeAgent.profile. 2 Under the Agent Name section, configure the desired delay in the property
introscope.agent.agentAutoNamingMaximumConnectionDelayIn Seconds.
When using the Automatic Agent Naming feature, the Agent periodically checks to see if the naming information from the application server has changed. The default interval is ten minutes.
To change this interval:
1 Open the IntroscopeAgent.profile. 2 Under the Agent Name section, configure the desired interval in the
introscope.agent.agentAutoRenamingIntervalInMinutes
property.
CA Wily Introscope
introscope.agent.clonedAgent=true
3 Restart your managed application.
CA Wily Introscope
SECTION
This chapter has information about Agent configuration options that relate to Agent operations and monitoring. Configuring Java Agent connection metrics . Turning off socket Metrics in the Agent profile Configuring Agent logging options Managing the ProbeBuilder Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 96 97 99
CA Wily Introscope
An Agent disconnect also generates a Whats Interesting event. As with other events, users can query for Agent disconnects using the historical query interface. Agent disconnect events form a portion of the data used in assessing application health in the Overview tab for Agents and Applications in the Investigator. Once an Agent disconnects, Introscope continues to generate not connected state metrics until the Agent is timed out, as specified by the
3 Save changes.
log4j.logger.IntroscopeAgent=VERBOSE#com.wily.util.feedback.Log4JS
everityLevel,logfile
By default the Agent log, IntroscopeAgent.log is written to the Wily\logs directory, unless you configure one agent autonaming options described in Java Agent Naming on page 83, in which case agent log files are also automatically named, as described in the following section. 3 If desired, change the name and/or location of the Introscope Agent logfile in the property, log4j.appender.logfile.File.
CA Wily Introscope
Once the Agent name becomes available, the logfile will be renamed, as in:
AutoProbe.DOM1_ACME42.log
You can disable this automatic log naming. See Advanced automatic Agent naming options on page 91. Note: These notes apply to Agent logfile automatic naming:
if the original name of the logfile does not end in .log, a period is appended,
log4j.appender.console.encoding=IBM-1047 log4j.appender.logfile.encoding=IBM-1047
If these properties are not present in your existing IntroscopeAgent.profile, you must add them.
introscope.agent.logger.delay=100000
The value is in milliseconds, so the default delay in this example is 100 seconds.
CA Wily Introscope
SECTION
10
This chapter has information about configuring Virtual Agents. Understanding Virtual Agents . Virtual Agent requirements. Configuring Virtual Agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 102 102
CA Wily Introscope
If the domain is defined as domain="" in the agent-cluster definition, the Virtual Agent will default to the SuperDomain. If you define multiple Virtual Agents, you define an <agent-cluster> element for each. The <agent-cluster> element requires two child elements:
<agent-specifier>Contains a regular expression that specifies the Agents
in the Virtual Agent, using the standard fully qualified agent name:
from the Agents in the Virtual Agent, in terms of Resource type, or subsets of the instances of a resource type. The recommended prefixes are:
Note While the above are the recommended prefixes, any resource can be used as a metric specifier. The <agent-cluster> element can contain multiple <metric-specifier> stanzas. Note that a higher volume of matching metrics imposes high overhead on the Enterprise Manager, and can ultimately have an effect on Enterprise Manager capacity.
CA Wily Introscope
Note Regular expressions and wildcard metric specifiers such as ".*" and "(.*)" are allowed, but should be used with caution, if at all. Use of wildcards can result in a high volume of metrics and a performance impact. A sample agentclusters.xml is available in your IntroscopeHome/config directory.
SECTION
11
This chapter has information about Agent failover. Understanding Agent failover . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 106 107 107 108
Configuring Java Agent failback to primary Enterprise Manager . Agent failover and domain/user configuration .
CA Wily Introscope
introscope.agent.enterprisemanager.transport.tcp.host. DEFAULT=enterprise introscope.agent.enterprisemanager.transport.tcp.port. DEFAULT=5001 introscope.agent.enterprisemanager.transport.tcp.socketfactory. DEFAULT=com.wily.isengard.postofficehub.link.net.DefaultSocket Factory introscope.agent.enterprisemanager.transport.tcp.host.BackupEM1= voyager introscope.agent.enterprisemanager.transport.tcp.port.BackupEM1= 5002 introscope.agent.enterprisemanager.transport.tcp.socketfactory. BackupEM1=com.wily.isengard.postofficehub.link.net.DefaultSocket Factory
introscope.agent.enterprisemanager.connectionorder= DEFAULT,BackupEM1,BackupEM2
CA Wily Introscope
SECTION
III
The chapters in this section have information about tailoring and extending Java Agent data collection.
Configuring Access to Application Server Data on page 111 Configuring Boundary Blame on page 115 Configuring Transaction Trace Options on page 123 Configuring Introscope SQL Agent on page 131 Enabling JMX Reporting on page 141 Configuring Platform Monitoring on page 149 Configuring WebSphere PMI on page 153 Enabling WebLogic Diagnostic Framework on page 159
CHAPTER
12
This chapter has information about configuring an Agent to obtain management information from a WebLogic Server or WebSphere application server. Application Server management data and the Agent . Configuring startup class for WebLogic 8.1 or 9.0 . . . . . . . . . . . . . . . . . . . . . . 112 112 113
CA Wily Introscope
The Application Overview in the Workstation (available in Introscope v7.0 and later) uses JMX and PMI metrics, if available, in application health heuristics. Enabling the Agent to access application server management information is not required, but it enhances the visibility provided by the Application Overview. To enable an Agent to obtain and use data from the application server you configure an Introscope startup class or service in the application server, and target it at application server instances, or to an application server cluster.
8 Check the box(es) for the server(s) youd like to make this startup class available to. Click Apply. Use the run before deploying apps option. 9 Add the location of the WebAppSupport.jar to the application startup classpath. 10 Restart the application server.
CA Wily Introscope
SECTION
13
This chapter describes default Agent blame reporting behaviors, and related configuration options. Understanding Boundary Blame Using Blame tracers . . . . . Disabling Boundary Blame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 122 122
CA Wily Introscope
http://burger1.com/testWar/burgerServlet?ViewItem&category= 11776&item=5550662630&rd=1
the path prefix is:
/testWar
You can define a URL group for any useful category of requests that can be derived from a URLs path prefix. For example, depending on the form of your application URLs, you could define URL groups for each customer your application supports, for each major application, or for sub-applications. This enables you to monitor performance in the context of committed service levels, or for missioncritical portions of your application. The following example is an excerpt from a Java Agent profile, showing how URL Groups are defined:
introscope.agent.urlgroup.group.beta.format=nofilter foo {host} bar {protocol} baz {port} quux {query_param:foo} red {path_substring:2:5} yellow {path_delimited:/:0:1} green {path_delimited:/:1:4} blue {path_substring:0:0} introscope.agent.urlgroup.group.gamma.pathprefix=/examplesWebApp introscope.agent.urlgroup.group.gamma.format=Examples Web App
introscope.agent.urlgroup.keys=alpha,beta,gamma
If you define URL Groups so some URLs fall into multiple groups, the order in which you list the keys for the URL Groups in the property is important. The URL Group with the narrower membership should precede the URL Group with broader membership. For example, if the IP Group with key alpha has the path prefix /examplesWebApp and the URL Group with key delta has the path prefix /examplesWebApp/cleverones, delta should precede alpha in the keys parameter
Example 1
This property definition assigns all requests in which the path portion of the URL starts with /testWar to the URL Group whose key is alpha:
introscope.agent.urlgroup.group.alpha.pathprefix=/testWar
Requests that match the specified pathprefix include:
CA Wily Introscope
Example 2
A company that provides call center services could monitor response time for functional areas by setting up a URL Group for each application function. If customers access services with this URL:
http://genesystems/us/application_function/
where
Note You can use the asterisk symbol (*) as a wildcard in pathprefix properties.
Typically, the format property is used to assign a text string as the name for a URL. The following example causes metrics for the URL Group with key alpha to appear in the Workstation under the name Alpha Group:
introscope.agent.urlgroup.group.alpha.format=Alpha Group
introscope.agent.urlgroup.group.alpha.format={host}
When format={host}, statistics for these requests would appear under the metric names us.mybank.com and uk.mybank.com respectively:
https://us.mybank.com/mifi/loanApp...... https://uk.mybank.com/mifi/loanApp.....
introscope.agent.urlgroup.group.alpha.format={protocol}
When format={protocol} statistics are grouped in Investigator under metric names that correspond to the protocol portion of request URLs. For example, statistics for these requests would appear under the metric name https:
https://us.mybank.com/cgi-bin/mifi/scripts...... https://uk.mybank.com/cgi-bin/mifi/scripts......
introscope.agent.urlgroup.group.alpha.format={port}
When format={port}, statistics are grouped under names that correspond to the port portion of request URLs. For example, statistics for these requests would appear under the name 9001.
https://us.mybank.com:9001/cgi-bin/mifi/scripts...... https://uk.mybank.com:9001/cgi-bin/mifi/scripts......
When format={query_param:param} statistics are grouped in Investigator under metric names that correspond to value of the parameter specified. Requests without parameters are listed under <empty>. For example, given this parameter definition:
introscope.agent.urlgroup.group.alpha.format= {query_param:category}
Statistics for these requests would appear under the metric name 734
http://ubuy.com/ws/shoppingServlet?ViewItem&category=734 &item=3772&tc=photo
CA Wily Introscope
http://ubuy.com/ws/shoppingServlet?ViewItem&category=734 &item=8574&tc=photo
where
m is the index of the first character, and n is one greater than the index of
the last character. String selection operates like the java.lang.String.substring() method. For example, given this setting:
introscope.agent.urlgroup.group.alpha.format= {path_substring:0:3}
Statistics for this request would appear under the metric node /ht
http://research.com/htmldocu/WebL-12.html
introscope.agent.urlgroup.group.alpha.format= {path_delimited:delim_char:m:n}
where delim_char is the character that delimits the segments in the path, m is the index of the first segment to select, and n is one greater than the index of the last segment to select. For example, given this setting:
introscope.agent.urlgroup.group.alpha.format= {path_delimited:/:2:4}
statistics for the requests of this form:
http://www.buyitall.com/userid,sessionid/pageid
would appear under the metric name Note that:
a delimiter character counts as a segment the segment count starts at 0
/pageid
This table shows the segments as delimited by the slash character: Segment Index Segment String
0 / 1 userid,sessionid 2 / 3 pageid
You can specify multiple delimiters as necessary. For example, given this setting:
introscope.agent.urlgroup.group.alpha.format= {path_delimited:/,:3:4}
statistics for requests of the form shown above would appear under the metric name
sessionid.
This table shows the segments as delimited by the slash and the comma character: Segment Index Segment String
0 / 1 userid 2 , 3 sessionid 4 / 5 pageid
CA Wily Introscope
4 To configure the proposed URL Groups, copy the property statements produced by URL Grouper into the Agent profile.
SECTION
14
This chapter has information about default transaction tracing behaviors and related configuration options. Controlling automatic transaction tracing behavior Configuring cross-process transaction tracing . Extending transaction trace data collection . Disabling the capture of stalls as Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 125 126 128
CA Wily Introscope
groupings
Configurable automatic trace sampling that gathers trace information
Set to false to disable transaction trace sampling. The default value is true .
introscope.agent.transactiontracer.sampling.periodinseconds
To change the frequency with which a normalized unique URL is traced from the default value of 3,600 seconds (one hour) specify the new period in seconds.
introscope.agent.transactiontracer.sampling.randomize
By default, transaction trace sampling is performed on a random basis, so that not all samples are taken at the beginning of the period. Primarily for troubleshooting purposes, the sampling timing can be de-randomized, by changing the value of this property to true.
Specifies the number of transactions to trace, during the interval you specify. The default number of transactions is 1.
introscope.agent.transactiontracer.sampling.interval.seconds
Specifies the length of time to trace the number of transactions you specify. The default interval is every 2 minutes. Note These properties are located, by default, in the Enterprise Manager properties file. Before changing the defaults for the sampling.perinterval and sampling.interval properties, consider the potential for increased load in the Enterprise Manager with higher sampling rates. The Enterprise Manager will push this configuration to all agents connected to the Enterprise Manager. Configuring these properties in the agent will overwrite the configuration set by the Enterprise Manager for an individual agent.
CA Wily Introscope
representing the UserID, or an Object whose toString() returns to the UserID If your managed application stores User IDs using one of these methods, see Configuring Agent to collect additional transaction trace data on page 127, to configure Agent settings to collect User ID data.
To record this servlet request information for your managed application, see Configuring Agent to collect additional transaction trace data on page 127 to configure Agent settings to collect this data.
properties that correspond to the method your managed application uses to store User IDs. Note Ensure that only one set of properties are not commented, or the wrong properties might be used.
For HttpServletRequest.getRemoteUser(), uncomment the property:
introscope.agent.transactiontracer.userid.method=HttpServletRequest.get RemoteUser
For HttpServletRequest.getHeader (String key), uncomment the following pair
introscope.agent.transactiontracer.userid.method=HttpServletReques
t.getHeader
introscope.agent.transactiontracer.userid.key=<application defined
key string>
CA Wily Introscope
introscope.agent.transactiontracer.userid.method=HttpServletReques
t.getValue
introscope.agent.transactiontracer.userid.key=<application defined
key string>
2 To specify the HTTP request parameters for which to collect transaction trace data, uncomment this property and specify the HTTP request parameter(s) to track, in a comma-separated list:
#introscope.agent.transactiontracer.parameter.httprequest.parameters=pa rameter1,parameter2
3 To specify the HTTP session attributes for which to trace data, uncomment this property and specify the HTTP session attribute(s) to track, in a commaseparated list, for example:
#introscope.agent.transactiontracer.parameter.httpsession.attributes=ca rtID,deptID
You can disable the capture of stalls as Events, change the stall threshold, or change the frequency with which the Agent checks for stalls using these properties:
introscope.agent.stalls.enable controls whether the Agent checks for
that the agent checks for stalls. Note Support for stall tracers in PBDs will be deprecated.
CA Wily Introscope
SECTION
15
This chapter has instructions for configuring Introscope SQL Agent. SQL Agent overview . SQL Agent files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 133 133 134 136 138 138
Supported JDBC drivers and data sources . Configuring SQL Agent for WebSphere . Turning off Blame Metrics for SQL Agent SQL Agent Metrics . . . . . . . Configuring SQL Agent for WebLogic Server
CA Wily Introscope
Note Only text within quotation marks ('xyz') is normalized. Metrics for Generalized statements are aggregated and can be viewed in the JDBC node of the Investigator tree in the Workstation and WebView.
Note By default, Agent extensions such as SQLAgent.jar are installed in the wily/ext directory. You can change the location of the Agent extension directory with the introscope.agent.extensions.directory property in the Agent profile. If you change the location of the /ext directory, be sure to move the contents of the /ext directory as well.
classes111_g.zip, classes12_g.zip
DB2db2java.zip Sybasejconn2.jar WebLogic jDriver for OraclejDriver 6.1
The SQL Agent fully supports the JDBC 1.0 and 2.0 specifications, including support for all JDBC driver types, I through IV. Supported JDBC datasources for WebSphere In db2java.zip:
COM.ibm.db2.jdbc.DB2ConnectionPoolDataSource COM.ibm.db2.jdbc.DB2XADataSource
in classes12.zip:
oracle.jdbc.xa.client.OracleXADataSource
CA Wily Introscope
DataSource or driver.
If other applications use a JDBC DataSource or driver that has been
Introscope-enabled, you will need to add the Agent.jar to the classpaths for those applications. Once this is done, the applications may show up as Unknown Processes in the Workstation. However, this will not affect the functionality or performance of your application and can be ignored.
Use manual or application server ProbeBuilding to instrument the JDBC DataSource or Driver on page 134.
Use manual or application server ProbeBuilding to instrument the JDBC DataSource or Driver
The following instructions assume that:
Introscope, and specifically, ProbeBuilder are already installed you have write permission in the directory that contains your driver file you are able to use the ProbeBuilder Wizard application either on Windows or
via X-windows on UNIX. For instructions on command-line use of ProbeBuilder, see the Using ProbeBuilder from the command line on page 72. To manually Introscope-enable the JDBC DataSource or Driver: 1 Shut down WebSphere.
2 Locate the sqlagent.pbd file from an agent installation, and copy it to the <Introscope home>\config\custompbd directory. 3 Locate the file containing the Java classes that implement your JDBC DataSource. Often this is an archive file specified in one of the CLASSPATH settings for your application server. In Websphere, the list of driver classes can be found in <WebSphere home>\bin\setupCmdLine.bat in the DBDRIVER_JARS property. 4 Run the ProbeBuilder Wizard application located in the Introscope directory:
Introscope ProbeBuilder Wizard.exe on Windows IntroscopeProbeBuilderWizard on UNIX
5 At the Welcome screen, click Next. 6 In the Select Original Java Bytecode screen, browse to and select the file containing the JDBC DataSource to Introscope-enable. (For example, if using the file containing an Oracle JDBC DataSource, the name of the file would be classes12.zip.) Note Before Introscope-enabling any file, save a backup copy. 7 In the Destination Location screen, click Next to name the resulting Introscopeenabled file. (For example, if using the file containing an Oracle JDBC DataSource, the name of the resulting file would be classes12.isc.zip.) Accept the default save location for the resulting file. 8 In the System Directives screen, select Websphere SYSTEM directives. Click Next. 9 In the Custom Directives screen, select the sqlagent.pbd (along with any other custom .pbds used in your deployment). 10 Click Add Probes. This will create a copy of the file containing the JDBC DataSource (for example, classes12.isc.zip) and Introscope-enable the JDBC DataSource in this copy. 11 When the Finished screen appears, click Exit. 12 In your JDBC driver directory you should find the file containing the Introscopeenabled JDBC DataSource or driver. To use this file to see the JDBC Metrics in Introscope you can either:
set the original file aside and rename the Introscope-enabled one, as in the
following example:
c:\> rename classes12.zip classes12.orig.zip c:\> rename classes12.isc.zip classes12.zip
Note If the file to be renamed is in use, do not attempt to rename it until you first shut down any application or database that is actively using the file containing the JDBC DataSource.
change your application servers CLASSPATH setting to point to this new
CA Wily Introscope
Introscope-enabled file. Note If other applications use this same JDBC DataSource or driver file, you will need to put the Agent.jar (located in <WebSphere home>\wily) in the classpath for those applications. Otherwise, applications that reference the JDBC DataSource will fail at runtime. 13 Restart your admin server and application server to see the JDBC Metrics.
DataSource or driver
If other applications use a JDBC DataSource or driver that has been
Introscope-enabled, those applications may show up as Unknown Processes in the Workstation. However, this will not affect the functionality or performance of your WebLogic application and can be ignored. The instructions you follow in this section depend on which ProbeBuilder method you use:
JVM AutoProbeno further configuration is required. Application Server AutoProbe or Manual ProbeBuilder use the instructions in
via X-windows on UNIX. For instructions on command-line use of ProbeBuilder, see the Introscope Configuration and Administration Guide. To manually Introscope-enable the JDBC DataSource or Driver: 1 Shut down WebLogic. 2 Locate the sqlagent.pbd file from an agent installation, and copy it to the <Introscope home>\config\custompbd directory.
3 Locate the file containing the Java classes that implement your JDBC DataSource or driver. Often this is an archive file specified in one of the CLASSPATH settings for your application server. For example, for the Oracle XA DataSource, the name of the file would be classes12.zip. 4 Run the ProbeBuilder Wizard application located in the Introscope directory:
Introscope ProbeBuilder Wizard.exe on Windows IntroscopeProbeBuilderWizard on UNIX
5 At the Welcome screen, click Next. 6 In the Select Original Java Bytecode screen, browse to and select the file containing the JDBC DataSource or driver to Introscope-enable. For example, for the Oracle XA DataSource, the name of the file would be classes12.zip. Note Before Introscope-enabling any file, save a backup copy. In the Destination Location screen, click Next to name the resulting Introscope-enabled file. For example, for the Oracle XA DataSource, the name of the resulting file would be classes12.isc.zip. 7 In the System Directives screen, select the SYSTEM directives for WebLogic. Click Next. 8 In the Custom Directives screen, select the sqlagent.pbd (along with any other custom .pbds used in your deployment). 9 Click Add Probes. This will create a copy of the file containing the JDBC DataSource or driver (e.g., classes12.isc.zip) and Introscope-enable the JDBC DataSource or driver in this copy. This new file will be located in the same directory as the original. 10 When the Finished screen appears, click Exit. 11 In your JDBC driver directory you should find the file containing the Introscopeenabled JDBC DataSource or driver. To use this file to see the JDBC Metrics in Introscope you can either:
set the original file aside and rename the Introscope-enabled one, as in the
following example:
Introscope-enabled file.
CA Wily Introscope
Note If other applications use this same JDBC DataSource or driver file, you will need to put the Agent.jar (located in <WebLogic home>\wily) in the classpath for those applications. Otherwise, applications that reference the JDBC DataSource will fail at runtime. 12 Restart your application server to see the JDBC Metrics.
A connection is opened when a Drivers connect() method is invoked, and closed when the Connection returned by the above connect() invocation is closed via the close() method. If more than one Introscope-enabled driver class is used in a JVM, this is the global number of open connections across all drivers.
Average Result Processing Time (ms)The average processing time of a
query. This metric represents the average time spent processing a ResultSet from the end of the executeQuery() call to the invocation of the ResultSet's close() method. The following are metrics produced by the SQL Agent. You may also see additional metrics attributed to specific driver classes. Note Introscope-enabled XADataSources may not report commit or rollback metrics. Other Introscope-enabled DataSources may not report commit or rollback metrics unless those metrics contain data. Backends|<backendName>:Average Response Time Backends|<backendName>:Concurrent Invocations Backends|<backendName>:Connection Count Backends|<backendName>:Responses Per Interval Backends|<backendName>:Errors Per Interval Backends|<backendName>:Stall Count Backends|<backendName>|Commits:Average Response Time Backends|<backendName>|Commits:Concurrent Invocations Backends|<backendName>|Commits:Responses Per Interval Backends|<backendName>|Commits:Errors Per Interval Backends|<backendName>|Commits:Stall Count Backends|<backendName>|Rollbacks:Average Response Time Backends|<backendName>|Rollbacks:Concurrent Invocations Backends|<backendName>|Rollbacks:Responses Per Interval Backends|<backendName>|Rollbacks:Errors Per Interval Backends|<backendName>|Rollbacks:Stall Count Backends|<backendName>|SQL|Dynamic|Query|<sql>:Average Response Time Backends|<backendName>|SQL|Dynamic|Query|<sql>:Average Result Processing Time Backends|<backendName>|SQL|Dynamic|Query|<sql>:Concurrent Invocations Backends|<backendName>|SQL|Dynamic|Query|<sql>:Responses Per Interval Backends|<backendName>|SQL|Dynamic|Query|<sql>:Errors Per Interval Backends|<backendName>|SQL|Dynamic|Query|<sql>:Stall Count
CA Wily Introscope
Backends|<backendName>|SQL|Dynamic|Update|<sql>:Average Response Time Backends|<backendName>|SQL|Dynamic|Update|<sql>:Concurrent Invocations Backends|<backendName>|SQL|Dynamic|Update|<sql>:Responses Per Interval Backends|<backendName>|SQL|Dynamic|Update|<sql>:Errors Per Interval Backends|<backendName>|SQL|Dynamic|Update|<sql>:Stall Count Backends|<backendName>|SQL|Prepared|Query|<sql>:Average Response Time Backends|<backendName>|SQL|Prepared|Query|<sql>:Average Result Processing Time Backends|<backendName>|SQL|Prepared|Query|<sql>:Concurrent Invocations Backends|<backendName>|SQL|Prepared|Query|<sql>:Responses Per Interval Backends|<backendName>|SQL|Prepared|Query|<sql>:Errors Per Interval Backends|<backendName>|SQL|Prepared|Query|<sql>:Stall Count Backends|<backendName>|SQL|Prepared|Update|<sql>:Average Response Time Backends|<backendName>|SQL|Prepared|Update|<sql>:Concurrent Invocations Backends|<backendName>|SQL|Prepared|Update|<sql>:Responses Per Interval Backends|<backendName>|SQL|Prepared|Update|<sql>:Errors Per Interval Backends|<backendName>|SQL|Prepared|Update|<sql>:Stall Count Backends|<backendName>|SQL|Stored Response Time Backends|<backendName>|SQL|Stored Invocations Backends|<backendName>|SQL|Stored Per Interval Backends|<backendName>|SQL|Stored Interval Backends|<backendName>|SQL|Stored Procedures|Query|<sql>:Average Procedures|Query|<sql>:Concurrent Procedures|Query|<sql>:Responses Procedures|Query|<sql>:Errors Per Procedures|Query|<sql>:Stall Count
SECTION
16
This chapter contains information about enabling the Agent to report JMX data. Introscope Java Agent JMX support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 142 143 144 145 147
Default JMX Metric conversion process . Managing Metric volume with JMX filters Configuring JMX reporting . . . . . . . Enabling JSR-77 data for WAS 6.x
CA Wily Introscope
<Domain>|<Host>|<Process>|<Agent>|JMX|
configuration
DomainRuntimeServiceMBean: domain-wide runtime metrics EditServiceMBean: allows user to edit persistent configuration
Introscope polls only the RuntimeServiceMBean, because it is the only one that supports local access (an efficiency issue), and because it contains most of the data expected to be relevant.
conversion to streamline JMX Metrics below. Note: If you specify primary keys that no MBeans match, Introscope will use the default conversion method. In the default conversion method, Introscope displays both the name and the value of the attribute, and lists the pairs alphabetically in the metric tree.
For example, given an WebLogic MBean with these characteristics: Domain name
WebLogic
Key/Value Pairs
category=server, type=jdbc
Metric Names
connections
<Domain>|<Host>|<Process>|<Agent>|JMX|Weblogic|category=server|t ype=jdbc:connections
Note that the key/value pairs are displayed alphabetically in the Introscope metric.
CA Wily Introscope
For example, given a WebLogic MBean with these characteristics: Domain name
WebLogic
JMX Attribute
connections
If you configure:
introscope.agent.jmx.name.primarykeys=type,category
The connections attribute appears in the Investigator tree in this structure:
<IntroscopeDomain>|<Host>|<Process>|<Agent>|JMX|Weblogic|jdbc|se rver:connections
Note WebLogic 9.0 does not have universally available primary keys, so for WebLogic 9.0 Introscope uses the key/value pair metric naming convention found in the Default Conversion Method described in Default JMX Metric conversion process on page 142. As a result, the JMX Metric tree for WebLogic 9.0 will have a different structure than the metric tree for other WebLogic versions.
*SuperDomain*|host-name|Process|Agent-name|JMX|comp-1| JMSDestinationRuntime|comp-2:MessagesCurrentCount
define introscope.agent.jmx.name.filter in the Agent profile as:
JMX|comp-1|JMSDestinationRuntime|comp-2:MessagesCurrentCount
Do this 1 Shut down the managed application if it is running. 2 For WebSphere Agents only, in IntroscopeAgent.profile set
introscope.agent.jmx.enable to true. (The default value is false in the WebSphere Agent profile.)
CA Wily Introscope
To
Do this
Define primary 1 In IntroscopeAgent.profile, configure primary keys. keys for JMX For WebLogic 9.0, comment out: data introscope.agent.jmx.primarykeys conversion For other WebLogic versions, uncomment: introscope.agent.jmx.primarykeys For WebSphere 6.0, uncomment: introscope.agent.jmx.name.primarykeys=J2EEServer, Application, j2eeType,JDBCProvider,name,mbeanIdentifier 2 If you modify the value of the property, values must be casesensitive, and multiple keys must be separated by commas. 3 Continue to the next step, Define JMX filters. Define JMX filters
introscope.agent.jmx.name.filter property is
2 Enter desired strings, separated by commas, in the property.
In order for Introscope to properly match filtered strings, the strings must be spelled exactly and case sensitive 3 Save changes. 4 Restart the managed application. uncommented.
To enable JMX data, you must configure an Introscope startup class in WebLogic Server, or a custom service in WebSphere. For instructions, see Configuring startup class for WebLogic 8.1 or 9.0 on page 112.
Add If you use WebSphere 5.0.x, add these lines to the <WebSphere permissions to home>/properties/server.policy file: Java 2 security // permissions for Introscope JMX support policy grant codeBase "file:${was.install.root}/-" { (WebSphere permission com.tivoli.jmx.MBeanServerPermission "*"; 5.0.x) permission com.tivoli.jmx.MBeanPermission "*"; permission com.tivoli.jmx.AllMBeanPermission "*"; };
introscope.agent.jmx.enable=true
4 In the Agent profile, enable JSR-77 by setting:
introscope.agent.jmx.name.jsr77.disable=false
5 Configure the primary keys method of metric conversion by uncommenting this property in the Agent profile:
introscope.agent.jmx.name.primaryKeys=J2EEServer,Application, j2eeType,JDBCProvider,name,mbeanIdentifier
Note Only the Agent profile provided with Introscope for WebSphere contains this property definition. For more information see Using primary key conversion to streamline JMX Metrics on page 143. 6 To specify the JSR-77 Metrics to report, uncomment and set this property to identify desired metrics:
introscope.agent.jmx.name.filter
Although filtering is not required, it is highly recommended. For more information see Managing Metric volume with JMX filters on page 144. 7 To specify specific Mbean attributes to exclude in JSR-77 metrics, uncomment this property, and update as desired to exclude additional attributes:
introscope.agent.jmx.ignore.attributes=server
CA Wily Introscope
SECTION
17
This chapter has instructions for configuring Introscope Platform Monitors. Understanding platform monitors . Enabling platform monitors on AIX Disabling platform monitors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 150 150 151 152
CA Wily Introscope
of all processors this process is using. Regardless of how many processors there are, this metric generates only one number.
Utilization % (aggregate) - for this processor, its total utilization (as a
percentage) by all processes in the system. Each processor is shown as a Resource in the Investigator tree.
http://www.ibm.com/support/docview.wss?uid=isg1IY30022
AIX 4.3.3 and higher: A Perfstat Library has been created to work with AIX
bos.perf.libperfstat bos.perf.perfstat
AIX 4: Bring your system up to 4.3.3 and then install the above packages.
Note Restart your machine to ensure the patches have taken effect.
wily/ext/introscopeRedHatStats.jar wily/ext/libIntroscopeRedHatStats.so
CA Wily Introscope
3 Restart the managed application. On Windows platforms, the Java Agent logfile will sometimes contain an error similar to the following:
11/28/06 08:29:55 AM PST [ERROR] [IntroscopeAgent] An error occurred polling for platform data
If the error is infrequent, it is likely caused by a transient error originating from Windows itself, and is harmless. On platforms other than Windows, or in the case that the error happens all the time, this error indicates something more serious and should be reported to CA support for Introscope.
SECTION
18
This chapter has instructions for configuring the Introscope Agent to report WebSphere PMI metrics. Agent support for WebSphere PMI Enabling PMI in WebSphere . . . Configuring PMI in Introscope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 154 156 157
CA Wily Introscope
To enable PMI in WebSphere 4.0 (Distributed) 1 Open the WebSphere Administrative Console. 2 Select the server you'd like to configure.
4 Select Performance Monitoring Settings in the list, then click Edit Properties.
5 Check the checkbox for Enable performance counter monitoring. The Counter Settings section will become available. 6 Click a category under the Performance tree, and click a radio button to select a monitoring level. Note A low level usually collects just enough data without creating a lot of system overhead. 7 Repeat to set monitoring levels for each desired metric category. 8 Click OK. 9 On the Services Tab, click Apply. To enable PMI information, you will also need to configure a Custom Service in WebSphere. See Agent support for WebSphere PMI on page 154.
CA Wily Introscope
4 Introscope can report data from the following high-level PMI metric categories. These categories are represented by commented-out properties under the WebSphere PMI Configuration heading. Four categoriesthreadPool, servletSessions, connectionPool, and j2care set to true by default. WebSphere 4.0 PMI Categories
introscope.agent.pmi.enable.threadPool=true introscope.agent.pmi.enable.servletSessions=true introscope.agent.pmi.enable.connectionPool=true introscope.agent.pmi.enable.j2c=true introscope.agent.pmi.enable.bean=false introscope.agent.pmi.enable.transaction=false introscope.agent.pmi.enable.webApp=false introscope.agent.pmi.enable.jvmRuntime=false introscope.agent.pmi.enable.jvmpi=false JVMPI must be turned on in WebSphere.
5 For each high level metric category you want to report, enter a value of true. 6 Save the changes. 7 Restart the managed application.
<Domain>|<Host>|<Process>|<Agent>|WebSpherePMI
CA Wily Introscope
SECTION
19
This chapter has instructions for configuring the Introscope Agent to report WebLogic Diagnostic Framework (WLDF) metrics. Agent support for WebLogic Diagnostic Framework (WLDF) Understanding WLDF Metric conversion . Enabling WLDF reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 160 161
CA Wily Introscope
For example, this table shows the information for the BYTECOUNT Column from the HTTPAccessLog Data Accessor: Domain name
WebLogic
Key/Value pairs
Name=HTTPAccessLog, Type=WLDFDataAccessRuntime=Accessor, WLDFRuntime=WLDFRuntime
Metric names
BYTECOUNT
The Data Accessor information in the table above would be converted to the following Introscope metric:
<Domain>|<Host>|<Process>|<Agent>|WLDF|Weblogic|Name=HTTPAccessLog |Type=WLDFDataAccessRuntime=Accessor|WLDFRuntime=WLDFRuntime:BYTECOUNT
Note that the key/value pairs are displayed alphabetically in the Introscope metric.
CA Wily Introscope
SECTION
CA Wily Introscope
JDBC Drivers, DataSources, and Introscope and SQL Agent Metrics Setting Database Properties (JDBC Driver Configuration) for the Enterprise
Manager
Introscope 5.0.2 Documentation Set Introscope 7.1 Documentation Set Introscope 6.0 Documentation Set
SECTION
Agent Properties
This appendix documents the properties in the IntroscopeAgent.profile. This section includes these topics: Configuring IntroscopeAgent.profile location . Agent naming properties Wily CEM integration . . Agent failover properties Error Detector properties Extensions properties JMX properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 167 169 169 169 169 170 170 172 173 174 175 176 177 177 177 177 178 178 180 182 183 183
Platform monitoring properties WebSphere PMI properties . Socket metrics properties . SQL Agent properties. . . . . . . . . Stall metrics properties . URL grouping properties. WLDF metrics properties AutoProbe properties . Logging properties Blame properties . . . . . .
Note In these files, on Windows machines, when adding a path, you must escape a backslash (\) with another backslash (each one doubled), such as C:\\Introscope\\lib\\Agent.jar.
CA Wily Introscope
com.wily.introscope.agentProfile
location defined in com.wily.introscope.agentResource <working directory>/wily directory
To locate the Agent profile in a location other than the <AppServerHome>/wily directory: 1 Define the new location using one of these methods:
define a system property on the Java command line with the -D option to
com.wily.introscope.agentProfile
Make the Agent profile (IntroscopeAgent.profile) available in a resource
on the classpath. Set com.wily.introscope.agentResource to specify the path to the resource containing the Agent profile. Note If you use this option, AutoProbe will not be able to write to AutoProbe.log. See Managing the ProbeBuilder Log on page 99. 2 Move your ProbeBuilder directives (.pbd and .pbl files) to the same location as the Agent profilethey are referenced relative to the profile location. 3 For Sun ONE only, add the new location of the Agent profile to the Sun One server.xml file: a To add Introscope information to startup scripts for Sun ONE 7.0, log in as Administrator or Root. b Open the server.xml file, in SunOneHome/domains/domain1/server1/
config/
c Add a line to the jvm-options stanza in server.xml:
<jvm-options> -Dcom.wily.introscope.agentProfile=SunOneHome/wily/ IntroscopeAgent.profile </jvm-options>
IntroscopeAgent.profile
Set to true, and not commented out in Agent profiles shipped with
introscope.agent.agentAutoRenamingIntervalInMinutes
Specifies the time interval in minutes during which the Agent will check to see if it has been renamed. Default: 10
introscope.agent.disableLogFileAutoNaming
Disables automatic naming of an Agents log filesthe default behavior when an Agent is configured for autonaming.
introscope.agent.agentName
Name of Agent. Default:
In the Agent profile provided with application server-specific Agent installers,
CA Wily Introscope
the default reflects the application server, for instance WebLogic Agent.
In the Agent profile provided with default Agent installer, the property value is
introscope.agent.agentNameSystemPropertyKey
Specifies which Java system property will contain Agent name. Default: blank
introscope.agent.clonedAgent
Set to true when running identical copies of an Application on the same machine. Default: false
introscope.agent.customProcessName
Name for process being monitored. Default:
In the Agent profile provided with application server-specific Agent installers,
commented out.
introscope.agent.defaultProcessName
Default name for an Agent if introscope.Agent.customProcessName is not set and the name cannot be inferred from the main class of the application. Default: UnknownProcess; may vary by installer
introscope.agent.disableLogFileAutoNaming
Specifies whether to disable automatic naming of Agent log files when using AutoNaming options. Default: false
introscope.agent.enterprisemanager.failbackRetryIntervalInSeconds
Number of seconds between attempts by Agent to reconnect to primary Enterprise Manager. Default: Commented out; 120
introscope.agent.enterprisemanager.transport.tcp.port.DEFAULT
The port on the Enterprise Manager machine that listens for the Agent. Default: 5001
introscope.agent.enterprisemanager.transport.tcp.socketfactory.DEFAULT
Change this property to use a different client socket factory. Default:
com.wily.isengard.postofficehub.link.net.DefaultSocketFactory
CA Wily Introscope
introscope.agent.errorsnapshots.throttle
The maximum number of error snapshots that the Agent can send in a 15-second period. Note Requires Introscope Error Detector. Default: 10, commented out.
introscope.agent.errorsnapshots.ignore.<index>
This indexed property allows you to specify error messages to ignore. Error snapshots will not be generated or sent for errors with messages matching these filters. You may specify as many as you like (using .0, .1, .2 ...). You may use wildcards (*). The following are examples only. Note Requires Introscope Error Detector. Default: Example definitions are provided, and commented out, as shown below.
#introscope.agent.errorsnapshots.ignore.0=*com.company.HarmlessException* #introscope.agent.errorsnapshots.ignore.1=*HTTP Error Code: 404*
Extensions properties
introscope.agent.extensions.directory
Specifies the location of all extensions to be loaded by the Introscope Agent. Nonabsolute names are resolved relative to the location of this properties file Default: ext
introscope.agent.transactiontracer.parameter.httprequest.parameters
Specifies (in comma-separated list) HTTP request parameter data to capture. Default: The Agent profile contains a commented out statement that sets the value of this property to a null value. The user may optionally uncomment the statement and supply the desired parameter names.
introscope.agent.transactiontracer.parameter.httpsession.attributes
Specifies (in comma-separated list) HTTP session attribute data to capture. Default: The Agent profile contains a commented out statement that sets the value of this property to a null value. The user may optionally uncomment the statement and supply the desired attribute name.
introscope.agent.transactiontracer.userid.key
User-defined key string This property statement is commented out in the Agent profile. Uncomment it and supply the correct value if, in your environment, user IDs are accessed using HttpServletRequest.getHeader or HttpServletRequest.getValue For more information, see
introscope.agent.transactiontracer.userid.method, below.
introscope.agent.transactiontracer.userid.method
Specifies the method that returns User IDs. Allowable values are:
HttpServletRequest.getRemoteUser HttpServletRequest.getHeader HttpServletRequest.getValue
The Agent profile includes a commented out property definition for each of the three allowable values. Uncomment the appropriate statement, based on whether user ID is accessed by getRemoteUser, getHeader, or getValue.
CA Wily Introscope
introscope.agent.transactiontrace.componentCountClamp
Introscope now sets a clamp (set by default to 5,000) to limit the number of traces. When this limit is reached, warnings appear in the log, and the trace stops. The problem was an infinitely expanding transactionfor example when a servlet executes hundreds of object interactions and back-end SQL calls. Transaction Tracer viewed this as one transaction, continuing infinitely. There was an upper limit as the engine did eventually, finish but the JVM would run out of memory beforehand.
JMX properties
introscope.agent.jmx.enable
Enables collection of JMX Metrics. Values are true and false. Default: Varies by Agent version.
introscope.agent.jmx.ignore.attributes
Controls which (if any) JMX MBean attributes are to be ignored. A commaseparated list of desired keywords. If an MBean attribute name matches one in this list then it will be ignored. Leave empty to include all MBean attributes. Default: Commented out; server
introscope.agent.jmx.name.filter
Comma-separated list of filter strings that determine what JMX data Introscope collects and displays. Introscope reports JMX-generated metrics that match the a filter string. Filter strings can contain the asterisk (*) and question mark (?) wildcard characters. * matches zero or more characters ? matches a single character. To match a literal * or ?, escape the character with \\. Examples: ab\\*c matches a metric name that contains ab*c ab*c matches a metric name that contains abc, abxc, abxxc etc. ab?c matches a metric name that contains abxc
ab\\?c matches a metric names that contains ab?c where x is any character. Default:
Commented out. For WebLogic:
introscope.agent.jmx.name.jsr77.disable
ADDED in Introscope 6.1, controls whether or not Introscope collects and reports full JSR77 data, including complex JMX data. To enable JSR 77 reporting, set this property to false, and set introscope. agent.jmx.enable to true. Default: true
introscope.agent.jmx.name.jsr77.enable
REMOVED in Introscope 6.1.
introscope.agent.jmx.name.primarykeys
User-defined order of MBean information, and simplifies name conversion. Default:
Commented out in default IntroscopeAgent.profile file For WebLogic: Type,Name For WebSphere:
J2EEServer,Application,j2eeType,JDBCProvider,name,mbeanIdentif ier
Note Comment out this property if using WebLogic Server 9.0.
LeakHunter properties
introscope.agent.leakhunter.collectAllocationStackTraces
Specifies whether to collect allocation stack trace information. Turning on this option has the potential to create higher system overhead, in CPU usage and memory. Default: false
CA Wily Introscope
introscope.agent.leakhunter.enable
Enables LeakHunter functionality. Default: true
introscope.agent.leakhunter.leakSensitivity
Sensitivity of LeakHunter (higher sensitivity will report more collections as potential leaks). Must be integer value from 1-10. Default: 5
introscope.agent.leakhunter.logfile.append
Specifies whether to replace log file (value of false) or append to existing log file (value of true) on application restart. Default: false
introscope.agent.leakhunter.logfile.location
Location of LeakHunter.log file. Filename is relative to the directory that contains the agent profile. If property is commented out or left blank, no log file will be written. Default: LeakHunter.log
introscope.agent.leakhunter.timeoutInMinutes
Period (in minutes) during which Introscope LeakHunter looks for new potential leaks. Must be non-negative integer. Value of zero means no timeout. Default: 120 minutes
introscope.agent.pmi.enable.bean
Enables collection of PMI bean data. Default: false
introscope.agent.pmi.enable.cache
WebSphere 5.0.x only; enables collection of data about the effectiveness of WebSphere caching layers. Default: false
introscope.agent.pmi.enable.connectionPool
Enables collection of PMI connectionPool data. Default: true
introscope.agent.pmi.enable.j2c
WebSphere 5.0.x only; enables collection of J2EE connector data. Default: false
introscope.agent.pmi.enable.jvmpi
Enables collection of PMI jvmpi data. For data to be provided to this module, JVMPI must be turned on in WebSphere. Default: false
introscope.agent.pmi.enable.jvmRuntime
Enables collection of PMI jvm Runtime data. Default: false
introscope.agent.pmi.enable.orbPerf
WebSphere 5.0.x only; enables collection of performance statistics about the embedded Object Request Broker (ORB).
CA Wily Introscope
Default: false
introscope.agent.pmi.enable.servletSessions
Enables collection of PMI servletSessions data. Default: true
introscope.agent.pmi.enable.system
WebSphere 5.0.x only; enables collection of operating system-level data. Default: false
introscope.agent.pmi.enable.threadPool
Enables collection of PMI threadPool data. Default: true
introscope.agent.pmi.enable.transaction
Enables collection of PMI transaction data. Default: false
introscope.agent.pmi.enable.webApp
Enables collection of PMI webApp data. Default: false
introscope.agent.pmi.enable.webServices
WebSphere 5.0.x only; enables collection of SOAP and web services data. Default: false
introscope.agent.pmi.enable.wlm
WebSphere 5.0.x only, enables collection of Workload Management (WLM) data on load balancing and failover of WebSphere applications. Default: false
introscope.agent.sqlagent.sql.maxlength
Limits how much of a SQL statement appears in the Investigator tree for SQL Agent metrics, in bytes. Default: 990 Note Does not appear in Agent profile. To change the value, add the property to the Agent profile.
introscope.agent.stalls.thresholdseconds
Default: 30
introscope.agent.stalls.resolutionseconds
Default: 10
introscope.agent.stalls.enable
Default: true
CA Wily Introscope
introscope.agent.urlgroup.keys
If an URL address belongs to two URL Groups, the order in which you list the keys for the URL Groups in the keys property is important. The URL Group defined by the narrower pattern should precede the URL Group specified by the broader pattern. For example, if the URL Group with key alpha contains a single address, and the URL Group with key beta includes all addresses on the network segment that contains the address in the first URL Group, alpha should precede beta in the keys parameter. Default: default
introscope.agent.urlgroup.group.default.pathprefix
Default: *
introscope.agent.urlgroup.group.default.format
Default: Default
AutoProbe properties
introscope.autoprobe.directivesFile
Specifies Directives files for AutoProbe. For more information, see ProbeBuilder Directives on page 33. Default: varies by installer
introscope.autoprobe.enable
When option is set to false, this option turns off the automatic insertion of Probes into the applications bytecode, it does not turn off the Agent or Agent reporting. Default: true
introscope.autoprobe.logfile
Name and location of AutoProbe log file.
Default: AutoProbe.log
introscope.autoprobe.dynamicinstrument.enabled
Enables dynamic ProbeBuilding for Agents that run under JDK 1.5, and use AutoProbe. Default: false Note For more information about dynamic instrumentation, see Dynamic ProbeBuilding (JVM 1.5) on page 28.
introscope.autoprobe.dynamicinstrument.instrumentList
For Agents that run under JDK 1.5, use AutoProbe, and use dynamic instrumentation, this property specifies one or more sets of classes to include for dynamic instrumentation, in terms of the package prefixes. Specify all or a portion of a package name, starting with the beginning of the package name. Wildcards are not supported. For example:
introscope.autoprobe.dynamicinstrument.instrumentList=com.xyz, com.foo.ejb.session
To enable all classes to be re-transformed, use the string all. Default: no classes are dynamically instrumented. Note For more information about dynamic instrumentation, see Dynamic ProbeBuilding (JVM 1.5) on page 28.
introscope.autoprobe.dynamicinstrument.avoidClassLoaders
For Agents that run under JDK 1.5, use AutoProbe, and use dynamic instrumentation, this property specifies one or more sets of classes to exclude from dynamic instrumentation, in terms of the classloader that loads the classes. Specify a comma-separated list of classloader class names. All classes loaded by the specified classloader(s) will then be excluded from dynamic instrumentation. Use the value System to specify the system classloader. This setting:
introscope.autoprobe.dynamicinstrument.avoidClassLoaders=System,com.bea. ClassLoader,com.mycl.ClassLoader
CA Wily Introscope
com.bea.ClassLoader com.mycl.ClassLoader
Default: None. Note For more information about dynamic instrumentation, see Dynamic ProbeBuilding (JVM 1.5) on page 28.
autoprobe.dynamicinstrument.pollIntervalMinutes
For Agents that run under JDK 1.5, use AutoProbe, and use dynamic instrumentation, this property determines the frequency with which the Agent polls for new and changed PBDs. Default: 1.
introscope.autoprobe.hierarchysupport.enabled
For Agents that run under JDK 1.5, use AutoProbe, and use dynamic instrumentation, you can use this property to enable instrumentation of classes that extend a supertype or interface. Default: False.
introscope.autoprobe.hierarchysupport.runOnceOnly
If you have enabled instrumentation of classes that extend a supertype or interface, you can use this property to control whether the utility that enables the feature runs only once, or at a specified interval. Default: True. Note Logging properties related to dynamic instrumentation are defined in the following section.
Logging properties
log4j.appender.logfile.File
Specifies the name and location of Introscope Agent logfile. Default: IntroscopeAgent.log
log4j.logger.IntroscopeAgent
Amount of logging detail for the Introscope Agent log. Level of detail value can be: INFO or
VERBOSE#com.wily.util.feedback.Log4JSeverityLevel.
Destination value can be console or logfile, or both. Default setting is INFO, console, logfile.
log4j.logger.IntroscopeAgent.inheritance
Controls log level and destination for log messages about classes that require instrumentation. Default. None. To configure logging of classes that have not been instrumented because they extend a supertype or interface set to: INFO, pbdlog Note For information about inheritance class logging see Controlling directive logging on page 31.
log4j.appender.pbdlog.File
Identifies log file for messages about classes that require instrumentation. Default. None. To configure logging of classes that have not been instrumented because they extend a supertype or interface set to: pbdupdate.log
log4j.appender.pbdlog
Specifies package for logging messages about classes that require instrumentation. Default. None. To configure logging of classes that have not been instrumented because they extend a supertype or interface set to
com.wily.introscope.agent.AutoNamingRollingFileAppender
log4j.appender.pbdlog.layout
Specifies rules for logging messages about classes that require instrumentation. Default. None. To configure logging of classes that have not been instrumented because they extend a supertype or interface set to
com.wily.org.apache.log4j.PatternLayout
log4j.appender.pbdlog.layout.ConversionPattern
Specifies rules for logging messages about classes that require instrumentation. Default. None. To configure logging of classes that have not been instrumented because they extend a supertype or interface set to
%d{M/dd/yy hh:mm:ss a z} [%-3p] [%c] %m%n
CA Wily Introscope
log4j.additivity.IntroscopeAgent.inheritance
Causes the direcitves for multiple level inheritance to be logged only in the pbdupdate.log file. Default: True. To configure the logging of multiple level inheritance direcitves in the pbdupdate.log only, add this property to the agent profile and set to false.
Blame properties
introscope.agent.blame.type
Add this property with a value of standard to turn off boundary blame. For information about boundary blame, see the Introscope Workstation User Guide.
for the introscope.enterprisemanager.webserver.port property specified in the IntroscopeEnterpriseManager.properties for the Enterprise Manager to which the Agent will connect. See the Introscope Properties Files section of the Introscope Configuration and Administration Guide for information about introscope.enterprisemanager.webserver.port.
The HTTP tunneling socket factory. Specify this client socket factory:
com.wily.isengard.postofficehub.link.net.HttpTunnelingSocketFactory
introscope.agent.enterprisemanager.transport.http.proxy.host
Specify the proxy server host name.
introscope.agent.enterprisemanager.transport.http.proxy.port
Specify the proxy server port.
introscope.agent.enterprisemanager.transport.http.proxy.username
If the proxy server requires the Agent to authenticate it, specify the username for authentication.
introscope.agent.enterprisemanager.transport.http.proxy.password
If the proxy server requires the Agent to authenticate it, specify the password for authentication
CA Wily Introscope
SECTION
You can use the Wily PBD Generator tool to instrument custom Java class files for use by Wily agents. This section includes these topics: About the Wily PBD Generator . Configuring the PBD Generator Using the PBD Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 186 187
CA Wily Introscope
files automatically and incorporate any changes to the Java source. You configure the PBD Generator by integrating it into an Apache Ant target using the WilyPBDGenerator.jar file, then running it as an Ant Javadoc task.
Determines
the root directory of the Java source tree the directory path of the PBD file that will be output from the tool
This parameter
packagenames doclet path param name="-d"
Determines
a comma-separated list of the Java packages to be examined for instrumentation the path to find the PBD Generator jar file, which contains this tool this must contain the same value as destdir
where:
<valid metric prefix> is any valid Introscope metric prefixa string without
a colon character (:). Pipe characters (|) are acceptable.
<optional tracer name> can be BlamePointTracer, FrontendMarker or BackendMarker. The default is BlamePointTracer if the tracer name is missing.
CA Wily Introscope
I ND E X
Index
A
Agent Basic Implementation 7 cloned Agent naming 92 configuration 5 verbose mode 97 visibility vs. overhead 6 configuring Agent name 18 Custom Process name 18 data collection options 11 JMX and JSR-77 11 Platform Monitoring 11 PMI 11 Socket Metrics 11 SQL Agent 12 Stall Event Reporting 11 Transaction Tracing Behavior 11 URL Groups for Blame Reporting 11 installation packages for application servers 16 installer 16 installer archive 16 logging options 10 name 18 naming options automatic automatically from application server 89 using Java system property 88 using system property key 88 redirecting output to a file 97 resolving Agent naming conflicts 86 Unistall 25 verbose mode 97 virtual 10 Agent failover
Domain/User configuration 108 Agent.jar 8 AIX platform monitors 150 application server installation packages 16 Oracle 10g 13 SAP NetWeaver 13 Sun ONE 12 support 12 WebLogic 12 WebSphere 12 WebSphere on z/OS 12 autonaming 18 AutoProbe 13, 18 Application Server AutoProbe with Oracle 10g 66 with Sun ONE 65 with WebLogic 60 configuring for Sun, IBM, or HP JVM configuring JRockit JVM 24 configuring JVM 19 configuring JVM 5.0 for 25 Create Connector 19 run Connector 19 AutoProbe Connector NetWeaver 04 23 Oracle 10g 24 Other 24 SAP J2EE 6.20 22 SAP J2EE 6.40 23 Sun ONE 23 WebLogic 20 WebSphere 4.0 20 WebSphere 5.0, 5.1, or 6.0 21
19
Index 189
B
backend 41, 42 default 42 BackendMarker 42 blame stack 42 Blame Technology 41 blame tracers 42 boundary blame 41, 42 BRTA 42 bytecode 32
dynamic instrumentation
28, 29
E
EJB 40, 41 subclasses 41 EJBs 34 Enterprise JavaBeans. See EJBs. Enterprise Manager 4, 10, 13, 17 alternate communication channel 18 clustering 13 default communication channel 17 ErrorDetector 6 Extensible Markup Language (XML) 34
C
CEM 12 Integration 12 CEMTracer.jar 8 class hierarchy 30, 35 Classes 43 subclasses 30 multiple levels probed 30 uninstrumented subclasses 30, 31 Combined Counter Tracer 48 Command-Line ProbeBuilder commands 73 configuring other Java applications 72 Common Object Request Broker Architecture 34 configuring agent name 18 JRockit JVM for AutoProbe 24 JVM 5.0 for AutoProbe 25 JVM AutoProbe 19 ProbeBuilder options 18 Sun, IBM, or HP JVM for AutoProbe 19 CORBA 34 Counter Tracer 47 CreateAutoProbeConnector.jar 8 Custom Method Tracers 40 Custom Process name 18 Custom Tracers 43 custom Tracers. See ProbeBuilder Directives Customer Experience Manager. See CEM. CustomTracerExample.pbd 43
F
File Systems 34 FrontendMarker 42 frontends 41, 42 default 42
H
HP configuring AutoProbe for HP Hotspot 1.3 13 19
I
IBM configuring AutoProbe for 19 IBM JVM 13 Identify keywords 40 installation archive packages 16 disk space requirement 14 Installation Archives Application Server Oracle 10g 17 Other 17 SAP NetWeaver 17 Sun ONE 16 WebLogic 16 WebSphere 16 Installation Directories 8 wily Directory 8 wilyxt Directory 8, 9 wilyconnectors Directory 8 Instrumentation
D
directive updates disable 31 Domains 10
190 Index
dynamic update of internal directives 30 multi-level subclass 30 polling 30 instrumentation 28, 30 InstrumentPoints 40 Interitance.jar 8 Interval Counter Tracer 47 Introscope IntroscopeAgent.profile 7, 8, 16, 17 PowerPacks 6 introscope.autoprobe.directivesFile 28 IntroscopeAgent.profile. See Introscope. Introscope-enabled code enabling 13 options 75 switching back to original code 75 Investigator 18
Tag Libraries 34 JSR-77 11 JTA 34 JVM 4, 13, 16 JVM 1.5 28, 29, 30, 60 JVM 5.0 30 configuring for AutoProbe JVM AutoProbe 8, 13
25
L
lax files Introscope ProbeBuilder Wizard.lax LeakHunter 6 log file 30 Log4J Agent settings 97 Logging Options 10 76
J
j2ee.pbd 42 Java 1.5 9, 35 Java 5 JVM 13 Java Database Connectivity. See JDBC. Java Message Service 34 Java Naming and Directory Interface 34 Java Server Pages. See JSP. Java Transaction API 34 Java Virtual Machine. See JVM. Java2 Security Policy on WebSphere 5.0 63, 64, 68 JavaI5DynamicInstrumentation.jar 9 JMS 34 JMX 11 JMX support 142146 configuring 145 enabling 145 JMX filters 144 Metric name conversion default method 142 primary keys method 143 primary keys 143 primary keys, defining 146 JNDI 34 JRockit 13 configuring JVM for 24 JSP DB Tag Libraries 34 IO Tag Libraries 34
M
method 35, 43 methods method signature 48 metrics 35, 41 and URL groups 118
N
Network Sockets 34
O
Oracle 43 databases 43 Oracle 10g 13, 17, 24, 66 10.0.3 66 AutoProbe 66 AutoProbe Connector 24 Oracle JDBC 34 oraclejdbc.pbd 43
P
PBD 28 PBD Generator, configuring and using PBD. See ProbeBuilder Directives. PBL full version 28 typical version 28 platform monitor 150 troubleshooting 152 pre-production environments 6 185
Index 191
private methods 11 ProbeBuilder Command-line ProbeBuilder 72 customizing Directives 33 dynamic for JVM 1.5 28 list files 35 log 99 options 18 ProbeBuilder Directives 8, 18, 28, 33, 34, 35 Agent Initialization 40 applying changes to 57 components tracked 34 components tracked in 34 custom Tracers 43 combining 51 creating 43 examples template 47 exceptions 40 files custom 36, 71 updating Introscope with 56 system 36, 71 keywords 51 action 52 IdentifyClassAs 52 IdentifyCorbaAs 53 IdentifyInheritedAs 53 InstrumentPoint 53 TraceAllMethodsIfInherits 53 TraceAllMethodsOfClass 53 TraceOneMethodOfClass 53 TraceOneMethodWithParameterIfInherits 54 TraceOneMethodWithParametersOfClass 54 TurnOn 54 skip 52 SkipClass 52 SkipPackage 52 Threshold action 55 parameters 55 TraceAllMethodsWithThresholdOfClass 55 TraceOneMethodWithThresholdOfClass 55 Threshold Tracers OverThresholdPerIntervalCounter 56 StalledMethodTracer 56 UnderThresholdPerIntervalCounter
56 modifying 37 EJB subclass tracing 40 Tracer Groups adding classes to 40 Tracer groups turning on or off 39 only defined methods traced 30, 31, 34 parameters 51 Tracer Groups adding classes to 40 turning on or off 40 Tracer groups turning on or off 39 updating probes 56 ProbeBuilder List 28, 35 ProbeBuilder Wizard 7071 ProbeBuilder.jar 9 BasicDirectiveLoader.jar 9 SignedJARDirectiveLoader.jar 9 UnifiedDirectiveLoader.jar 9 ProbeBuilding 16 dynamic ProbeBuilding 29 production environments 6 properties files 165 properties files Introscope ProbeBuilder Wizard.lax 76
R
RedHat platform monitor 150 redirect output Agent 97 re-instrumenting 28 Remote Method Invocation. See RMI.
S
SAP J2EE 6.20 22 AutoProbe Connector 22 SAP J2EE 6.40 23 AutoProbe Connector 23 SAP NetWeaver 13, 17, 23 SAP NetWeaver 04 23 AutoProbe Connector 23 SAP NetWeaver 6.40 23, 58 ServletHeaderDecorator.jar 8 Servlets 34
192 Index
single-metric Tracers 48 Skip directives 28 Skips 40, 43 Socket Metrics 11 SQL Agent 12, 43 SQL Metrics Average Query Roundtrip Time (ms) 139 connection count 138 SQLAgent.jar 9 supported JDBC Drivers 133 SQLAgent.jar 9 sqlagent.pbd 42 Stall Event Reporting 11 Struts 34 subclass hierarchy 32 Sun configuring AutoProbe for 19 Sun ONE 16, 23, 34 AutoProbe Connector 23 SuperDomain 10 Supportability-Agent.jar 9 System Logs 34
Rate Tracer 47 FrontendMarker 42 MethodCPUTimer 45 MethodRateTracer 46 MethodTimer 46 MethodTraceDecrementor 46 MethodTraceIncrementor 46 names 45 PerIntervalCounter 46 switching between full and typical syntax 44 toggle files 37
28
U
UDP 34 URL groups using the URLGrouper 121 URL Groups for Blame Reporting User Datagram Protocol 34
11
V
verbose mode running Agent in Virtual Agent 10 97
T
Threads 34 tracer 35 tracing methods 35 Tracer Group 35 Tracer Groups 28, 30, 40, 41 adding classes to 40 Tracers advanced custom creating 48 advanced single-metric 48 BackendMarker 42 Blame Technology and 48 components 44 ConcurrentInvocationCounter 45 Custom 43 sample file 43 default Tracer Groups 37 DumpStackTraceTracer 46 example template 47 examples 47 Average Tracer 47 Combined Counter Tracer 48 Counter Tracer 47 Interval Counter Tracer 47
W
WebAppSupport.jar 8 WebLogic 16, 20, 34 AutoProbe Connector 20 bootstrap classpath 20 WebSphere 16, 34 Introscope-enabling JDBC DataSource 134 WebSphere 4.0 20 AutoProbe Connector 20 WebSphere 5.0, 5.1, or 6.0 21 AutoProbe Connector 21 Websphere 6.0 62 WebSphere Application Server configuring custom service for 113 disabling automatic Agent naming for 92 PMI data 154156 viewing 157
Index 193