stagemonitor / stagemonitor-mailinglist

GitHub issues abused as a mailing list
3 stars 0 forks source link

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

Open rk-9 opened 6 years ago

rk-9 commented 6 years ago

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 commented 6 years ago

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 commented 6 years ago

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 commented 6 years ago

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 commented 6 years ago

You have to set stagemonitor.instrument.include

rk-9 notifications@github.com schrieb am Mi., 18. Okt. 2017 14:49:

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=eyJrIjoiQzhVZGF5d1Vsc3VIMnpaNUN0ZVNlSTdlSkFHWHFWcnUiLCJuIjoic3RhZ2Vtb25pdG9yIiwiaWQiOjF9

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

[image: screen shot 2017-10-18 at 9 39 46 am] https://user-images.githubusercontent.com/32883029/31721813-67ced640-b3e8-11e7-93e9-5054fccc8e3d.png

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

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/stagemonitor/stagemonitor-mailinglist/issues/56#issuecomment-337596807, or mute the thread https://github.com/notifications/unsubscribe-auth/ACEDCKpi5PiBFTM8Xxif7hr3g0i3VpPGks5stgHagaJpZM4P8v6T .

rk-9 commented 6 years ago

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 commented 6 years ago

1) yes, comma sepatated 2) stagemonitor does prefix matching

rk-9 notifications@github.com schrieb am Mi., 18. Okt. 2017 15:44:

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.*)

— You are receiving this because you commented.

Reply to this email directly, view it on GitHub https://github.com/stagemonitor/stagemonitor-mailinglist/issues/56#issuecomment-337615271, or mute the thread https://github.com/notifications/unsubscribe-auth/ACEDCM7YE6vWcv4U8eqTGmC9zLkXHpLLks5stg7HgaJpZM4P8v6T .

rk-9 commented 6 years ago

Excellent. Thanks again.

rk-9 commented 6 years ago

@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".