2 Replies Latest reply: Apr 26, 2017 11:35 AM by Joel Butzow RSS

Can AIX v10 Capture Cassandra Statements?

Joel Butzow

Hello,

 

We recently installed AIX v10 on a SOLR node that has an Apache Cassandra back end.  The installation of the agent on SOLR worked fine, and we are capturing data.

 

HOWEVAH, we see the calls to Cassandra, and they look like this:

 

Class

 

org.apache.cassandra.cql3.statements.SelectStatement

 

Method

 

execute

 

 

And then of course we get the method timings and so forth.  It would be a big win if we are able to see the Cassandra statements themselves, rather than just a generic message that solr is executing a select statement against cassandra.

 

Is that something that can be done with v10.6?  Is it on the roadmap for the future?  Can it be?

 

Thanks!
JB

  • Re: Can AIX v10 Capture Cassandra Statements?
    Koundinya Srinivasarao

    Joel Butzow, that is a great suggestion for Peco Karayanev, who oversees AppInternals roadmap and closely monitors this forum.

     

    As far as what is possible with v10.6 ... with a little investigation you may be able to extract and report on the CQL/select statement behind the query. Based on some googling, typical usage of the SelectStatement involves creating it using QueryProcessor.parseStatement() helper method, like so:

     

    selectUserStatement = (SelectStatement) QueryProcessor.parseStatement(query).prepare().statement;


    So what you can do is setup AppInternals to collector the first parameter of the method QueryProcessor.parseStatement -- that should contain the query string. To do so modify the configuration assigned to the JVM querying Cassandra and the following monitoring filter:


    Cassandra.png

     

    Save the filter setting AND remember to scroll all the way to the end of the configuration screen and save the entire configuration -- this is a gotcha as you may not realize there is a save button at the bottom of the screen.

     

    Restart the JVM for the change to take effect. Then exercise the app so that queries are executed. You should then be able to run the following search:

     

    parameter = 'cqlquery=*'

     

    That should return the list of CQL queries [... presuming QueryProcessor.parseStatement was used to create the SelectStatement or CQLStatement].

     

    If that works, you further report on transaction times by cqlQuery using the following:

     

    parameter = 'cqlquery=*' | timeseries -group_by parameter = cqlquery


    The main assumption here is that QueryProcessor.parseStatement() was used to create Statement object. If this is not the case and you have access to source code, you can inspect it and figure the apt method and parameter to capture.


    If that seems a little daunting, I suggest reaching to your friendly neighborhood Riverbed APM Solutions Architect and they can help you. If you do not know who that is, we can follow up offline.