Look good

On Wed, Oct 28, 2015 at 1:58 PM, Udani Weeraratne <[email protected]> wrote:

> Hi,
>
> I am working on a java agent which can be used to monitor different
> activities carried out within DAS. Main concept of java agent is to modify
> bytecode of classes before they load onto JVM (bytecode instrumentation).
> This provide the ability to inject code into classes according to our
> requirement.
>
> Currently we are trying to implement a simple agent, which can monitor
> method calls and parameters passed under a given scenario and publish them
> to a stream in DAS. The architecture of this approach will be as follows.
>
> [image: Inline image 1]
>
>
> We will provide a simple configuration file, where user has to specify the
> class name, method name with signature, parameters to monitor and the
> location to be inserted (using javassist we can insert code at the top, at
> bottom and at a specific line of the method). Then the agent will be
> initialized based on the user requirement and instrument the requested
> methods before respective classes load onto JVM. (Javassist will be the
> library used in the instrumentation process) Once the classes are
> instrumented before the server start running, we will be able to publish
> events containing the intercepted data to a stream in DAS. Using the
> ability to publishing arbitrary fields in DAS, we are trying to provide the
> ability to index and store events with intercepted data. This can be used
> as a profiler to monitor the activities of the server.
>
> Layout of configuration file
>
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
>
> <instrumentationAgent>
>
>     <scenario name="jdbc-monitoring">
>
>         <instrumentingClass name="com.mysql.jdbc.ConnectionImpl">
>
>                <instrumentingMethod name="prepareStatement"
>
>
> signature="(Ljava/lang/String;)Ljava/sql/PreparedStatement;">
>
>                <insertBeforeContent></insertBeforeContent>
>
>                <insertAts>
>
>                    <insertAt lineNo="1">
>
>                            <parameterName key="query">$1</parameterName>
>
>                    </insertAt>
>
>                </insertAts>
>
>                <insertAfterContent></insertAfterContent>
>
>            </instrumentingMethod>
>
>        </instrumentingClass>
>
>        </scenario>
>
> </instrumentationAgent>
>
> This is the overall idea about the java agent we are working on. Hope this
> will be able to add value to the product. Appreciate any suggestions on
> this.
>
>
> Thanks,
>
> Udani
>
> --
> *Udani Weeraratne*
> Software Engineer - Intern
> WSO2 Inc.: www.wso2.com
> lean.enterprise.middleware
>
> Email: [email protected]
> Mobile: +94 775437714
> LinkedIn: *https://lk.linkedin.com/in/udaniweeraratne
> <https://lk.linkedin.com/in/udaniweeraratne>*
> Blog : https://udaniweeraratne.wordpress.com/
>
> _______________________________________________
> Architecture mailing list
> [email protected]
> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>
>


-- 
============================
Srinath Perera, Ph.D.
   http://people.apache.org/~hemapani/
   http://srinathsview.blogspot.com/
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to