Real User Monitoring with Raygun

Most of a web page's load time is on the front-end. You can monitor the performance of the end-to-end page load time with a Real User Monitoring (RUM) service, and one of the more attractive ones is Raygun Pulse.

Let's take a deep dive.

Installing Raygun Pulse

Installing Pulse is the same, regardless of your web app language and framework: embed the Raygun Javascript on your webpage.

I suggest adding user data so you can easily identify users that are experiencing problems via rg4js('setUser', {...}). If a user reaches out because they are having an issue, your engineering team can more easily reproduce the issue with this information. Pulse also builds an attractive profile of your users - I'll show this below.

Realtime Performance Dashboard

Once you've deployed the Raygun pulse Javascript snippet, you can begin seeing your user activity in realtime:

rt

I find the realtime view most helpful if you've just deployed a significant update. You can immediately see if you've started a fire or if things are (hopefully) running smoothly.

Per-Page Performance

When I'm looking for aggregate data over time, I use the "performance" area of Raygun Pulse. This provides page load time information grouped by URI. Raygun's default aggregation logic is solid, aggregating most of my endpoints correctly. While I wish it was possible to custom name URIs in the Javascript snippet so they would align with my Rails controller-action names, the Raygun logic gets 80% of the way there.

uris

I like how Raygun provides a horizontal barchart breakdown of where the request time is spent. This makes it easier to identify issues at-a-glance that might be impacting multiple URIs.

You can also view data for a specific URI by clicking on a URI in the screenshot above:

detail

One metric category of particular note: "children". This refers to the time required to load all of the initial URI's asynchronous assets (like XHR requests). It helps paint the entire picture of the user-facing page load time for single page apps. These XHR requests are also identified separately at the bottom of the page.

Users

I like how Raygun Pulse treats users as first-class citizens. There is a dedicated "Users" area with Raygun:

users

You can also view details on a specific user. This can help paint the full path of a session, understanding what the user did before and after a problem:

user

Geo

You can easily compare the page load times based on country of origin in the Geo area:

geo

Raygun vs. New Relic?

Raygun pulse lines up well to New Relic's Browser Monitoring. The major differences: