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:
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.
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:
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:
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:
Geo
You can easily compare the page load times based on country of origin in the Geo area:
Raygun vs. New Relic?
Raygun pulse lines up well to New Relic's Browser Monitoring. The major differences:
- Design aesthetic - Raygun's UI has a high level of polish.
- Session traces - New Relic provides traces on individual sessions, which can be helpful at identifying those really bad, one-off issues.
- User Profiles - Raygun provides detailed user-centric profiles alongside reports on specific URIs.