-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature request: Listener API to eavesdrop on trace events #12
Comments
Hi eostermueller, Thanks for this feature suggestion (and the other two you raised). I am pleased to see that you are interested in InTrace. Can you give me a bit more background about yourself and these suggestion you have raised? I would be interested to know all of the following.
|
mchr3k wrote:
a) I need to run some tests with an IBM jvm on linux. If I can get those b) If InTrace is monitoring a remote application, it seems that a separate c) The systems we deploy have multiple, identical JVMs that process traffic d) You have support for millisecond response time. I'd really like to Only item a) is a show stopper for me. I need to make sure that is Since this is your code base, perhaps you could propose a design for these So I mentioned these three "plugins" or "implementors":
For plugin 1), I've found two decent libraries we could use to create Gantt The second tool, Simile-Timeline has better scrolling/navigation, but it is In regards to plugin 2). I'm sick of tools that use "averages" to plot For instance, say we had the following response times for 3 requests in a 500ms The average of these numbers is about 233 -- which doesn't some close to Instead, I'd like the graph to somehow show the counts of fast and slow 2 requests faster than 128ms The ranges will need to be configurable, but this gives you the idea. We'd Let me know what you think. --Erik On Mon, Jan 2, 2012 at 2:36 PM, mchr3k <
|
mchr3k, Rats. I'm having problems getting an IBM jdk working with InTrace. http://www.docjar.com/html/api/sun/instrument/InstrumentationImpl.java.html* How much InTrace functionality relies on "retransforming" ? Perhaps removing InTrace support for "on the fly" instrumentation on IBM --Erik Buildfile: build.xml**** init:**** run:****
java.lang.UnsupportedOperationException: cannot get the capability,
sun.instrument.InstrumentationImpl.isRetransformClassesSupported0(Native
sun.instrument.InstrumentationImpl.isRetransformClassesSupported(InstrumentationImpl.java:124)
sun.instrument.InstrumentationImpl.addTransformer(InstrumentationImpl.java:79)
Method)****
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
Method)****
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:335)
sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:350)
java.lang.reflect.InvocationTargetException****
Method)****
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:335)
sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:350)
java.lang.reflect.InvocationTargetException****
Method)****
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
retransformable transformers is not supported in this environment****
sun.instrument.InstrumentationImpl.addTransformer(InstrumentationImpl.java:80)
BUILD SUCCESSFUL**** Total time: 0 seconds On Mon, Jan 2, 2012 at 5:55 PM, Erik Ostermueller
|
The dynamic selection of which classes to trace at runtime depends on retransforming. However, it would be possible to modify InTrace to specify all classes to trace at startup. Without retransforming support it won't be possible to instrument any Java classes which are loaded before InTrace. However, application classes should be possible to instrument.
This sounds like it is necessary for an IBM JDK. This will require code and build changes. I can provide limited amounts of time/support about what changes need to be made. However, InTrace is something which I do in my spare time so I won't be able to promise you much. I wonder if you would be interested in agreeing to a basic contract for me to provide a higher level of time/support for implementing the changes you need. If this is something you want to discuss further then it may be better to do it directly over email. You can contact me at mchr3k at gmail.com. |
Expose a set of interfaces that allows a programmer to write a program (called the Implementor) that receives all InTrace trace events.
The classes java.util.Observable and java.util.Observer could be used as a model for some, but not all, of the interaction between InTrace and an Implementor.
Each Implementor would run in the same JVM as the InTrace GUI.
Some kind of configuration would store class names of all Implementors. -D parameters would be acceptable for a "first attempt." Once InTrace has all the configuration for a single Implementor, that Implementor will be considered "registered"
The interface must allow the InTrace GUI to ask the Implementor for a human-friendly name that will be used for display in the InTrace GUI.
The interface must allow the InTrace GUI to ask the Implementor for an Icon unique for that Implementor. If none is provided, a default (but unique one) will be used.
At GUI startup time, InTrace will ask each registered "Implementor" for a list of
-- classes to be instrumented. Include/exclude functionality should be incorporated.
-- Filters to be used. Include/exclude functionality should be incorporated.
Once the above and any other initialization is complete, InTrace GUI should invoke some kind of "startup" method on each Implementor.
When the end user closes the GUI, InTrace should notify each Implementor of the shutdown request.
Implementor display/output
Each implementor will have its own "section" in the InTrace GUI.
When InTrace UI starts, the end user will need a menu option to open a particular Implementor with a particular host/port.
Example Implementors
Each of these ideas imitates functionality found in commercially offered APM (Application Performance Monitoring) tools, like CompuWare DynaTrace and CA Introscope.
Option 1), above, could be expanded to show the following for each SOA request:
a) input xml
b) response xml
c) all SQL requests made during the request
d) all exceptions thrown during the request.
The text was updated successfully, but these errors were encountered: