Application Monitoring

What is Application Monitoring?

Dynatrace monitors the performance of your hosts and provides information on related metrics. This is done by installing OneAgent on all hosts in your application environment. By default, OneAgent operates in Full-Stack Monitoring mode, meaning it monitors the whole environment from top to bottom. Along with Full-Stack, there is also Infrastructure Monitoring mode with consumes fewer hosts units. User Actions are an important concept for Application Monitoring, as they are any interaction with the web browser that involves a call to a web server.

Useful Links

User Action Types 

(Load action, XHR action, and Custom user actions)

 1. Load Action

A load action is defined as an actual page loading in your browser. If you type a URL in your browser and press enter, a load action occurs. During a load action, many resources are loaded, including images, HTML, and CSS.

The action duration in this case is the time required for the complete load action. More specifically, the start time of the user action begins with the W3C navigationStart time, if available. If not available, the start time begins when the RUM JavaScript is initialized in the browser. The end time is when the last onload handler has completed its task. The onload handler is an event handler in JavaScript that’s used to call the execution of JavaScript after a page, frame, or image has completely loaded. If any XMLHttpRequests (see XHR actions below) are started by an onload handler, the user action ends when the XMLHttpRequest is complete.

page load cycle

2. XHR Action

Most modern applications, including single page applications, rely on a single load action that downloads the framework and initializes the page. After that, the DOM of the page is changed via JavaScript and all communication with the web server is done via XmlHttpRequest.

Dynatrace continuously tracks user interactions with each page. If user interaction leads to XmlHttpRequests or fetch() calls, an XHR action is created. Dynatrace also detects if there are additional XHRs triggered in the callback of the initial XHR and so on. In this case, Dynatrace waits until all requests are finished. By monitoring the DOM, Dynatrace can also identify resources that were added in the callbacks. Dynatrace then waits until those resources have finished downloading before ending the action.

XHR actions

An XHR action starts with the user’s click on a control on a web page. All metrics are calculated in relation to this point in time and are based on the initial XHR that triggers the user action.

Detected interaction types

Real User Monitoring detects the following interaction types in your application:

  • Click
  • Double click
  • Mouse down
  • Mouse up
  • Key down
  • Key up
  • Scroll
  • Touch start
  • Touch end
  • Change

To select which of these interaction types should be captured automatically

  1. In the Dynatrace menu (classic) or (new), go to Web.
    1. Select the application you want to configure.
    2. On the application overview page, select Browse () > Edit.
    3. Under Application settings, select Capturing > Advanced setup.
    4. Use the toggle switches to include or exclude the interaction types from being captured.

Fetch API

The Fetch API provides an interface for fetching resources (including across the network). It is similar to XMLHttpRequest, but the API provides a more flexible feature set. The generic definitions of Request, Response and other network request objects in Fetch allow them to be used at any time they are needed, whether it’s for service workers, Cache API, or anything that handles or modifies requests and responses. Fetch also supports the Cross Origin Resource Sharing (CORS).

User actions based on the Fetch API appear in Dynatrace as XHR actions. Configure Real User Monitoring to capture XHR actions | Dynatrace Docs.

3. Custom User Actions

Rather than relying on default user action generation, you may want to fine-tune your Real User Monitoring by adding additional user actions directly into your application’s HTML. This can be useful if our automated user-action generation doesn’t catch specific actions or you want to introduce specific fine-grained timings into your application monitoring. For example, you could measure how long it takes to open a JavaScript-only drop-down menu, or measure the duration time of some JavaScript code. To define custom actions you can use the Real User Monitoring JavaScript API | Dynatrace Docs.

User Action Naming Rules 

Many applications allow users to accomplish the same goal through different UI controls. When monitoring such applications, it can be difficult to differentiate between actions that have the same result and goal, but are executed by using different parts of the application UI. Likewise, if the UI of an application is translated into multiple languages, the same application function or control can appear under varying names. With user action naming rules, Dynatrace can detect such subtle variations and intelligently group related user actions (i.e., user actions that achieve the same goal) into logical groups for monitoring.

Dynatrace automatically removes certain common sessionid tokens from user action names (for example, jsessionid for Java containers, the default sessionid for PHP, and CFID and CFTOKEN for ColdFusion). Nonetheless, there are numerous session ID variations that may be present in your environment. If Dynatrace doesn’t automatically recognize and remove session IDs from certain user action names you encounter, you’ll need to configure custom naming rules for those user actions.

Action Name Detection 

Dynatrace tries to assign meaningful names for actions. To do this, it checks several action properties, such as inner HTML, caption, and hint, of the HTML element that triggers the action. This element can either be a button or an anchor. It also tries to get the caption if there’s a more complex HTML structure with multiple nested tags.

Set action name with data-dtname custom attribute

If the standard action name detection doesn’t serve your purpose, you can set the data-dtname custom attribute within the HTML tags and use it as a caption. For instance, the following action:
<label for=”txtFirstname”>Firstname</label> <input data-dtname=”Firstname Text Input” type=”text” value=”firstname” name=”firstname” title=”Firstname” id=”txtFirstname” />
can be assigned the following caption:
click on “Firstname Text input”

If you’re using different attribute names for different tools, you can choose to set an alternative to data-dtname that Dynatrace can use for user action naming purposes.

Resolving Captions for Actions

The RUM JavaScript uses several techniques to decide the name that best fits an action. It starts with the innermost HTML node that is clicked, such as a button, an image tag, or a link, and checks the following in the order of precedence:

  1. The attribute named data-dtname.
    1. The nodename, such as image, anchor, or input.

It stops when the html tag, the body tag, the head tag, or the document element is found.

  1. The innerText/textContent.

If none of these return a reasonable result, the RUM JavaScript starts applying a recursive algorithm that checks different things depending on the nodeName of the currently checked HTML node. If nothing is found, the parent node is checked.

Key User Actions 

Most applications, both web and mobile, include user actions (for example, signups, checkouts, and product searches) that are particularly important to the success of your digital business. Such key user actions might take longer to execute than others or they might have the requirement to be of shorter-than-average duration.

For instance, consider that you’ve set your global Apdex threshold to 3 seconds. While this threshold might be acceptable for the majority of user actions, it might not be acceptable for a sign-up user action. Alternatively, there could be a search action that is quite complex and requires longer than the allotted 5 seconds.

With the key user action feature, you can customize the Apdex thresholds for each of these user actions. You can use this feature to monitor key actions with a dedicated dashboard tile and track historic trends.

Note: Dynatrace allows you to create a maximum of 500 key user actions per environment across all applications and a maximum of 100 key user actions per application. When you reach that limit, consider using calculated metrics for Real User Monitoring, which offer similar capabilities.

Mark a User Action as a Key User Action 

  1. On the Applications page, select the application, and scroll down to Top 3 user actions.

    1. Click View full details.
    2. Under Top 100 user actions, select a user action.
    3. In the upper-right corner of the User action details page, select Mark as key user action.

The selected user action will now be displayed under Key user actions on the User action analysis page.

  1. optional To access a key user action from the dashboard, select an action from the Key user actions list, and select Pin to dashboard.
    1. optional To customize its Apdex rating, on the User action details page of the key user action, select Browse () > Edit > Key Performance Metric.