Performance Monitoring provides you a deeper understanding of your applications' performance (Android, web, and iOS) and lets you optimize them. The Performance Monitoring SDK collects data from your application and the Countly dashboard visualizes this data so that you can review, analyze, and find performance issues within your application and fix them for a better user experience.
The Performance Monitoring plugin is available only in the Enterprise Edition.
First, you need to integrate the Performance Monitoring SDK to your mobile or web application. Once the SDK is integrated and starts capturing the performance data points, you can view them in the Countly Dashboard immediately.
Data points captured by the SDK are grouped and recorded as a trace by Countly.
A trace is a group of trace samples (data points) where each data point reports performance metrics captured between two points in time in your app.
For example: app_start, https://yourwebsite.com/, forLoopTrace
First of all, make sure Performance Monitoring is enabled. To do so, in the main Countly Dashboard, go to
Plugins and enable the Performance Monitoring toggle.
After that, you will find Performance in the Improve section of your Dashboard.
In the Performance Monitoring view you will see three tabs:
In this tab, you get two kinds of information: Recent Issues and overall Performance Metrics information.
Performance Monitoring automatically identifies possible issues in your application for all the devices' duration traces and network traces. A trace is marked as an "issue" if it exceeds the threshold value for the trace over the last 30-day period. The default threshold value for all traces is 2 seconds. The metric used to identify an issue is response time for network traces and duration for device traces.
Recent Issues displays up to 3 issues prioritized by percentage of affected values. You can access a complete list of issues by clicking on the
See all issues button.
You can click on each issue to see its detailed view. Additionally, each issue has an ellipsis menu on the right with the following options:
- Edit threshold: You can edit the threshold value for the issue or trace.
- Mute issue: Once you mute the issue, it will no longer appear in the Performance Overview, but you can still access it with
See all issues.
- Re-open issue: When you have muted an issue and you are in the All Issues list, use this option to reopen the muted issue, and it will again appear in the Overview tab.
The Performance Metrics panel in the Overview tab displays the following information from your app:
- Network response latency: This chart displays the median response time value for all HTTP/S requests aggregated by country and grouped into three, color-coded categories: Below 2 seconds, Between 2 - 6 seconds, and Above 6 seconds.
- Network success rate: This chart displays the network success rate over time for all HTTP/S requests combined together.
- Top slow networks: This chart displays the top slow network traces of the application.
- Top slow rendering screens (only for mobile apps): This chart displays the top slow rendering screens of the application.
- App start trace (only for mobile apps): This chart displays the aggregate application start density distribution for the selected time period.
Device traces are stored and tracked in this tab. A device trace is a group of trace samples that reports metrics related to the application's performance on the device. Depending on the application type (mobile or web), different traces will be recorded by the SDK with different resulting metrics.
Traces Collected by a Mobile SDK
The Performance Monitoring SDK for mobile devices (iOS and Android) captures two types of device traces: Duration Traces and Screen Traces. Mobile SDKs have a few reserved trace sample names that are captured automatically by the SDK which are: app_start, app_in_background, app_in_foreground.
The recorded metric for these traces is duration. The automatic duration traces captured by the Countly mobile SDKs are:
- App start: Measures the time taken by the app to become responsive after it is opened.
- App in background: Measures the time when the app is running in the background.
- App in foreground: Measures the time when the app is running in the foreground.
Screen traces span the lifetime of a screen and measure slow and frozen frames. The recorded metrics for these traces are Slow Rendering Frames and Frozen Frames.
Traces Collected by a Web SDK
The Countly Web SDK uses Boomerang.js, an end-user-oriented web performance testing library, to send traces to the Countly Server. It can collect performance timings, metrics, and characteristics of your user's web browsing experience. The Performance Monitoring SDK for web captures two types of device traces: Page Load Traces and Duration Traces.
Page Load Traces
The Performance Monitoring SDK captures page load traces automatically for your application, and shows them on the Countly Dashboard. Recorded metrics for the page load traces are as follows:
- First paint: Time elapsed between when the user navigates to a page and when any visual change happens.
- First contentful paint: Time elapsed between when the user navigates to a page and when meaningful content displays, like text or image.
- DOM interactive: Time elapsed between when the user navigates to a page and when the page is considered interactive for the user.
- DOM content loaded event end: Time elapsed between when the user navigates to a page and when the initial HTML document is completely loaded and parsed.
- Load event end: Time elapsed between when the user navigates to a page and when the current document's load event completes.
- First input delay: Time elapsed between the user interacting with a page and when the browser is able to respond to that input.
The recorded metric for these traces is duration. All custom traces for web apps are grouped into duration traces.
This tab records network traces. A network trace is a group of trace samples that reports metrics for the HTTP/S requests issued by your application to the API endpoint. For each endpoint request your application makes, Performance Monitoring records the following metrics:
- Response time: Time elapsed between when the request is made and when the response is received.
- Request payload size: Byte size of the request made by the application.
- Response payload size: Byte size of the response downloaded by the application.
- Success rate: Percentage of successful response codes (2xx - 3xx) compared to total responses.
You can create custom traces in your mobile or web application to monitor the performance of specific code in your app. The default metric for all custom traces is duration, therefore each custom trace sample should have a duration metric in it, and you can also add your own custom metric using the SDK methods.
- A custom metric should have a numeric integer value that can be measured and visualised over time.
- The names of custom metrics can only have up to 32 characters.
- All the custom traces can be found in the duration table in the device tab for all app types.
Detailed Metric Information
If you navigate to the deeper into Performance Monitoring by clicking on any network trace or device trace, you will see a detailed metric view for each metric for that particular trace.
Here you can review each metric, for the selected time period, over time and an aggregated density distribution. You can also break down the collected data points for the metric using Drill and view detailed information for the metric in the attributes table categorized into Device, Country, City, Region, Platform, Platform Version, App Version, Carrier, Browser, and Browser Version.
Detailed Sample Information
Countly can also provide detailed trace sample information. A trace sample in Countly Performance Monitoring is a single data point captured by the SDK and recorded in Countly.
From the Detailed Metric View you can navigate further to the Samples view, where you can deep-dive into more granular information for the metric.
The Samples view provides the aforementioned attributes information for each data point which can be further segmented using Drill (by enabling the toggle and using the filter on the top of the page). This page provides very valuable information if you want to see per-device or per-browser details.