Mobile App Monitoring

Concepts

End-User Monitoring (EUM) or Real-User Monitoring (RUM), is a vital tool to understand digital user experience.

Instana supports mobile app monitoring by analyzing actual URL request times which provides detailed insights into the app experience of end-users, as well as deep visibility into application call paths. The Instana app monitoring solution works using an iOS/Android agent which is installed as a dependency on mobile apps.

Technical beta

Our mobile app monitoring feature is currently in technical beta. To gain access to the beta, please contact Instana Support or register your interest.

Installation

iOS

To install the iOS agent, use Swift Package Manager (via Xcode) or CocoaPods.

Swift Package Manager

  1. Open Xcode.
  2. Select File -> Swift Packages -> Add Package Dependency -> Your Xcode project.
  3. Enter the https://github.com/instana/iOSAgent repository.

CocoaPods

  1. Within your Podfile specification, add the following:

    pod 'InstanaAgent'

  2. To download the dependencies, run pod install.

Setup

For more information on the setup process, see the iOS agent API.

Android

The Android agent is composed by a Gradle plugin and a SDK library. Please apply the plugin to your application module and add the SDK as a dependency.

Android Gradle Plugin

Instana Android Agent currently supports Android Gradle Plugin 3.5.x. Please make sure are using the right version in your project-level build.gradle file:

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.3'
    }
}

Instana Android Plugin

In your project-level build.gradle file:

buildscript {
   repositories {
        google()
        jcenter()
        maven {
            url "https://dl.bintray.com/instana/public-maven"
        }
    }
   dependencies {
      classpath "com.instana:android-agent-plugin:1.0.0"
    }
}

In your module (app-level) Gradle file (usually app/build.gradle), after applying the com.android.application plugin:

apply plugin: 'com.android.application'
apply plugin: 'com.instana.android-agent-plugin'

Instana Android SDK

In your project-level build.gradle file:

allprojects {
    repositories {
        google()
        jcenter()
    }
}

In your module (app-level) Gradle file (usually app/build.gradle):

dependencies {
    implementation 'com.instana:android-agent-runtime:1.0.0'
}

Java 1.8 compatibility

Note: this step is not required if your minSdkVersion is 24 or higher

In your module (app-level) Gradle file (usually app/build.gradle):

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

Basic initialization

In your class extending Application, replace YOUR_REPORTING_URL and YOUR_APP_KEY with the configuration values you’ll find in your Instana Dashboard:

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        Instana.setup(
            this,
            InstanaConfig(
                reportingURL = "YOUR_REPORTING_URL",
                key = "YOUR_APP_KEY"
            )
        )
    }
}

Advanced usage

For a complete list of initialization options, view tracking, manual request-tracking, etc please see the Android agent API.

Dashboards

Summary

The main dashboard summarizes all the important data at a glance.

Dashboard Overview

HTTP Requests

Learn which of your HTTP requests are slow or problematic. Selecting a specific origin provides an insight into throughput and latency, as well as error rates and latency breakdown.

HTTP Request Details

Views

Often it’s important to isolate specific views and analyze their performance, which is also a great way to find the view with the most traffic. Select a specific view to display all of the metrics relating to it.

Details

Analyze

Similar to our analyze capabilities for traces and call, the analyze view for mobile app monitoring data can be used to answer very specific questions that aren’t covered by any preconfigured dashboards. A single piece of app monitoring data is called a beacon. A few beacon types exist, i.e. session start and HTTP requests. For convenience purposes, each beacon type has its main navigation item within the analyze view.

Beacon data can be used to filter and group. Filters are connected with AND logic operator so a beacon needs to match all the filters. The default grouping depends on the selected beacon type. Grouping can be removed to inspect the individual beacon that match filters.

Details