The byte code adapter, also known as Introscope Java Agent, is part of the CA Introscope APM solution and is used in combination with the CA Introscope Enterprise Manager. The Introscope Java Agents and Introscope Enterprise Manager are used in the context of the SAP Solution Manager to collect performance data from Java applications. The main purpose is to collect data from the applications and systems running on Java Virtual Machines (JVMs). The data collected is pushed from the agents to the Introscope Enterprise Manager where it is persisted.
The following picture shows the architecture of the Introscope Java Agents in SAP NetWeaver, but the same Introscope Java Agent is also used to monitor other Java-based SAP systems, for example SAP Mobile Platform and SAP BusinessObjects Enterprise.
Check SAP Note 2909673 for the exact download locations and references to the setup guide.
Note that it is not possible to connect Introscope Java Agents to an Introscope Enterprise Manager with a version lower than the agent's, i.e. do not choose an Introscope Java Agent with higher release than the Enterprise Manager for any Managed System.
The setup procedure is described in the corresponding Introscope setup guide.
When installing the Byte Code Adapter for a Netweaver Java system make sure to check the Diagnostics Agent Wiki.
The configuration of the Introscope Java Agent consists in the following steps:
The configuration of the Introscope Java Agent is stored in the IntroscopeAgent.profile. The main properties configured in this file are as follows:
The Introscope Java Agent instruments the SAP JVM inserting probes (measurement points) on the Java byte codes during their executions. The measurement points are configured by the Directive Files (*.pbd), which are added in the IntroscopeAgent.profile. SAP provides standard Directive Files that should be used depending on the managed system type. The available Directives Files are mentioned in the IntroscopeAgent.profile of each release of Introscope Java Agent (check the section Directives Files of the profile file).
For NetWeaver systems, the configuration of the Auto Probe files is usually done automatically during the Managed System Configuration (activity Byte Code Adapter Installation). For non-NetWeaver systems, the required files are mentioned in the setup guides for each system type. Take care when changing the Auto Probe files configuration, as some Auto Probe files might cause a performance impact.
The Java parameters required to start the Introscope Java Agent are as follows:
|-javaagent:<path to the agent.jar file>||Location of the Agent.jar file|
|-Dcom.wily.introscope.agentProfile=<path to the IntroscopeAgent.profile>||Location of the IntroscopeAgent.profile which holds the agent configuration|
|-Dcom.wily.introscope.agent.agentName=<AgentName>||Defines the name used by the agent to connect to the Enterprise Manager.|
The configuration of the Introscope Java Agent of SAP NetWeaver systems is performed automatically by the activity "Byte Code Adapter Installation" in the step "Finalize Configuration of the Managed System Configuration". This activity extracts the Introscope Java Agent files to the server, configures the IntrosocpeAgent.profile and adds the required Java parameters to the Java server nodes.
The Introscope Java Agent is also used to monitor Java systems that are not based on the SAP NetWeaver platform. The support and the configuration steps of these systems vary depending on the system type. Refer to the configuration guide of each system type in the Maintenance of Product in the System Landscape Wiki.
When the Introscope Java Agents are configured and started for the managed system, the Introscope Java Agent will create log files which will provide runtime information. The Introscope Java Agent log files are:
The location of the log files may vary depending on the configuration and system type, some example are below:
When the automatic setup is used for SAP NetWeaver Java systems (activity Byte Code Adapter Installation), the Introscope Java Agent log files will be available at /usr/sap/DAA/SMDA97/SMDAgent/temp. The IntroscopeAgent.profile will be located in /usr/sap/<AgentSID>/<AgentNo>/SMDAgent/applications.config/com.sap.smd.agent.application.wily/BytecodeAgent/ISAGENT.<Release>/wily/
If the Diagnostics Agents on-the-fly feature is used in the managed system, the flag "Deploy Byte Code Adapter under Managed System Instance(s)" must be selected during the Managed System Configuration. In this case the Introscope Java Agent log files will be located at /usr/sap/<ManagedSID>/<InstanceID>/ByteCodeAdapter/logs.
If the manual installation has been performed, the Introscope Java Agent logs are available by default in the following location \usr\sap\ccms\wily\logs.
Additional logs of interest from SAP Netweaver Java are the following from directory /usr/sap/SID>/<inst>/work of the managed system if it's a Netweaver java node:
The agent version can be determined via one of the following procedures:
If the connection has been established successfully, the following entry is shown in the IntroscopeAgent* .log:
Connected controllable Agent to the Introscope Enterprise Manager at myhostname.domain.com:6001 [...]
Host = "myhostname", Process = "SAP Netweaver", Agent Name = "SMJ_J002_server0", Active = "true".
The above log entry shows the Introscope Enterprise Manager host name and port as well as the host name, the process name and the agent name used by the Introscope Java Agent to report the performance information. This information is useful in order to find the Introscope Java Agent in the Web View or Workstation Investigator. The following picture shows the Introscope Java Agent node in the Introscope Investigator:
If requested by SAP Development increase the log level by adjusting the property log4j.logger.IntroscopeAgent in IntroscopeAgent.profile:
# increased log level:
A restart is not required. Do not forget to reset the value back to INFO after investigating the issue.
If your Managed Java System does not start due to missing Agent.jar or any other issue related to the byte code adapter check SAP Note 2246406 for an emergency work-around to bring your system up again.
If a Java Managed System has been instrumented for CA Introscope via the Java VM parameter -javaagent:/some/path/to/Agent.jar and the file Agent.jar is not accessible by the instrumented Java VM then it fails to start. Possible reasons why the file Agent.jar is not accessible:
In the first case the instructions for uninstalling the Introscope Byte Code Agent were not followed correctly.
You can find those instructions in the Introscope Installation or Setup Guide for your SAP Solution Manager Release.
=> Alphabetical Index => S
=> SAP Solution Manager
=> "your solution manager release"
=> "one of the sections on installations"
=> "respective Wily Introscope guide".
In these guides, please refer to the section titled "Uninstalling Introscope Agents". It is recommended to use the SAP Solution Manager provided mechanism to remove the problematic properties.
In case the Diagnostics Agent was already deleted, it may be necessary to delete the properties by hand. In case of problems please create a ticket at component SV-SMG-DIA-WLY-BCA.
If the Byte Code Adapter does not appear in the Introscope Investigator use this checklist:
For troubleshooting JMX metric collection in the agent you can increase logging of the JMX service by setting these two additional properties:
JMX debug logging
log4j.logger.IntroscopeAgent.JMX\ Service=ALL, logfile
In general polling of particular MBeans will be switched off until the next restart of the Java VM as soon as any exception occurs for polling that MBean. To avoid this you can change the behavior via Netweaver Administrator:
For NetWeaver there is a known problem that reporting of http sessions ("Current Http Sessions") stops reporting. See SAP Note 2067705 for a fix.
The CPU node in the Investigator tree of the byte code instrumentation agent (e.g. Netweaver agent) is populated via a native library, the so-called platform monitor. There are multiple possible reasons why this node might be missing: