What does Plumbr consist of?

Plumbr deployments contain up to three different modules:

  • Browser Agent, capturing the end user experience in the device used by your customers. This is the module you should be installing first.
  • Java Agent, tracing the user interaction through the back-end services. Presence of this Agent also exposes bottlenecks & errors in the backend layer. Installation of this module is optional. You should install this module only if your backend services are running on the Java Virtual Machines.
  • Plumbr Server, responsible of receiving and processing the data collected by the Agents. Server also exposes the UI. We recommend using our SaaS offering as the Server. In this case, the installed Agents would connect to https://app.plumbr.io and serve the user interface also via https://app.plumbr.io.

If you only use the Browser Agent, the deployment model includes injecting our JavaScript Agent as the first script to the <HEAD> section of all the HTML pages in your application. After doing so, the Agent can start listening to the end user interactions in the browser:

Plumbr Browser concept

The data captured is sent to Plumbr Server, which is responsible for assembling all the details about the user interaction and allowing you to run analysis on the data.

In case you are after end-to-end transparency and deploy both the Browser and Java Agents, the user interactions are monitored from the browser to all the JVM-based nodes in the backend:

Plumbr Java and Browser Agent

The Plumbr Java Agent is packaged as a standard -javaagent, and attaching it does not mean you need to make any changes to your application. The only required change involves pinpointing the location of the Agent in the file system by adding -javaagent:/path/to/plumbr.jar to JVM startup scripts.

The Agents located in the monitored nodes pass along the transaction ID as a call metadata via HTTP headers. This way all the nodes servicing the user interaction can be assembled in the Plumbr Server into a single interaction distributed across multiple nodes.