Bucky: Open Source Real User Monitoring

Real user monitoring (RUM) is an approach to Web monitoring that aims to capture and analyze all user interaction with a website or client interacting with a server or cloud-based application. As a form of passive monitoring, relying on Web-monitoring services that continuously observe your system in action, tracking availability, functionality, and responsiveness, such as Bucky.

One crucial thing about application development in the pre-deployment phase is making sure that every single aspect of your application runs smoothly straight from the perspective of a site user. Developers may use RUM to test website changes within the production environment, or to anticipate behavioral changes in a website or application beings interact with your application and what the experience is like for users.

By using local agents or small bits of JavaScript to gauge site performance and reliability from the perspective of client apps and browsers, RUM focuses on the direct relationship between site speed and user satisfaction, providing valuable insights into ways you can optimize your application’s components and improve overall performance.

An effective RUM tool can provide a quick visual analysis of basically anything that could go wrong in an application. Specifically, it can quickly determine scenarios like how and when a specific user made it halfway through an e-commerce checkout process and then clicked away to another page, how many users worldwide are being timed out before your homepage loads.

By monitoring every user interaction of a site—including surprising behavior that would otherwise be nearly impossible to predict and test for ahead of time—RUM goes beyond simple up/down availability monitoring, providing end-to-end transaction reporting and analysis that makes it easy to pinpoint where problems are occurring and, therefore, how they might best be resolved.

Passive monitoring can be very helpful in troubleshooting performance problems once they have occurred. Passive monitoring differs from synthetic monitoring with automated web browsers in that it relies on actual inbound and outbound web traffic to take measurements.

Here, we will provide a brief overview of an open source real user monitoring tool: Bucky.

Bucky

Bucky is a client and server that can measure the performance of your web app directly from your users’ browsers. Bucky will retrieve all of this performance data and push it into a time series database system such as Graphite or OpenTSDB. performance data from the client into statsd + graphite, OpenTSDB, or any other stats aggregator of your choice.

It can automatically measure how long your pages take to load, how long AJAX requests take and how long various functions take to run. Most importantly, it’s taking the measurements on actual page loads, so the data has the potential to be much more valuable than in vitro measurements.

Key Features

  • Automatic – Add just one script tag to your page, configure the host, and it just works. Bucky tracks every AJAX request and page load. Bucky can automatically log all ajax requests made by hooking into XMLHttpRequest and doing some transformations on the url to try and create a graphite key from it.
  • Precise – Since Bucky uses the latest performance API, you get access to tons of metrics at sub-millisecond precision to discover how users are experiencing the website.
  • Free, Open-source, and Self-hosted – Bucky works with your existing Graphite or OpenTSDB database, so you control your data.