This chapter details advanced configuration options for QRebel. Please head over to https://zeroturnaround.com/software/qrebel/ for more information about QRebel.
In order to profile distributed applications or microservices, add QRebel Agents to all connected applications.
Keep in mind that there are two methods to collect microservices transactions:
Configuring all applications to share the same name. All traces will be collected into one application view on the dashboard using that name.
Using separate names for all connected applications. Transactions are separately collected and displayed under each separate application. The top level applications will still display all transactions from connected applications.
End-to-end transactions will be highlighted using the icon.
QRebel Agents can be configured to use a customized profiling setup. This is useful for adding requests that would normally not be picked up by QRebel (e.g. desktop applications, non-HTTP requests). To do this:
Edit the file to set up customized entry points. Detailed instructions are contained within.
Save the file in the same location as the QRebel Agent JAR file.
Restart your application.
Multiple applications running in a single container¶
Multiple applications running in a single container can be detected using the following VM argument:
-Dqrebel.app_auto_discovery=true (defaults to
The application name is read form the
<display-name> element of your
web.xml. When not provided, the application’s context root is displayed as the application name in QRebel.
QRebel allows out-of-the-box tracing of some asynchronous tasks running in the background. When e.g. HTTP requests spin out background tasks it’s extremely valuable to gain insight into what happens behind the scenes.
Asynchronous tasks are clearly marked within the trace tree.
is used for the async fork, to show the join point and for the location if async fork and join are in the same branch
Here’s how the visual representation will look like when an async task has been detected and traced:
As seen above, async tasks have a dedicated menu in the main request header. Expanding the menu will give you a list of tasks.
Since by nature async tasks are run in the background, some are lengthy operations. In order to not delay the sending of traces from the QRebel agent to the dashboard too much, we’ve set up a cap time of 30 seconds after which QRebel will stop tracing the async task and send the data without the trace.
The menu gives you a quick overview with links to all async tasks, and it quickly tells you if the cap time was reached.
Fork and join points¶
Typically, asynchronous tasks are forked at one code location and later joined by another. In order to capture that scenario, the execution trace will include a visual representation of both the fork point and the join point. This looks like this:
A fork point will be marked with a link icon within the trace and a link button Go to join to allow navigation to the join location in the trace.