Infrastructure Monitoring with InfluxDB | Live Demonstration
Real User Monitoring
Real User Monitoring(RUM) is the process of collecting user data to gain insights into your application’s performance and how it is being used.
Real User Monitoring(RUM) is a technique that is designed to provide valuable insight into the frontend performance of an application. RUM allows developers to make better decisions by delivering insights that can only be gained from seeing how an application is being used in the wild by actual users, not how developers thought an application would be used when designing it.
What is real user monitoring?
When a RUM tool is employed, user behavior in an app is mapped to a series of events that are then turned into metrics and logs that are able to generate an almost unprecedented level of visibility into user activity and sessions.
That way, developers can identify issues that may be causing poor performance with those user sessions right away - giving them the chance to resolve these problems just as quickly so as not to negatively impact the end users themselves.
- One of the reasons why RUM is so helpful comes down to how it allows developers to visualize the user journey end to end in a way that makes it easy for anyone to understand and draw conclusions from.
- Not only that, but you can break things down into metrics separated by country, by the specific type of device someone might be using or even the application itself.
How does real user monitoring work?
RUM is a type of passive monitoring that is employed by many developers around the world. The term “passive” is used here because the technique depends on a series of services that are constantly collecting performance data about a particular application or system in the background.
The overall functionality, coupled with availability and even responsiveness, are just a few of the qualities being assessed.
This is different from another type of web monitoring known as synthetic monitoring, which is more active monitoring. Here, a series of behavioral scripts get executed within a browser to help simulate the experiences that end users are taking as they navigate their way around an application or even a website.
The main difference is that RUM actually collects all of its information directly from the browser or device during individual user sessions. It’s not a “simulated” understanding of what is going on - it’s reporting on actual experiences and giving a complete picture.
It does this via Javascript that is embedded in the app or on each page on a website. That script collects crucial information from the end user perspective, all of which is then transferred back to the developers for analytical purposes.
Because Real User Monitoring is collecting aggregate data from such a high volume of users, data visualization isn’t a recommendation - it’s practically a requirement.
- This is because so much information is being obtained from key metrics that simply tracking it all could quickly prove to be an uphill battle, to say nothing of how difficult it would be to actually derive valuable insight from it.
- That data can then be presented in the form of charts, graphs and more - all to help uncover trends and patterns that likely would have otherwise gone undiscovered.
Key Components of RUM
In this section you will learn about some of the key pieces that are needed to implement a real user monitoring system in your application.
Data Collection
The first step is to implement a way to track user behavior on client devices and on your own backend servers. Data collected for RUM can include information about page load times, user interactions, and errors. The data collected can be used to find performance bottlenecks at critical places in the user journey for your application.
Data storage
Once you have a pipeline of data flowing you need a place to actually store that data. While a general purpose database may be fine for your workload, it might make sense to use a specialized data store for real user monitoring data to increase developer productivity so implementation is easier.
RUM data can generally be considered time series data, so a dedicated time series database makes sense. By using a TSDB your developers will get a lot of built in functionality for handling the lifecycle of your RUM data with things like retention policies, down sampling, and aggregation of data. You will also get better performance on queries when you start analyzing your data.
Data Analysis
Once data has been collected, you need to analyze it to actually generate value for your business. Ideally, a real user monitoring tool should make it easy to generate reports and dashboards so you can visualize the data and identify issues quickly. These tools can be used to track performance over time, compare performance across different user segments, and identify areas where further investigation may be required.
Automation
The final component of most real user monitoring systems is some way to take automated action based on your data and in some cases create forecasts based on your data to act proactively instead of reactively. Some tasks obviously can’t be completely automated but over time with the right tools a number of common problems can be resolved automatically as your RUM system matures.
Some examples:
- Automatic rollbacks: If your user metrics suddenly decline after a new commit is pushed into production you could integrate your RUM system with your CI/CD pipeline and automatically revert changes until you figure out what went wrong.
- Autoscaling: If your RUM system reports users having poor experience due to performance issues you could integrate with your infrastructure provider and automatically scale up resources for your application if the decline is due to hardware utilization.
Real user monitoring use cases and examples
There are a few different ways that RUM can be utilized depending on the use case. One of the most common involves the constant monitoring of an asset like a blog or larger website to see exactly where load times are on the rise and, most importantly, why.
With this level of monitoring, developers are in a better position to notice situations when traffic increases may lead to larger issues like timeouts, for example.
On the application side of things, RUM can be employed to spot issues that only occur periodically. If your application requires users to log in and failures happen during this process, you’ll be able to see exactly why - regardless of how rare those instances happen to be..
In a larger sense, RUM is a great way to identify certain failures that may only exist on one platform or another. If you have a mobile application that has versions available for both the iOS and Android platforms,, they may experience different sets of problems at different times.
Not all of these situations are going to show up during pre-deployment testing, which is why Real User Monitoring is a perfect opportunity to keep an eye on these things moving forward.
- Beyond that, RUM is an ideal way to troubleshoot problems that are actually caused by the launch of the application itself.
- It can be used to narrow down the specific conditions under which issues arise using filters, allowing developers to quickly get to the bottom of whatever happens. In other words, it’s a way to treat the root cause of a problem rather than treating the symptom.
Finally, even non-technical people working within an organization can use the dashboards made available in RUM tools to understand exactly what is going on and which issues are impacting performance. The view of how users interact with an application through an entire session can be very valuable for product managers creating new features or marketing and sales to emphasize features that users are finding extremely valuable.
Let’s look at a few more concrete examples of how RUM can be used to help a company.
Error tracking
Error tracking is a type of real user monitoring that helps developers identify and diagnose errors within an application or website. It allows developers to quickly identify and fix any issues that may arise, making it easier to maintain a high-quality user experience. This type of monitoring can also help with debugging and troubleshooting, as it can provide insights into how the application is being used and what is causing errors.
Feature tracking
Feature tracking is a type of real user monitoring that helps developers understand how users are using a particular feature or set of features within an application or website.
RUM can be particularly useful when launching new features and tracking engagement and usage trends, as well as potential signs that users are confused. These insights can then be used to improve the app.
In some cases RUM can help you find hidden gems that drive massive amounts of revenue that may not have been apparent. You can use correlations between the data of your highest revenue users and find the actions they took within your app that low revenue users didn’t and then try to structure your app to drive more of those actions.
Security monitoring
Security monitoring is a type of real user monitoring that helps developers protect their applications from malicious threats and also protect users. RUM can be used to identify and address potential vulnerabilities such as security holes or unauthorized access. This type of monitoring can also be used to track suspicious activity, such as attempted logins and data leakage. Anomaly detection can be used against baseline user behavior and automated alerting can then be set up to notify developers or the user themselves.
Benefits of real user monitoring
One of the biggest advantages of Real User Monitoring is that it allows development teams to measure key performance indicators.
- By allowing them to pay close attention to individual visits, and by collecting information as it pertains to actual use cases as opposed to hypothetical scenarios, teams can see exactly what is working about a website or application and - more importantly - what isn’t.
- Over the long-term, this allows them to better identify issues and prioritize what to spend their time on in terms of improvements.
- Many RUM tools even allow development teams to replay user sessions, recreating the exact journey someone went on when interacting with an asset.
RUM is an ideal way to discover problems at both the network level, at the page level (in terms of a website) or application level. Even if an issue isn’t happening frequently, or if it requires a series of rare steps to trigger it, it can still be identified and rise to the surface - once again allowing teams to fix these problems once and for all.
Some other benefits of real user monitoring include:
Increased User Satisfaction
Real user monitoring helps ensure users have a positive experience when using a website or application. Using data from RUM can help drive product development to create new features, eliminate things users don’t like, and find
Easier Debugging
Real user monitoring shines in a world where your app may have users accessing it across the globe from different devices with different operating systems, and a huge number of other potential factors that impact their experience. RUM data can be used to prioritize what to work on by finding issues that will drive the biggest impact.
Real User Monitoring Challenges and Limitations
While real user monitoring does provide a number of benefits like those covered above, like any other tool, it isn’t perfect. In this section we will go over a few potential challenges seen when working with real user monitoring and some general limitations.
Cost
Real user monitoring can be costly, depending on the complexity of the system and the features that are included. It may require an upfront investment in hardware and software, as well as ongoing maintenance costs to maintain the system if you don’t go with a fully managed vendor solution.
Costs can be controlled by only collecting data from a sample of your users, setting a retention policy so data isn’t stored longer than needed, and using tools that are optimized for working with RUM data so that data is stored and processed more efficiently.
Complexity
Depending on the complexity of the system, real user monitoring can be difficult to set up and maintain. Generally some sort of library for collecting data from client devices and your backend services will need to be implemented. Then you will need to figure out how you are going to store and analyze your data.
Complexity can be reduced by using a vendor solution, but the tradeoff will generally be cost.
User Privacy
Real user monitoring systems collect personal data from users which can raise privacy concerns. Depending on the type of data collected, it may be necessary to obtain user consent before collecting the data and in some cases users may not use your application if they highly value online privacy.
You will also need to consider regulations around user data and security for personal information if you are implementing RUM. You don’t want user passwords and other info being stored in plain text in logs or events on your servers.
Accuracy
Real user monitoring data can be prone to errors, as the data is only as accurate as the system itself. This can be the result of the system not being able to capture all user activity due to things like ad blockers being installed or incorrect data being collected due to implementation errors. If you are sampling data from users it’s also possible that you come to an incorrect conclusion due to not getting the full picture of your entire user base.
Data Overload
Another potential issue is that you are simply collecting too much data. For smaller companies this is not only costly in terms of storing and processing that data, but it could also lead to over analyzing things and slow down product development. And with a small number of initial users you may be led in the wrong direction compared to the more general target audience you want to reach long term.
Best practices for real user monitoring
One of the most important parts of the Real User Monitoring process has to do with the data capture itself. Data must be collected from client devices as well as backend servers to get a full picture of how the user is interacting with the application.
Sessionization is also an important process, which is when all collected information is re-gathered into a record that can then be properly analyzed by software-based tools and by the developers themselves. This includes insight into pages and timing information, along with other factors, from each visit that a person makes to the resource in question.
Of course, no RUM tool would be complete without sophisticated anomaly detection capabilities. Here, any behavior that deviates outside of the accepted definition of “normal” is reported on. This includes but is not limited to system issues, situations where response times may be slower than what is expected, navigation issues and any other “malfunction” for the resource being analyzed.
Individual visit reporting is also a must in this context. All of the information that is being collected can then be used to recreate the exact experience that someone had. It allows developers to see precisely what the users saw, painting a far more vivid picture into what went wrong and what needs to be fixed than simple records could alone.
Another part of the RUM process that developers need to lean into has to do with reporting and segmentation. Once a large enough volume of information has been collected, it can be used to get insight into the performance of websites or applications. This is where you can break things down by specific devices or even parts of the world to see what people are experiencing and why issues may be occurring.
Finally, one of the most important best practices for successful RUM has to do with the alerting system that needs to be in place. Whenever a “serious” issue is reported - like a situation where an application goes down entirely - the system will instantly send a message to the people who are in a position to do something about it. This allows a team to take corrective action quickly, thus stopping an issue as quickly as they’re able to.
Real user monitoring tools
There are a number of Real User Monitoring tools available that teams can choose from depending on their needs. If you value ease of implementation and not having to worry about managing a variety of tools you can select various full stack RUM solutions that provide solutions for data collection, analysis, visualization, and reporting out of the box.
On the other hand if you want full control of your RUM setup, want to be able to select the ideal tool for each step of real user monitoring, and want to avoid potential vendor lock-in, there are a variety of open source tools available. In this section we will look at some commonly used open source projects used for real user monitoring.
InfluxDB
InfluxDB is a time series database that is commonly used for real user monitoring, in addition to any other use case where time series data needs to be stored and analyzed at massive scale like IoT, FinTech, network monitoring, observability, and analytics applications. InfluxDB also has built in dashboard and data visualization capabilities to reduce the number of tools you need in your real user monitoring tech stack.
An example of this in the real world is Wayfair using a combination of Telegraf and InfluxDB to collect and store data to perform Real User Monitoring and synthetic monitoring to make sure their infrastructure can handle surges in traffic around the holiday shopping season. They can also use this data to see exactly how changes in website performance impacts business metrics.
Grafana
Grafana is an open source monitoring and visualization tool that can be used as the visualization component for real user monitoring. It allows users to visualize performance data from multiple sources, such as application logs, system metrics, and data sources like InfluxDB. With Grafana, users can quickly identify performance issues and take corrective action. It also offers powerful dashboarding and alerting capabilities, making it an ideal real user monitoring tool.
Prometheus
Prometheus is an open source monitoring and alerting system. It collects and stores metrics data from various sources and provides a query language to analyze and visualize that data. Prometheus is designed to be highly scalable and can be used to monitor large-scale applications and services. It also provides alerting capabilities, making it an ideal tool for real user monitoring.
Kibana
Kibana is another open source data visualization tool similar to Grafana. It can integrate with different data sources but is commonly used with Elasticsearch. Kibana provides a number of features that can be useful as part of your real user monitoring tech stack.
FAQs
Real user monitoring vs application performance monitoring(APM)
Real user monitoring (RUM) and application performance monitoring (APM) are two different approaches to monitoring a software application.
RUM focuses on the end user experience with an application by measuring how long it takes for pages to load, what content is requested most often, how often users encounter errors or timeouts, and more.
APM is a monitoring approach that looks at the underlying components of an application like databases and servers to identify areas of improvement. Example metrics include number of requests per second, average response time, and number of errors per second. APM helps teams to identify technical performance bottlenecks and fix them quickly.
Both RUM and APM are important for ensuring that an application is running at its best. RUM helps to improve the user experience and drive product direction, while APM helps to spot performance issues quickly. Together they provide a comprehensive view of an application’s performance.
Synthetic monitoring vs real user monitoring
Synthetic monitoring and real user monitoring (RUM) are two ways of testing how an app performs under a traffic load. Both of these methods use different strategies that can provide valuable insights into system performance.
Synthetic monitoring works by simulating users via automated scripts. By running tests and reporting back on any latency issues or errors, synthetic monitoring can help detect and identify problems early. It is especially useful for creating baseline performance data that can then be compared to future tests to determine if there are any changes in system performance. It is also useful for testing software performance before it is released into production.
Real user monitoring involves tracking actual web traffic from real users. RUM provides more accurate data because it captures actual user behavior rather than engineers scripts which are based on assumptions of how users will use the applications. RUM can also help identify issues related to users’ interactions with the application, such as slow loading pages or errors caused by certain actions that can’t be detected with synthetic monitoring. In many cases synthetic monitoring can never find some of these errors because the developers creating it would never be able to predict certain user conditions when designing tests.
Synthetic monitoring and real user monitoring can provide important insights into the performance of your website or app. In most cases it makes sense to use both types of monitoring to ensure your software performs as well as possible.
Why is real user monitoring important?
Real user monitoring is important because it gives companies comprehensive insights into how their users interact with their websites, apps, and other services. With this data, businesses can better understand how to improve the performance of their websites and services, as well as make sure their customer experience is optimized.
Real user monitoring also provides metrics that help developers identify and fix issues with their applications before they negatively impact user experience. By having real-time visibility into how users are experiencing their websites, businesses can make proactive changes to ensure a positive customer experience.
Take charge of your operations and lower storage costs by 90%
Get Started for Free Run a Proof of ConceptNo credit card required.