The inspectIT now comes with a new feature: Browser End User Experience Monitoring (EUM). This feature allows you to measure the performance at the browser of the end user, giving more detailed insights than back-end instrumentation alone.
When enabled, your back-end traces are correlated automatically with the corresponding browser traces and presented as a single trace in the views.
In addition, for long-term monitoring the end-user request timings are stored in the influx time-series database connected to the CMR and can be viewed using Grafana Dashboards.
The current implementation of the End User Monitoring only operates on the Java Servlet API, therefore only applications based on this API are supported. The used Servlet Container should not matter, as long as it adheres to the Servlet API standard. Therefore any common Servlet Container (e.g. Apache Tomcat, Glassfish) can be used.
All you need to do is to configure your application to start with the normal inspectIT Java Agent, the EUM-Instrumentation happens fully automatically when configured as described below.
We recommend you to try out the end-user monitoring on your system in a safe environment first before production use.
The configuration of the End User Monitoring is available as a new tab in the Environment settings of the CMR, which is shown below:
To enable EUM, you first have to tick the corresponding Activate checkbox.
The "Relevancy Threshold (ms)" allows you to configure how fine-grained your end user instrumentation should be.
The browser agent instruments all entry and exit points for the selected modules (see below), however it filters which monitored executions are sent back to the CMR.
This filtering is done by the relevancy threshold: Any execution taking at least the specified amount of time will be sent back to the CMR and therefore shown in the tracing view.
Note that for some special executions, for example requests, this value is ignored and the trace is always sent to the CMR.
This means, even if you set this value to be very high, you are still guaranteed to see all requests issued by the browser in inspectIT UI.
The configuration also allows you to globally prevent the browser agent from instrumenting any listeners. This is usually not recommended as it greatly reduces the information value of the traces, therefor you should only disable listener instrumentation if you are experiencing performance issues after enabling the EUM feature.
With the "Deliver Minified JS Agent" checkbox you can choose whether you want to use the minified browser agent or the normal source. The minified version should be preferred for performance reasons, the normal version should only be used for debugging.
|Broswer Meta-Info Capturing||Enables the capturing of meta information for each user session. This information includes the used browser, the used device and the language.|
|AJAX Capturing Module||When enabled, all AJAX requests issued by the webpage will be instrumented and monitored.|
|Listener Instrumentation Module||This module instruments the addListener functions for DOM elements and therefore is able to capture User Actions such as clicks.|
|Speed index Module|
Measures the RUM Speedindex, a metric describing how fast the page is rendered.
Requires the Navigation Timing Module to work.
|Navigation Timings Module||Captures the metrics provided by the HTML Navigation Timings API.|
|Resource Timings Module||Captures the metrics provided by the HTML Resource Timings API.|
Viewing the Results
When EUM is enabled, your shown in the inspectIT UI will start at the browser now.
The screenshot in this section are some example results after enabling EUM for the Spring Pet Clinic Demo Application with all EUM modules enabled.
In addition to the tracing views, you can view the long-term monitoring data stored in influx using the Grafana Dashboards.
The tracing overview will for example look like the following screenshot:
The selected entry corresponds to loading the welcome page in the browser.
The fact that the traces starts at the browser is recognizable through the origin column.
If the EUM does not work even though you configured it as described above, you should look here first as we present the most common problems with their solutions in this section. However, first make sure you have restarted your instrumented Servlet Container, as currently changes to the environment settings are only effective after a restart.
If this section does not solve your problems, feel free to contact us or to fill out a bug report in our JIRA.
Problem: Script does not get injected into the HTML
If everything works properly, the JavaAgent should modify the HTML delivered by your sever injecting tags similar to the one shown below:
These tags should be the first tags to appear within the head section (or body if you don't have a head section).
- If these tags are not present, first double check that EUM is enabled for your JVM which delivers the responses to the end user.
- If the HTML is passed already compressed to the Servlet API output stream, the Agent is not able to do this, therefore try disabling the compression of the responses.
- If the compression is done "on-the-fly" however, e.g. by using a Servlet API Filter to perform the compression, compression should not affect the EUM injection.
This way you can test different settings for "Script Base Url" to find a prefix which works.