Docs » Instrument mobile and web applications for Splunk RUM » Instrument Android applications for Splunk RUM » Android data model

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. For more information on how to add identity data, see Add user metadata using global attributes.

Basic properties πŸ”—

The following properties are common to all applications instrumented for Splunk RUM:

Name

Type

Description

id

String

Unique 64-bit identifier generated for the span within the trace.

parentId

String

Parent span ID. Absent if the span is the root span in a trace.

name

String

Logical operation the span represents.

duration

Number

Duration in microseconds.

traceId

String

Unique 128-bit identifier, set on all spans belonging to the trace.

timestamp

Number

Epoch microseconds of the start of the span. Can be absent if incomplete.

tags

Object

Additional context, allowing to search and analyze spans based on specific tags.

annotations

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

app

String

Application name, as defined using applicationName(String).

splunk.rumSessionId

String

Session identifier, randomly generated by Splunk RUM. It doesn’t contain personally identifiable information.

splunk.rum.previous_session_id

String

Identifier of the session preceding the current session. Set only if there is a change in the splunk.rumSessionId attribute.

splunk.rum.version

String

Version of the Splunk RUM SDK instrumenting the application.

net.host.connection.type

String

Connection type used by the device. Possible values include wifi, cell, unavailable, and unknown.

net.host.connection.subtype

String

Details of the connection. For example, the type of cell connection, like gprs, edge, or umts.

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

rum.workflow.count

Custom Event Count

The total number of spans with the selected custom event in the given time range.

rum.workflow.time.ns.p75

Custom Event Duration

The p75 time in nanoseconds of spans with the selected custom event in the given time range.

rum.crash.count

Mobile crash

Total number of crashes in the given time range.

rum.app_error.count

App error

Total number of ANRs, handled exceptions, and reported errors in the given time range.

rum.cold_start.time.ns.p75

Cold start time

The p75 time in nanoseconds of cold starts in the given time range.

rum.cold_start.count

Cold start count

Total number of cold starts in the given time range.

rum.warm_start.count

Warm start count

Total number of warm starts in the given time range.

rum.warm_start.time.ns.p75

Warm start time

The p75 time in nanoseconds for a warm start.

rum.hot_start.count

Hot start count

Total number of hot starts in the given time range.

rum.hot_start.time.ns.p75

Hot start time

The p75 time in nanoseconds for a hot start.

rum.resource_request.count

Network or back-end requests/errors

The total number of network requests in a given time range.

rum.resource_request.time.ns.p75

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

deployment.environment

String

Name of the deployment environment. For example, dev. Defined using deploymentEnvironment(String).

device.model.identifier

String

The model identifier for the device. For example, SM-G920F

device.model.name

String

The model name for the device. For example, Samsung Galaxy S6.

os.name

String

Always set to Android.

os.type

String

Always set to Linux.

os.version

String

Version of the operating system, as reported by the value of android.os.Build.VERSION.RELEASE. For example, 8.1.0.

Instrumentation attributes πŸ”—

The Android RUM agent collects the following data using its instrumentations. To enable or disable 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

thread.id

Integer

ID of the current managed thread, as opposed to the operating system thread ID.

thread.name

String

Name of the thread.

exception.message

String

The message of the exception.

exception.type

String

The type of the exception.

exception.stacktrace

String

The stack trace for the exception.

exception.escaped

String

Always true, denoting the uncaught exception, such as a crash occurring.

component

String

Always crash.

status

String

Always Error.

Network monitoring πŸ”—

Network monitoring produces spans with the name network.change and the following attributes:

Name

Type

Description

network.status

String

Network status. Either lost or available.

net.host.connection.type

String

Internet connection type. Possible values are: unavailable, cell, wifi, unknown, vpn.

net.host.connection.subtype

String

Detailed information about the connection type. For example, the type of cell connection, like GSM or LTE.

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

exception.stacktrace

String

A stack trace as a string in the natural representation for the language runtime.

component

String

Always error.

status

Always ERROR.

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

count

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 slowRenderingDetectionPollInterval(Duration) setting.

HTTP clients πŸ”—

The Android RUM agent includes instrumentation for the OkHttp and Volley HTTP clients. To enable the instrumentation, see HTTP instrumentation settings.

The HTTP client instrumentation collects the following OpenTelemetry HTTP attributes:

Name

Type

Examples

http.method

String

GET, POST, HEAD

http.url

String

https://foo.bar/address?q=value#hash

http.flavor

String

1.0

http.status_code

Integer

200, 404, 418

http.response_content_length

Integer

3495 (bytes)

http.user_agent

String

CERN-LineMode/2.15 libwww/2.17b3

net.transport

String

IP.TCP

net.peer.name

String

example.com

net.peer.port

Integer

80, 8080, 443

The HTTP instrumentation also collects the following attributes:

Name

Type

Description

component

String

Always http.

link.traceId

String

The trace ID of the corresponding backend (APM) span, extracted from the Server-Timing header. See Link RUM with Splunk APM for more information.

link.spanId

String

The span ID of the corresponding backend (APM) span, extracted from the Server-Timing header. See Link RUM with Splunk APM for more information.

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

component

String

Always ui.

activityName

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 destroyed

  • Destroyed: Fragment is destroyed.

  • Detached: Fragment is detached from the Android context.

Fragment lifecycle spans contain the following attributes:

Name

Type

Description

component

String

Always ui.

fragmentName

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

component

String

Always appstart.

start.type

String

The type of start. Can be cold, warm, or hot.

Location data πŸ”—

If you choose to set the latitude and longitude for location data by using the Splunk RUM for Android APIs, 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.