Android data model π
The Android agent for Splunk Real User Monitoring (RUM) collects the following types of data about your Android application.
Common data types π
The Splunk RUM data model represents the following logical entities, following OpenTelemetry conventions:
Trace |
A set of events triggered as a result of a single logical operation, distributed across various components of an application. Traces contain events that cross process, network, and security boundaries. A RUM trace can, for example, initiate when someone taps on a button to start an action on a website. If you use RUM and APM together, traces represent calls made between the downstream services that handle the requests initiated by the user action. |
Span |
An operation within a transaction. A single span includes the logical name, the start and end timestamp of the operation, and the events and attributes linked to the captured data. A span might have a reference to its parent span and zero or more causally-related spans. Spans have universal attributes and custom attributes. |
Session |
A collection of traces that correspond to the actions a single user takes when interacting with an application over a period of time. By default, a session lasts until 15 minutes passed from the last event captured in the session. The maximum session duration is 4 hours. |
Interaction |
Reflects the action the user conducts within the user interface. Common interaction types include mouse clicks, taps on a touch screen, and keyboard events. |
User |
By default, Splunk RUM doesnβt collect identity data. Mapping a trace to a specific user requires manual instrumentation. Users can be represented by their username, email addresses, or using a synthetic identifier. Synthetic representation is useful in situations where PII regulations do not allow users to be identified. |
Basic properties π
The following properties are common to all applications instrumented for Splunk RUM:
Name |
Type |
Description |
---|---|---|
|
String |
Unique 64-bit identifier generated for the span within the trace. |
|
String |
Parent span ID. Absent if the span is the root span in a trace. |
|
String |
Logical operation the span represents. |
|
Number |
Duration in microseconds. |
|
String |
Unique 128-bit identifier, set on all spans belonging to the trace. |
|
Number |
Epoch microseconds of the start of the span. Can be absent if incomplete. |
|
Object |
Additional context, allowing to search and analyze spans based on specific tags. |
|
Array |
Associates events that explain latency with the time they happened. |
Default attributes π
By default, the Android RUM agent adds the following attributes to all spans:
Name |
Type |
Description |
---|---|---|
|
String |
Application name, as defined using |
|
String |
Random session identifier, generated by Splunk RUM. It doesnβt contain personally identifiable information. |
|
String |
Identifier of the session preceding the current session. Set only if there is a change in the |
|
String |
Version of the Splunk RUM SDK instrumenting the application. |
|
String |
Connection type used by the device. Possible values include |
|
String |
Details of the connection. For example, the type of |
Metrics π
The following tables list all of the metrics available in Splunk RUM for Android. All errors in Splunk RUM have the dimension sf_error=true
.
For more information on app startup metrics as defined by Android, see App startup time in the Android Developers documentation.
Metric name |
UI name |
Description |
---|---|---|
|
Custom Event Count |
The total number of spans with the selected custom event in the given time range. |
|
Custom Event Duration |
The p75 time in nanoseconds of spans with the selected custom event in the given time range. |
|
Mobile crash |
Total number of crashes in the given time range. |
|
App error |
Total number of ANRs, handled exceptions, and reported errors in the given time range. |
|
Cold start time |
The p75 time in nanoseconds of cold starts in the given time range. |
|
Cold start count |
Total number of cold starts in the given time range. |
|
Warm start count |
Total number of warm starts in the given time range. |
|
Warm start time |
The p75 time in nanoseconds for a warm start. |
|
Hot start count |
Total number of hot starts in the given time range. |
|
Hot start time |
The p75 time in nanoseconds for a hot start. |
|
Network or back-end requests/errors |
The total number of network requests in a given time range. |
|
Network or back-end latency |
The p75 time in nanoseconds for back-end latency in the given time range. |
Resource attributes π
By default, the Android RUM agent adds the following resource attributes to all spans:
Name |
Type |
Description |
---|---|---|
|
String |
Name of the deployment environment. For example, |
|
String |
The model identifier for the device. For example, |
|
String |
The model name for the device. For example, |
|
String |
Always set to |
|
String |
Always set to |
|
String |
Version of the operating system, as reported by the value of |
Instrumentation attributes π
The Android RUM agent collects the following data using its instrumentations. To activate or deactivate specific instrumentations, see Instrumentation settings.
Crash reporting π
The Android RUM agent adds the following crash reporting attributes to spans that represent uncaught exceptions:
Name |
Type |
Description |
---|---|---|
|
Integer |
ID of the current managed thread, as opposed to the operating system thread ID. |
|
String |
Name of the thread. |
|
String |
The message of the exception. |
|
String |
The type of the exception. |
|
String |
The stack trace for the exception. |
|
String |
Always |
|
String |
Always |
|
String |
Always |
Network monitoring π
Network monitoring produces spans with the name network.change
and the following attributes:
Name |
Type |
Description |
---|---|---|
|
String |
Network status. Either |
|
String |
Internet connection type. Possible values are: |
|
String |
Detailed information about the connection type. For example, the type of |
Application Not Responding (ANR) π
Application Not Responding (ANR) event detection generates spans whenever the main application thread is unresponsive for more than 5 seconds.
ANR produces spans with the name ANR
and the following attributes:
Name |
Type |
Description |
---|---|---|
|
String |
A stack trace as a string in the natural representation for the language runtime. |
|
String |
Always |
|
Always |
Slow rendering detection π
Slow rendering detection generates spans whenever it detects a slow or frozen frame render. Frame rendering is slow if its duration exceeds 16 milliseconds, and frozen if it exceeds 700 milliseconds.
Slow rendering detection generates up to two spans on every interval: a span named slowRenders
which counts slow frames, and a span named frozenRenders
which counts frozen frames.
Slow rendering detection spans have the following attribute:
Name |
Type |
Description |
---|---|---|
|
Integer |
Number of observed slow or frozen frames during a single interval. Intervals last 1 second by default. To change the polling interval duration, pass a positive duration, in milliseconds, to the |
HTTP clients π
The Android RUM agent includes instrumentation for the OkHttp and Volley HTTP clients. To activate the instrumentation, see HTTP instrumentation settings.
The HTTP client instrumentation collects the following OpenTelemetry HTTP attributes:
Name |
Type |
Examples |
---|---|---|
|
String |
|
|
String |
|
|
String |
|
|
Integer |
|
|
Integer |
|
|
String |
|
|
String |
|
|
String |
|
|
Integer |
|
The HTTP instrumentation also collects the following attributes:
Name |
Type |
Description |
---|---|---|
|
String |
Always |
|
String |
The trace ID of the corresponding backend (APM) span, extracted from the |
|
String |
The span ID of the corresponding backend (APM) span, extracted from the |
Activity lifecycle monitoring π
Activity lifecycle monitoring generates spans whenever an activity changes its state. An activity lifecycle span can have one the following names depending on its state:
Created
: Activity starts for the first time.Restarted
:Activity restarts after being stopped.Resumed
: Activity resumes after a pause.Paused
: Activity is paused.Stopped
: Activity stops.Destroyed
: Activity is destroyed.
Activity lifecycle spans contain the following attributes:
Name |
Type |
Description |
---|---|---|
|
String |
Always |
|
String |
Name of the activity class. |
Fragment lifecycle monitoring π
Fragment lifecycle monitoring generates spans whenever a fragment changes its state. A fragment lifecycle span can have one the following names depending on its state:
Created
: Before the fragment gets attached to the Android context.Restored
: Fragment recreates its view.Resumed
: Fragment is resumed after a pause.Paused
: Fragment is paused.ViewDestroyed
: The view of the fragment is destroyedDestroyed
: Fragment is destroyed.Detached
: Fragment is detached from the Android context.
Fragment lifecycle spans contain the following attributes:
Name |
Type |
Description |
---|---|---|
|
String |
Always |
|
String |
Name of the fragment class. |
App start monitoring π
App start monitoring feature generates spans whenever the app performs a cold, warm, or hot start.
Cold starts happen when users open the app for the first time since booting the phone, or after the user has terminated the app.
Hot starts happen when the system brings an app to the foreground. Hot starts are faster than cold starts because the app is already loaded.
Warm starts happen when some of the operations that take place in a cold start are still happening. Warm starts are faster than cold starts, but slower than hot starts.
App start monitoring produces spans with the name AppStart
and the following attributes:
Name |
Type |
Description |
---|---|---|
|
String |
Always |
|
String |
The type of start. Can be |
Location data π
If you choose to set the latitude and longitude for location data by using the Splunk RUM for Android APIs, Splunk Observability Cloud uses the information to map the geographical location of the user, such as country, city, and so on.
Note
Splunk Observability Cloud calculates geographical metadata from the latitude and longitude, and drops the latitude and longitude after processing the data.