Mobile Real User Monitoring (Mobile RUM) allows you to understand your native iOS, Android, Xamarin, Cordova-based, or React Native mobile application as your end users actually use it.
It provides you with visibility into the functioning of the application itself and the application's interactions with the network it uses and any server-side applications it may talk to. This page introduces Mobile RUM.
Benefits of Mobile RUM
With Mobile RUM, you can:
- Understand and improve your mobile application's performance
- Determine whether a request is slow because of your servers or because of the network connection. See .
- Trace an individual request from the initial user action in the mobile application through the associated business transaction(s) on the application server(s). See Network Request Snapshots.
- Estimate the network performance you can expect for different requests, carriers, devices, and geographies by viewing current metrics. See Usage Stats in Mobile App Dashboard.
- Detect slow UI issues known as "application not responding" (ANR). You can track ANRs in the Code Issues Dashboard, identify sessions where ANRs occurred, and configure ANR thresholds to define severity levels.
- Reduce crashes
- Reduce errors
- Observe how many network errors occur and which requests caused them. See Network Requests List and Network Request Dashboard.
- Capture errors and exceptions from your mobile applications, so that they are displayed in the Code Issues Dashboard and the session records and details. To learn how to use the SDKs to report errors, see Report and Exceptions (iOS/Android).
- Learn about your users
- Learn which devices and technologies most of your users are running. See Usage Stats in Mobile App Dashboard and Crash Dashboard.
- View where your users are located in the world. See Geo Dashboard in Mobile App Dashboard.
- Understand how users are navigating through your application and what actions they are taking. See Mobile Sessions.
- Capture user interactions with your mobile application such as button clicks and when text is edited. See "Enable User Interaction Capture Mode" (iOS/Android) to learn how.
- Customize the data that Mobile RUM returns
- Create new metrics and timers. See Customize the iOS Instrumentation, Customize the Android Instrumentation, Customize the Xamarin Instrumentation, and Customize the Cordova Instrumentation.
- Collect diagnostic data from your executing code via information points. See Customize the iOS Instrumentation, Customize the Android Instrumentation, Customize the Xamarin Instrumentation, and Customize the Cordova Instrumentation.
How It Works
To use Mobile RUM, you add a small piece of highly performant code, the Mobile Agent, to the source of your mobile application. This process is called instrumenting and is described in Instrument iOS Applications, Instrument Android Applications, Instrument Xamarin Applications, Instrument Cordova Applications, and Instrument React Native Applications.
As your end users interact with your application, the agent collects metrics and any error information on the application's performance and sends that information to the EUM Server, where it is processed. The EUM Server then makes the data available to the AppDynamics controller UI, where it is displayed in a series of dashboards and charts.
If your application crashes, the agent also creates a crash snapshot with information to help you analyze what happened, including the crashed function, the source file containing the crashed function, the line number, if available, and a stack trace of the application at the time of the crash, along with various other identifying data. And if the server-side application with which your mobile app interacts is also instrumented, you can get correlated metric information for the entire round-trip request life cycle.
When the agent detects that something of interest has occurred in the application, it collects data describing that event and stores it in a local buffer. Typically, this data consists of approximately 200-400 bytes per event. The agent periodically flushes this local buffer by sending the events in the buffer to the EUM Server in a request called a beacon. To minimize power consumption, the agent schedules these flushes, if possible, when the application is using the network.
If a network connection to the EUM Server is not available, the agent deletes older events to prevent unbounded growth in the buffer. The maximum size of the buffer is 200 events.
If the EUM Server is unavailable for extended periods of time, the agent may delete older data to prevent unbounded growth in the buffer.