diff --git a/content/en/monitors/types/real_user_monitoring.md b/content/en/monitors/types/real_user_monitoring.md index 3745fb4f3de..4eee951858a 100644 --- a/content/en/monitors/types/real_user_monitoring.md +++ b/content/en/monitors/types/real_user_monitoring.md @@ -21,7 +21,7 @@ further_reading: ## Overview -Datadog's [Real User Monitoring (RUM)][1] provides real-time visibility into individual user activity for web and mobile applications. It addresses performance tracking, error management, analytics, and support use cases. +Datadog's [Real User Monitoring (RUM)][1] provides real-time visibility into individual user activity for web and mobile applications. It addresses performance tracking, error management, analytics, and support use cases. With [RUM without Limits™][8], you can use metric-based monitors to alert on your full unsampled traffic with 15-month retention. Metric-based monitors support advanced alerting conditions such as anomaly detection. After you enable RUM for your organization, you can create a RUM monitor to alert you when a specific RUM event type exceeds a predefined threshold over a given period of time. @@ -31,36 +31,36 @@ To create a RUM monitor in Datadog, first navigate to [**Monitors** > **New Moni
There is a default limit of 1000 RUM monitors per account. If you are encountering this limit, consider using multi alerts, or Contact Support.
+From there, you can click **New Monitor**, then: + +- **Start with a template**: Datadog provides several pre-built templates for common RUM monitoring scenarios like error rates, performance vitals, or availability checks. Browse the [full template gallery][9] to get started. +- **Build a custom monitor**: Choose from out-of-the-box metrics or custom metrics, then scope to your application, specific pages, or views. + ### Define the search query As you expand your search filters, the graph above the search bar updates. 1. Construct a search query using the same logic as a [RUM Explorer search][3]. -2. Choose to monitor over a RUM event count, [facet][4], or [measure][5]. +2. Choose to monitor over [full traffic metrics or retained events][10]. +3. Choose to monitor over a RUM event count, [facet][4], or [measure][5]. * **Monitor over a RUM event count**: Use the search bar (optional) and do **not** select a facet or measure. Datadog evaluates the number of RUM events over a selected time frame, then compares it to the threshold conditions. * **Monitor over a facet**: If you select a [facet][4], the monitor alerts over the `Unique value count` of the facet. * **Monitor over measure**: If you select a [measure][5], the monitor alerts over the numerical value of the RUM facet (similar to a metric monitor). Select an aggregation type (`min`, `avg`, `sum`, `median`, `pc75`, `pc90`, `pc95`, `pc98`, `pc99`, or `max`). -3. Group RUM events by multiple dimensions (optional): +4. Group RUM events by multiple dimensions (optional): All RUM events matching the query are aggregated into groups based on the value of up to four facets. When there are multiple dimensions, the top values are determined according to the first dimension, then according to the second dimension within the top values of the first dimension, and so on up to the last dimension. The dimensions limit depends on the total number of dimensions: * **1 facet**: 1000 top values * **2 facets**: 30 top values per facet (at most 900 groups) * **3 facets**: 10 top values per facet (at most 1000 groups) * **4 facets**: 5 top values per facet (at most 625 groups) - - -4. Configure the alerting grouping strategy (optional). - * **Simple-Alert**: Simple alerts aggregate over all reporting sources. You receive one alert when the aggregated value meets the set conditions. If the query has a `group by` and you select **Simple-Alert**, you get one alert when one or multiple groups values breach the threshold. You may use this strategy to reduce notification noise. - * **Multi Alert**: Multiple alerts apply the alert to each source according to your group parameters. An alerting event is generated for each group that meets the set conditions. For example, you can group a query by `@browser.name` to receive a separate alert for each browser when the number of errors is high. - - {{< img src="monitors/monitor_types/rum/define-the-search-query.png" alt="Define the search query" style="width:80%;" >}} - -5. Add multiple queries and apply formulas and functions (optional): +6. Add multiple queries and apply formulas and functions (optional): * **Multiple queries**: Click **Add Query** to analyze multiple different sets of RUM data in relation to each other. * **Formulas and functions**: After adding your desired queries, click the **Add Function** icon to add a mathematical computation. The example below calculates the error rate on a cart page using the formula `(a/b)*100`. - {{< img src="monitors/monitor_types/rum/rum_multiple_queries_2.png" alt="A monitor configured to alert on the error rate of a cart page. This monitor has two queries (a and b) and contains a formula: (a/b)*100." style="width:80%;" >}} + {{< img src="monitors/monitor_types/rum/rum_multiple_queries_3.png" alt="A monitor configured to alert on the error rate of a cart page. This monitor has two queries (a and b) and contains a formula: (a/b)*100." style="width:80%;" >}} + + Optionally, you can add a [custom schedule][12] to set a specific evaluation time and control the evaluation frequency of your monitor. ### Set alert conditions @@ -77,15 +77,15 @@ To receive a notification when an application has stopped sending RUM events, se When splitting the monitor by any dimension (tag or facet) and using a `below` condition, the alert is triggered **if and only if** there are RUM events for a given group, and the count is below the threshold—or if there are no RUM events for **all** of the groups. -#### Alerting Examples +#### Alerting examples For example, this monitor triggers if and only if there are no RUM events for all applications: - {{< img src="monitors/monitor_types/rum/rum_monitoring_by_application_id.png" alt="The monitor configuration page with the search query left blank, set to the count of all RUM events and grouped by @application.id over the last 5 minutes. The Set alert conditions section is configured to trigger when the value is below the threshold of 1, and if data is missing for more than 5 minutes it is configured to evaluate as zero" style="width:70%;" >}} + {{< img src="monitors/monitor_types/rum/rum_monitoring_by_application_id-1.png" alt="The monitor configuration page with the search query left blank, set to the count of all RUM events and grouped by @application.id over the last 5 minutes. The Set alert conditions section is configured to trigger when the value is below the threshold of 1, and if data is missing for more than 5 minutes it is configured to evaluate as zero" style="width:70%;" >}} And this monitor triggers if there are no logs for the application `Shop.ist`: - {{< img src="monitors/monitor_types/rum/rum_monitoring_by_shopist.png" alt="The monitor configuration page with Application Id:Shopist entered in the search query, set to the count of all RUM events matching that application over the last 5 minutes. The Set alert conditions section is configured to trigger when the value is below the threshold of 1, and if data is missing for more than 5 minutes it is configured to evaluate as zero" style="width:70%;" >}} + {{< img src="monitors/monitor_types/rum/rum_monitoring_by_shopist-1.png" alt="The monitor configuration page with Application Id:Shopist entered in the search query, set to the count of all RUM events matching that application over the last 5 minutes. The Set alert conditions section is configured to trigger when the value is below the threshold of 1, and if data is missing for more than 5 minutes it is configured to evaluate as zero" style="width:70%;" >}} #### Advanced alert conditions @@ -95,7 +95,11 @@ For more information about advanced alert options such as evaluation delay, see For more information about the **Configure notifications and automations** section, see [Notifications][7]. -## Further Reading +### Permissions and audit notifications + +For more information about the **Define permissions and audit notifications** section, see [Permissions][11]. + +## Further reading {{< partial name="whats-next/whats-next.html" >}} @@ -106,3 +110,8 @@ For more information about the **Configure notifications and automations** secti [5]: /real_user_monitoring/explorer/?tab=measures#setup-facets-measures [6]: /monitors/configuration/#advanced-alert-conditions [7]: /monitors/notify/ +[8]: /real_user_monitoring/rum_without_limits +[9]: https://app.datadoghq.com/monitors/templates?q=real%20user%20monitoring&origination=installed&p=1 +[10]: /real_user_monitoring/guide/alerting-with-rum/#choosing-between-monitoring-metrics-and-events +[11]: /monitors/configuration/?tab=evaluateddata#permissions +[12]: /monitors/guide/custom_schedules/?tab=day \ No newline at end of file diff --git a/content/en/real_user_monitoring/guide/alerting-with-rum.md b/content/en/real_user_monitoring/guide/alerting-with-rum.md index 9301d55dbcc..9f64d9ab51f 100644 --- a/content/en/real_user_monitoring/guide/alerting-with-rum.md +++ b/content/en/real_user_monitoring/guide/alerting-with-rum.md @@ -1,6 +1,5 @@ --- title: Alerting With RUM Data - description: Guide for creating alerts on RUM events. further_reading: - link: '/real_user_monitoring/platform/dashboards/' @@ -16,75 +15,86 @@ further_reading: ## Overview -Real User Monitoring allows you to create alerts which notify you about atypical behavior in your applications. You can create RUM monitors with complex conditions, predefined thresholds, and multiple queries to calculate averages, ratios, and performance indicator metrics (such as Apdex). +Real User Monitoring (RUM) lets you create alerts about atypical behavior in your applications. With [RUM without Limits™][1], use metric-based monitors to alert on your full unsampled traffic with 15-month retention. Metric-based monitors support advanced alerting conditions such as anomaly detection. -## Define your search query +## Create a RUM monitor -To create a RUM monitor, see the [RUM Monitor documentation][1] first. You can add one or many queries to filter through your RUM data in the [RUM Explorer][2]. For each query, you can scope it on an application level or a more granular level like a specific page. +To create a RUM monitor in Datadog, first navigate to [Monitors > New Monitor > Real User Monitoring][2]. -You can use any facets that RUM collects, including [custom facets and measures][3]. Use the `measure by` field to measure view-related counts such as load time, time spent, and error count. +From there, you can click **New Monitor**, then: -{{< img src="real_user_monitoring/guide/alerting-with-rum/high-rum-views-errors.png" alt="Search query for an alert where a view exceeds more than eight errors" style="width:100%;">}} +- **[Start with a template][3]**: Datadog provides several pre-built templates for common RUM monitoring scenarios like error rates, performance vitals, or availability checks. Browse the [full template gallery][3] to get started. +- **Build a custom monitor**: Choose from out-of-the-box metrics or custom metrics, then scope to your application, specific pages, or views. -The example above is a search query for a RUM monitor configured for views on the Shopist iOS application with facets such as `Application ID` and `View Path`. This example monitor alerts when a view has a high amount of errors (for example, more than 8). +Learn more about [creating RUM Monitors][4]. -## Export your query to a monitor +## Choosing between monitoring metrics and events -You can export search queries from the [RUM Explorer][2] to a monitor to retain all the context for the query. +Choose what to monitor based on your use case: -{{< img src="real_user_monitoring/guide/alerting-with-rum/export-to-monitor-3.mp4" alt="Export button to the right hand corner of the RUM Explorer" video="true" style="width:100%;" >}} +- **Full traffic metrics** - Best for monitoring availability, loading times, error rates, and user experience trends. For RUM without Limits™ customers, metric-based monitors provide full unsampled traffic visibility (before retention filters apply), 15-month retention, and advanced capabilities like anomaly detection and forecasts. +- **Retained events** - Best for detecting critical, low-frequency issues that require full event context. Use event-based monitors when you need to alert on indexed data or specific attributes not available as metrics. Configure retention filters to ensure the relevant data is captured. -The example above is a search query for a RUM monitor configured for images that are larger than 1Mb. Large images may reduce your application's performance. -Click the **Export** button to export your search query to a pre-configured RUM monitor. For more information, see [Export RUM Events][4]. + To create an event-based monitor, you can export search queries from the [RUM Explorer][5]. Use any facets that RUM collects, including [custom facets and measures][6], and the `measure by` field for view-related counts like load time and error count. -## Route your alert +## Export queries from the RUM homepage -Once you have created an alert, route the alert to an individual or a team channel by writing a message and sending a test notification. For more information, see [Notifications][5]. +You can export existing queries from the [RUM homepage][12] to create a monitor with all the query and context preserved. For customers on [RUM without Limits™][1], the queries powering up those widgets are based on the [out-of-the-box metrics][13]. For customers on the legacy model, they are based on [events][14]. -## Alerting examples +{{< img src="real_user_monitoring/guide/alerting-with-rum/create-monitor-homepage.png" alt="Export button to the right hand corner of the RUM Explorer" style="width:100%;" >}} -The following examples highlight use cases for alerting with your RUM data. +Click the **Export > Create Monitor** button to export a widget to a pre-configured RUM monitor. For more information, see [Export RUM Events][7]. Remember that event-based monitors should be used alongside properly configured retention filters. -### Revenue dips +## Route your alert + +After creating an alert, route it to people or channels by writing a message and sending a test notification. For more information, see [Notifications][8]. + +## Alerting examples -With RUM's [global context][6], you can enrich your RUM events with business-specific attributes such as the purchase amount for each user. +The following examples highlight common use cases for RUM monitors. For RUM without Limits customers, these scenarios can be implemented using metric-based monitors for visibility into your full traffic and advanced alerting capabilities. -Assuming that most users of the example application spend between $800 to $1000, this example shows a RUM monitor configured to spot deviations in users' spending patterns week by week. +### Traffic monitoring with anomaly detection -{{< img src="real_user_monitoring/guide/alerting-with-rum/revenue-dips-example-monitor.png" alt="RUM Monitor for revenue dips" style="width:100%;" >}} +Session count monitoring helps teams detect unusual traffic patterns that could indicate issues or opportunities. Unlike threshold-based alerts, anomaly detection automatically learns normal traffic patterns and alerts when behavior deviates significantly. -To compare this week's spending to last week's spending, add a function such as `week_before` next to the `roll up every` field. You can also apply the absolute value to calculate the difference in purchasing amount from last week to this week. When the week-over-week difference exceeds $50, the alert sends a notification. +This example shows a RUM monitor using anomaly detection to track session counts over time. The monitor can be scoped to a specific application or service to detect unexpected drops or spikes in user traffic. Anomaly detection is particularly useful for traffic monitoring because it adapts to daily and weekly patterns, reducing false alerts from expected traffic variations. -{{< img src="real_user_monitoring/guide/alerting-with-rum/revenue-dips-example-alerting-conditions.png" alt="Alerting conditions for a RUM monitor about revenue dips" style="width:100%;" >}} +{{< img src="real_user_monitoring/guide/alerting-with-rum/traffic-anomaly.png" alt="RUM monitor query showing count of sessions metric summed by application name, with anomaly alert conditions configured to trigger when values deviate from expected patterns" style="width:100%;" >}} -### Error rates +### Crash-free sessions -The ratio of errors to requests allows you to calculate what percentage of requests are resulting in errors. +The crash-free rate helps teams track how often mobile sessions complete without errors. -This example shows a RUM monitor for the error rate of the `/cart` page on a sample Shop.ist application. +This example uses mobile RUM to evaluate application stability across release versions. The monitor is filtered to a specific application (for example, `Shop.ist iOS`) and grouped by `version` to help identify regressions tied to specific releases. The query combines crash-free sessions and total sessions to calculate the crash-free rate as a percentage. -{{< img src="real_user_monitoring/guide/alerting-with-rum/error-rate-example-monitor.png" alt="RUM monitor for error rates" style="width:100%;" >}} +{{< img src="real_user_monitoring/guide/alerting-with-rum/crash-free-sessions.png" alt="Query view showing two RUM metric queries for crash-free and inactive sessions, filtered on the Shop.ist iOS app and grouped by version, combined into a formula to calculate a crash-free rate." style="width:100%;" >}} ### Performance vitals -Real User Monitoring measures, calculates, and scores application performance as [Core Web Vitals][7] and [Mobile Vitals][8]. For example, Largest Contentful Paint (LCP) measures loading performance and is benchmarked at 2.5 seconds when the page starts loading. +Real User Monitoring measures, calculates, and scores application performance as [Core Web Vitals][10] and [Mobile Vitals][11]. For example, Interaction to Next Paint (INP) measures responsiveness by tracking the time from a user interaction to the next paint. A widely used benchmark is 200 milliseconds or less for good responsiveness. -This example shows a RUM monitor for the LCP of the `/cart` page on a sample Shop.ist application. +This example shows a RUM monitor for the INP metric filtered to a specific application (for example, `Shop.ist`) and grouped by `view name` to track performance across different pages. Grouping by view name helps pinpoint which pages have performance issues. -{{< img src="real_user_monitoring/guide/alerting-with-rum/high-largest-contentful-paint-example-monitor.png" alt="RUM monitor for high Largest Contentful Paint" style="width:100%;" >}} +{{< img src="real_user_monitoring/guide/alerting-with-rum/core-web-vital.png" alt="RUM monitor query showing Interaction to Next Paint (INP) metric with p75 aggregation grouped by view name, with threshold alert conditions set for warning and alert levels" style="width:100%;" >}} -This example monitor warns when the LCP takes 2 seconds to load and alerts when the LCP takes longer than 2.5 seconds to load. +This example monitor warns when INP exceeds 200 milliseconds and alerts when INP exceeds 500 milliseconds. With metric-based monitors, you can also use anomaly detection to help identify when performance metrics deviate from normal patterns, or use forecast alerts to predict when thresholds might be breached. -## Further Reading +## Further reading {{< partial name="whats-next/whats-next.html" >}} -[1]: /monitors/types/real_user_monitoring/#create-a-rum-monitor -[2]: https://app.datadoghq.com/rum/explorer -[3]: /real_user_monitoring/guide/send-rum-custom-actions/#create-facets-and-measures-on-attributes -[4]: /real_user_monitoring/explorer/export/ -[5]: /monitors/notify/ -[6]: /real_user_monitoring/application_monitoring/browser/advanced_configuration/?tab=npm#global-context -[7]: /real_user_monitoring/application_monitoring/browser/monitoring_page_performance/#all-performance-metrics -[8]: /real_user_monitoring/android/mobile_vitals/ +[1]: /real_user_monitoring/rum_without_limits +[2]: https://app.datadoghq.com/monitors/create/rum +[3]: https://app.datadoghq.com/monitors/templates?q=real%20user%20monitoring&origination=installed&p=1 +[4]: /monitors/types/real_user_monitoring/#create-a-rum-monitor +[5]: https://app.datadoghq.com/rum/explorer +[6]: /real_user_monitoring/guide/send-rum-custom-actions/#create-facets-and-measures-on-attributes +[7]: /real_user_monitoring/explorer/export/ +[8]: /monitors/notify/ +[9]: /real_user_monitoring/application_monitoring/browser/advanced_configuration/?tab=npm#global-context +[10]: /real_user_monitoring/application_monitoring/browser/monitoring_page_performance/#all-performance-metrics +[11]: /real_user_monitoring/android/mobile_vitals/ +[12]: https://app.datadoghq.com/rum/performance-monitoring +[13]: /real_user_monitoring/rum_without_limits/metrics +[14]: /real_user_monitoring/explorer/events/ \ No newline at end of file diff --git a/static/images/monitors/monitor_types/rum/rum_monitoring_by_application_id-1.png b/static/images/monitors/monitor_types/rum/rum_monitoring_by_application_id-1.png new file mode 100644 index 00000000000..efb24d5aee0 Binary files /dev/null and b/static/images/monitors/monitor_types/rum/rum_monitoring_by_application_id-1.png differ diff --git a/static/images/monitors/monitor_types/rum/rum_monitoring_by_shopist-1.png b/static/images/monitors/monitor_types/rum/rum_monitoring_by_shopist-1.png new file mode 100644 index 00000000000..e62b4fb2f13 Binary files /dev/null and b/static/images/monitors/monitor_types/rum/rum_monitoring_by_shopist-1.png differ diff --git a/static/images/monitors/monitor_types/rum/rum_multiple_queries_3.png b/static/images/monitors/monitor_types/rum/rum_multiple_queries_3.png new file mode 100644 index 00000000000..8c915be577a Binary files /dev/null and b/static/images/monitors/monitor_types/rum/rum_multiple_queries_3.png differ diff --git a/static/images/real_user_monitoring/guide/alerting-with-rum/core-web-vital.png b/static/images/real_user_monitoring/guide/alerting-with-rum/core-web-vital.png new file mode 100644 index 00000000000..04674fcfe92 Binary files /dev/null and b/static/images/real_user_monitoring/guide/alerting-with-rum/core-web-vital.png differ diff --git a/static/images/real_user_monitoring/guide/alerting-with-rum/crash-free-sessions.png b/static/images/real_user_monitoring/guide/alerting-with-rum/crash-free-sessions.png new file mode 100644 index 00000000000..a579c95ff4c Binary files /dev/null and b/static/images/real_user_monitoring/guide/alerting-with-rum/crash-free-sessions.png differ diff --git a/static/images/real_user_monitoring/guide/alerting-with-rum/create-monitor-homepage.png b/static/images/real_user_monitoring/guide/alerting-with-rum/create-monitor-homepage.png new file mode 100644 index 00000000000..c3ca9787d0b Binary files /dev/null and b/static/images/real_user_monitoring/guide/alerting-with-rum/create-monitor-homepage.png differ diff --git a/static/images/real_user_monitoring/guide/alerting-with-rum/monitors_create_metric_change.png b/static/images/real_user_monitoring/guide/alerting-with-rum/monitors_create_metric_change.png new file mode 100644 index 00000000000..47f509f83ef Binary files /dev/null and b/static/images/real_user_monitoring/guide/alerting-with-rum/monitors_create_metric_change.png differ diff --git a/static/images/real_user_monitoring/guide/alerting-with-rum/monitors_create_outlier.png b/static/images/real_user_monitoring/guide/alerting-with-rum/monitors_create_outlier.png new file mode 100644 index 00000000000..94f5c56dd2c Binary files /dev/null and b/static/images/real_user_monitoring/guide/alerting-with-rum/monitors_create_outlier.png differ diff --git a/static/images/real_user_monitoring/guide/alerting-with-rum/traffic-anomaly.png b/static/images/real_user_monitoring/guide/alerting-with-rum/traffic-anomaly.png new file mode 100644 index 00000000000..184e5bdc68c Binary files /dev/null and b/static/images/real_user_monitoring/guide/alerting-with-rum/traffic-anomaly.png differ