I am using 9.5.5 agent on Unix boxes and enabled the dynamic instrumentation on agent side and have the given the access to the user as per the Document
introscope.autoprobe.dynamicinstrument.enabled=true (default: false)
introscope.agent.remoteagentdynamicinstrumentation.enabled=true (default: true)
User is added with the following permission Dynamic_ Instrumentation & Full
and receiving the following error when i use to see the call methods
"Failed to retrieve method Information"
and can see the logs in the debug mode :
IntroscopeAgent.DatabaseQueryDelegate] Initializing Connection manager
9/29/14 09:26:29 AM EDT [INFO] [IntroscopeAgent.Agent] Agent Connection Manager is initializing
9/29/14 09:26:29 AM EDT [ERROR] [IntroscopeAgent.DynamicInstrumentation] Unexpected error in Dynamic Instrumentation Invocation
9/29/14 09:26:36 AM EDT [INFO] [IntroscopeAgent.DatabaseQueryDelegate] Initializing Connection manager
9/29/14 09:26:36 AM EDT [INFO] [IntroscopeAgent.Agent] Agent Connection Manager is initializing
9/29/14 09:26:36 AM EDT [ERROR] [IntroscopeAgent.DynamicInstrumentation] Unexpected error in Dynamic Instrumentation Invocation
9/29/14 09:27:27 AM EDT [INFO] [IntroscopeAgent.DatabaseQueryDelegate] Initializing Connection manager
9/29/14 09:27:27 AM EDT [INFO] [IntroscopeAgent.Agent] Agent Connection Manager is initializing
9/29/14 09:27:27 AM EDT [ERROR] [IntroscopeAgent.DynamicInstrumentation] Unexpected error in Dynamic Instrumentation Invocation
Please let me know if some one also faced the same issue.
Your log snippet contains INFO and ERROR but no DEBUG. There should be an exception with the Unexpected error. Can you please double check and see if there is an exception? If not, please double check that logging is in debug.
Yes enabling Debug should give more information about what error is happening.
Second these two properties are controlling different functionality and work independently
Allows pbd changes to be applied without restart of application Server
Allows workstation driven instrumentation via Transaction Trace session where you can remotely determine additional methods called from probed code and subsequently add instrumentation to them automatically/
If same scenario is working for other users\transactions on same application server then likely it's a runtime issue, i.e required code is not compatible for Remote Dynamic Instrumentation and not much can be done. If it doesn't work at all then it could be a configuration issue on Agent side or application\JRE compatibility issue. On configuration side make sure below is done(from Java Agent Guide):
"CA Introscope® stores a dynamic instrumentation cache on the application server host computer. For dynamic instrumentation to work, the user account which the application server uses to run must have write access to the <Agent_Home> and <Agent_Home>/logs directories on the application server host computer."
There is also a known issue
CA APM does not support Dynamic Instrumentation with JBoss or Tomcat application servers using Java 5 (1.5.x).
If the startup class (WebAppSupport.jar) is configured, Dynamic Instrumentation is automatically disabled on these application servers, even if the introscope.agent.remoteagentdynamicinstrumentation.enabled property is set to true.
If Dynamic Instrumentation is not disabled and the WebAppSupport.jar is not configured, erratic behavior can result while using Tomcat or Jboss with Java 5.
Dynamic instrumentation works on JBoss or Tomcat with Java 6.
Hope it helps.
Thanks for the quick response
Below is the options enabled
# Changes to this property take effect immediately and do not require the managed application to be restarted.
# This property controls both the logging level and the output location.
# To increase the logging level, set the property to:
# log4j.logger.IntroscopeAgent=VERBOSE#com.wily.util.feedback.Log4JSeverityLevel, console, logfile
# To send output to the console only, set the property to:
# log4j.logger.IntroscopeAgent=INFO, console
# To send output to the logfile only, set the property to:
# log4j.logger.IntroscopeAgent=INFO, logfile
log4j.logger.IntroscopeAgent=INFO, DEBUG,console, logfile
# If "logfile" is specified in "log4j.logger.IntroscopeAgent",
# the location of the log file is configured using the
# "log4j.appender.logfile.File" property.
# System properties (Java command line -D options)
# are expanded as part of the file name. For example,
# if Java is started with "-Dmy.property=Server1", then
# is expanded to:
Thanks for the help I need to see the call methods and want to do the instrumentation through Workstation.
I will send you the updated logs.
I think I see what is throwing it off. Below I have placed a strikethrough on INFO. Please remove INFO and save and exit the file. This is a hotconfig property so no restart required. Then wait for the error to pop up and you should see DEBUG logging (this will also include INFO logging as well as DEBUG is a higher level than INFO but includes INFO.)