-
Notifications
You must be signed in to change notification settings - Fork 1.2k
[DOCS-12352] Feature Monitoring #32329
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
rtrieu
wants to merge
11
commits into
master
Choose a base branch
from
rtrieu/docs-12352-feature-monitoring
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 1 commit
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
b64cd63
[DOCS-12352] Feature Monitoring
rtrieu 56b1da9
Apply suggestions from code review
rtrieu 03879ff
Apply suggestions from code review
rtrieu 93613a0
Apply suggestions from code review
rtrieu 93024a5
updates
rtrieu 9a01944
Merge branch 'rtrieu/docs-12352-feature-monitoring' of github.com:Dat…
rtrieu ab2a497
applying vale rule
rtrieu 80b6375
switcharoo
rtrieu b46af1b
update table description
rtrieu 319627c
Merge branch 'master' into rtrieu/docs-12352-feature-monitoring
rtrieu b5c05ac
image update
rtrieu File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
262 changes: 262 additions & 0 deletions
262
content/en/real_user_monitoring/operations_monitoring.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,262 @@ | ||
| --- | ||
| title: Operations Monitoring | ||
| description: | ||
| private: true | ||
| further_reading: | ||
| - link: '/monitors/create/types/real_user_monitoring/' | ||
| tag: 'Documentation' | ||
| text: 'Learn about RUM' | ||
| --- | ||
|
|
||
| {{< callout url= | ||
| btn_hidden="false" header="Join the Preview!">}} | ||
| Operations Monitoring is in Preview. Use this form to submit your request today. | ||
| {{< /callout >}} | ||
|
|
||
| ## Overview | ||
|
|
||
| {{< img src="/real_user_monitoring/operations_monitoring/operations-monitoring-1-temp.png" alt="Operations tab under RUM > Performance Monitoring" style="width:80%;" >}} | ||
|
|
||
| In Datadog RUM, a feature represents a major user-facing area of your application like checkout, login, or search. Each feature includes operations, which are the critical technical steps that make the experience work. | ||
|
|
||
| - **Business teams** use features to track and improve user conversion. | ||
| - **Engineering teams** use operations to monitor and minimize technical failures that impact key user moments. | ||
|
|
||
| | Industry | Feature | Feature Operations | | ||
| |----------------|----------|----------------------------------------------------------------------------------------------------------------------------------| | ||
| | Social network | Profile | Users can load their profile <br> Users can upload a picture <br> Users can update their status | | ||
| | E-Commerce | Checkout | Users can enter payment details <br> Users can save their payment method <br> Users can pay | | ||
| | Streaming | Search | Users can find results for their search <br> Users can load the description of a title <br> Users can start watching the trailer | | ||
| | CRM | Quote | Users can start a new quote <br> Users can add line items to the quote <br> Users can send a quote to recipients | | ||
|
|
||
| For example, the checkout experience of an eCommerce platform is a feature. Within it, operations might include entering payment details, saving a payment method, and completing a purchase. Datadog RUM automatically measures each operation's performance, including execution volume, completion rate, and failure rate. Measuring operations' health enables you to identify exactly when and why users may not convert in your feature. | ||
rtrieu marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ## Prerequisites | ||
rtrieu marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| ### Datadog RUM SDK versions | ||
|
|
||
| The client-side APIs to define operations are available in the following platforms: | ||
|
|
||
| {{< tabs >}} | ||
| {{% tab "Browser" %}} | ||
| [6.20.0][1] | ||
|
|
||
| [1]: https://github.com/DataDog/browser-sdk/releases/tag/v6.20.0 | ||
| {{% /tab %}} | ||
|
|
||
| {{% tab "Android" %}} | ||
| [3.1.0][1] | ||
|
|
||
| [1]: https://github.com/DataDog/dd-sdk-android/releases/tag/3.1.0 | ||
| {{% /tab %}} | ||
|
|
||
| {{% tab "iOS" %}} | ||
| [3.1.0][1] | ||
|
|
||
| [1]: https://github.com/DataDog/dd-sdk-ios/releases/tag/3.1.0 | ||
| {{% /tab %}} | ||
|
|
||
| {{% tab "Kotlin Multiplatform" %}} | ||
|
|
||
| [1.4.0][1] | ||
|
|
||
| [1]: https://github.com/DataDog/dd-sdk-kotlin-multiplatform/releases/tag/1.4.0 | ||
| {{% /tab %}} | ||
| {{< /tabs >}} | ||
|
|
||
| ### RUM without Limits | ||
|
|
||
| Operations are only available to RUM without Limits customers. | ||
|
|
||
| ## Setup | ||
|
|
||
| Use the SDK APIs to define your operations. | ||
|
|
||
| ### Start an operation | ||
|
|
||
| Every operation must be started by calling the `startFeatureOperation`. | ||
|
|
||
| {{< tabs >}} | ||
| {{% tab "Browser" %}} | ||
|
|
||
| ```javascript | ||
| DD_RUM.init({ | ||
| ..., | ||
| enableExperimentalFeatures: ["feature_operation_vital"], // you need to have this flag turned on for the API to work | ||
| }) | ||
|
|
||
| startFeatureOperation: ( | ||
| name: string, | ||
| options?: { | ||
| operationKey?: string, | ||
| context?: Context, | ||
| description?: string, | ||
| }) => void | ||
| ``` | ||
|
|
||
| {{% /tab %}} | ||
|
|
||
| {{% tab "Android" %}} | ||
|
|
||
| ```kotlin | ||
| GlobalRumMonitor.get().startFeatureOperation( | ||
| name: String, | ||
| operationKey: String?, | ||
| attributes: Map<String, Any?> | ||
| ) | ||
| ``` | ||
|
|
||
| {{% /tab %}} | ||
|
|
||
| {{% tab "iOS" %}} | ||
| ``` | ||
| RUMMonitor.shared().startFeatureOperation( | ||
| name: String, | ||
| operationKey: String?, | ||
| attributes: [AttributeKey: AttributeValue]? | ||
| ) | ||
| ``` | ||
| {{% /tab %}} | ||
| {{< /tabs >}} | ||
|
|
||
| ### Stop an operation with success | ||
|
|
||
| Every started operation must have a stop. Use `succeedFeatureOperation` to stop an operation with a successful outcome. | ||
|
|
||
| {{< tabs >}} | ||
| {{% tab "Browser" %}} | ||
|
|
||
| ```javascript | ||
| DD_RUM.init({ | ||
| ..., | ||
| enableExperimentalFeatures: ["feature_operation_vital"], // this flag needs to be enabled for the API to work | ||
| }) | ||
|
|
||
| succeedFeatureOperation: ( | ||
| name: string, | ||
| options?: { | ||
| operationKey?: string, | ||
| context?: Context, | ||
| description?: string, | ||
| }) => void | ||
| ``` | ||
|
|
||
| {{% /tab %}} | ||
|
|
||
| {{% tab "Android" %}} | ||
|
|
||
| ```kotlin | ||
| GlobalRumMonitor.get().succeedFeatureOperation( | ||
| name: String, | ||
| operationKey: String?, | ||
| attributes: Map<String, Any?> | ||
| ) | ||
| ``` | ||
|
|
||
| {{% /tab %}} | ||
|
|
||
| {{% tab "iOS" %}} | ||
|
|
||
| ``` | ||
| RUMMonitor.shared().succeedFeatureOperation( | ||
| name: String, | ||
| operationKey: String?, | ||
| attributes: [AttributeKey: AttributeValue]? | ||
| ) | ||
| ``` | ||
|
|
||
| {{% /tab %}} | ||
| {{< /tabs >}} | ||
|
|
||
| ### Stop an operation with failure | ||
|
|
||
| Every started operation must have a stop. Use `failFeatureOperation` to stop an operation with a failure outcome. | ||
|
|
||
| {{< tabs >}} | ||
| {{% tab "Browser" %}} | ||
|
|
||
| ```javascript | ||
| DD_RUM.init({ | ||
| ..., | ||
| enableExperimentalFeatures: ["feature_operation_vital"], // this flag needs to be enabled for the API to work | ||
| }) | ||
|
|
||
| GlobalRumMonitor.get().failFeatureOperation: ( | ||
| name: string, | ||
| failureReason: FailureReason, //'error' | 'abandoned' | 'timeout'| 'other' | ||
| options?: { | ||
| operationKey?: string, | ||
| context?: Context, | ||
| description?: string, | ||
| }) => void | ||
| ``` | ||
|
|
||
| {{% /tab %}} | ||
|
|
||
| {{% tab "Android" %}} | ||
|
|
||
| ``` | ||
| GlobalRumMonitor.get().failFeatureOperation( | ||
| name: String, | ||
| operationKey: String?, | ||
| reason: RUMFeatureOperationFailureReason, // .error, .abandoned, timeout, .other | ||
| attributes: Map<String, Any?> | ||
| ) | ||
| ``` | ||
|
|
||
| {{% /tab %}} | ||
|
|
||
| {{% tab "iOS" %}} | ||
|
|
||
| ``` | ||
| RUMMonitor.shared().failFeatureOperation( | ||
| name: String, | ||
| operationKey: String?, | ||
| reason: RUMFeatureOperationFailureReason, // .error, .abandoned, .timeout, .other | ||
rtrieu marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| attributes: [AttributeKey: AttributeValue] | ||
| ) | ||
| ``` | ||
| {{% /tab %}} | ||
| {{< /tabs >}} | ||
|
|
||
| ### Parallelization | ||
| You may have cases where users are starting several feature operations in parallel. To individually track them, use the `operationKey` defined when calling `startFeatureOperation`. You must reuse the same `operationKey` later in other APIs, for example when calling `succeedFeatureOperation`. | ||
rtrieu marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| <div class="alert alert-warning">Operations that have been started but not explicitly stopped are automatically terminated when the RUM session expires. Those are marked as failed, with `@operation.failure_reason:timeout`. If an operation stop API was called that was not started in the first place, the stop event emitted by the SDK will be dropped upon ingestion.</div> | ||
|
Check warning on line 225 in content/en/real_user_monitoring/operations_monitoring.md
|
||
rtrieu marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ## Monitor your availability on Datadog | ||
|
|
||
| {{< img src="/real_user_monitoring/operations_monitoring/operations-monitoring-2-temp.png" alt="Operations tab under RUM > Performance Monitoring" style="width:80%;" >}} | ||
|
|
||
| Datadog groups together all operations with the same name into a catalog. Each operation has two out-of-the-box metrics computed over your full, ingested, unsampled traffic: | ||
|
|
||
| - `rum.measure.operation`, which counts the volume of operations reported to Datadog | ||
| - `rum.measure.operation.duration`, which measures the elapsed time between the start and end of all the operations reported to Datadog | ||
|
|
||
| Both metrics are retained for 15 months, and include several dimensions: | ||
| - `operation.name`, which is defined on the client side | ||
| - `operation.status`, which is either a success or failure | ||
| - `operation.failure_reason`, which can be an error, or abandoned, or timeout, or other | ||
|
|
||
| Those metrics are included in the price of RUM Measure and available to all RUM without Limits customers that define one or more operations. | ||
|
|
||
| ## Configure retention filters | ||
|
|
||
| Operations are a new type of event in RUM. Operations are bound to a RUM Session, but can span across multiple RUM Views. Operations can be targeted in retention filters. This allows you to align your retention strategy on features that are cornerstones for your user experiences. For example, you can programmatically keep RUM Sessions that had specific operations fail or are taking longer than desired. | ||
|
|
||
| {{< img src="/real_user_monitoring/operations_monitoring/operations-monitoring-3-temp.png" alt="Operations tab under RUM > Performance Monitoring" style="width:80%;" >}} | ||
|
|
||
| Similarly to metrics, those events come with specific attributes you can use in retention filters: | ||
|
|
||
| - `@operation.name` | ||
| - `@operation.status` | ||
| - `@operation.failure_reason` | ||
| - `@operation.duration` | ||
| - `@operation.start_view.name` | ||
| - `@operation.end_view.name` | ||
|
|
||
| ## Further Reading | ||
|
|
||
| {{< partial name="whats-next/whats-next.html" >}} | ||
|
|
||
| [1]: https://app.datadoghq.com/rum/list | ||
Binary file added
BIN
+829 KB
...ges/real_user_monitoring/operations_monitoring/operations-monitoring-1-temp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+302 KB
...ges/real_user_monitoring/operations_monitoring/operations-monitoring-2-temp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+114 KB
...ges/real_user_monitoring/operations_monitoring/operations-monitoring-3-temp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.