Skip to content
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

'Call Tree' tab only shows top level HTTP request #56

Open
rk-9 opened this issue Oct 17, 2017 · 8 comments
Open

'Call Tree' tab only shows top level HTTP request #56

rk-9 opened this issue Oct 17, 2017 · 8 comments

Comments

@rk-9
Copy link

rk-9 commented Oct 17, 2017

I'm only seeing the initial HTTP GET request even though other methods are called before returning a response.

I believe I have all the jars for tracing included in my classpath, and I haven't touched any of the configuration which I think should be fine since it is enabled by default.

It should be able to do trace all the invoked java methods correct?

@rk-9
Copy link
Author

rk-9 commented Oct 17, 2017

I just tried setting the minimum execution times/percentage to zero. I see that the change got updated in the configuration tab, but the call tree still only shows a single GET.

This is through tomcat by the way, so I'm setting the configuration through setenv.sh file. I see through the browser plugin, that the setenv file is indeed being read and having an impact on configs.

The bytebuddy agent jar is being picked up if I look at the arguments passed to tomcat via "ps"

This is for version 0.84.0

@trampi
Copy link
Member

trampi commented Oct 18, 2017

Hi! Could you post the content of your stagemonitor.properties?

Could you also provide the startup log? It looks like this:

# stagemonitor status
System information: Java 1.8.0_111 (Oracle Corporation) Mac OS X 10.12.6
OK   - Agent attachment 
OK   - AlertingPlugin (version 0.83.0-SNAPSHOT)
OK   - CorePlugin (version 0.83.0-SNAPSHOT)
OK   - EhCachePlugin (version 0.83.0-SNAPSHOT)
FAIL - Elasticsearch (Elasticsearch is not available)
OK   - ElasticsearchTracingPlugin (version 0.83.0-SNAPSHOT)
OK   - JdbcPlugin (version 0.83.0-SNAPSHOT)
OK   - JvmPlugin (version 0.83.0-SNAPSHOT)
OK   - LoggingPlugin (version 0.83.0-SNAPSHOT)
OK   - OsPlugin (version 0.83.0-SNAPSHOT)
OK   - ServletPlugin (version 0.83.0-SNAPSHOT)
OK   - SoapTracingPlugin (version 0.83.0-SNAPSHOT)
OK   - Startup 
OK   - TracingPlugin (version 0.83.0-SNAPSHOT)
# stagemonitor configuration, listing non-default values:
stagemonitor.requestmonitor.http.parseUserAgent: true (source: stagemonitor.properties)
stagemonitor.web.paths.excluded: /resources, /webjars, /dandelion (source: stagemonitor.properties)
stagemonitor.eum.enabled: true (source: stagemonitor.properties)
stagemonitor.reporting.interval.elasticsearch: 10 (source: stagemonitor.properties)
stagemonitor.reporting.elasticsearch.url: http://localhost:9200 (source: stagemonitor.properties)
stagemonitor.instrument.exclude: org.springframework.samples.petclinic.model (source: stagemonitor.properties)
stagemonitor.instrument.include: org.springframework.samples.petclinic (source: stagemonitor.properties)
stagemonitor.grafana.apiKey: XXXX (source: stagemonitor.properties)

@rk-9
Copy link
Author

rk-9 commented Oct 18, 2017

So I'm actually using the java system properties instead of a properties file. I have them as this:

-Dstagemonitor.elasticsearch.url=http://localhost:9200
-Dstagemonitor.grafana.url=http://localhost:3000
-Dstagemonitor.tracing.reporting.log=true
-Dstagemonitor.profiler.minExecutionTimePercent=0
-Dstagemonitor.profiler.minExecutionTimeNanos=0
-Dstagemonitor.grafana.apiKey=xxxxxxx

And those are being read in as far as I can tell:

screen shot 2017-10-18 at 9 39 46 am

I don't have the startup logs, but I will see what I can do

@felixbarny
Copy link
Member

felixbarny commented Oct 18, 2017 via email

@rk-9
Copy link
Author

rk-9 commented Oct 18, 2017

That worked perfectly! Thanks!

So I have a couple of follow-up questions regarding this:

  1. To include multiple projects, can I just use a comma separated list?
    Something like "-Dstagemonitor.instrument.include=com.test.app1,com.test.app2"

  2. Do I have to be verbose with the complete path name? or can I use regex/wildcards to get every class (com.test.*)

@felixbarny
Copy link
Member

felixbarny commented Oct 18, 2017 via email

@rk-9
Copy link
Author

rk-9 commented Oct 18, 2017

Excellent. Thanks again.

@rk-9 rk-9 closed this as completed Oct 18, 2017
@rk-9
Copy link
Author

rk-9 commented Oct 18, 2017

@felixbarny @trampi

Is there a way to just add all the packages in the classpath (excluding the packages that ship with jdk & jre) ?
If my project has like 50 external library jars it uses, tracing currently requires me to add every package in every jar if I want a complete call tree. I think it might be easier if we could just provide a folder where all our libs are contained which would basically mean "include and trace everything found here".

@rk-9 rk-9 reopened this Oct 18, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants