Android OpenTelemetry Assets
| Version | 1.1.0 (View all) |
| Subscription level What's this? |
Basic |
| Developed by What's this? |
Elastic |
| Minimum Kibana version(s) | 9.5.0 9.4.5 9.3.9 8.19.20 |
Use this package to get Kibana dashboards for visualizing telemetry data from your Android applications instrumented with OpenTelemetry. The dashboards provide visibility into application health, crash analysis, span performance, and session-level insights.
The Elastic Distribution of OpenTelemetry Android (EDOT Android) is the easiest way to populate these dashboards. It is an APM agent built on top of OpenTelemetry that provides automatic instrumentation, session tracking, disk buffering, and central configuration out of the box. Any other OpenTelemetry-compatible Android instrumentation will also work, as long as the expected telemetry fields are present.
This package has been tested with EDOT Android 1.5.0, EDOT Collector 9.2.0, and OpenTelemetry semantic conventions. The dashboards query data from logs-generic.otel* and traces-generic.otel* index patterns, and filter on os.name: "Android".
- An Android application instrumented with an OpenTelemetry SDK (such as EDOT Android) sending data to the Elastic Stack.
- Kibana 8.19.20 or later on the 8.19 release line; Kibana 9.3.9 or later on the 9.3 release line; Kibana 9.4.5 or later on the 9.4 release line; or Kibana 9.5.0 or later.
- Telemetry data must include the following fields for full dashboard functionality:
os.name(set to"Android")session.idservice.nameandservice.version(which are the OpenTelemetry way to define a telemetry source, in this case your Android application's name and version)exception.stacktrace,exception.type, andexception.message(for crash analysis)app.build_id(for matching an obfuscated stack trace to its R8 mapping data)os.versionanddevice.manufacturer(for device breakdown charts)span.nameandstatus.code(for span analysis)event_name(to identifydevice.crashandapp.crashevents)app.installation.id(for installation counts)duration(for span duration averages and percentiles)
EDOT Android populates all of these fields automatically. If you are using a different OpenTelemetry SDK, ensure they are configured in your instrumentation.
Retracing an obfuscated stack trace also requires the R8 mapping data for the corresponding app.build_id to be uploaded to the Elastic Stack. Follow the EDOT Android documentation for detailed mapping upload instructions.
Check out the EDOT Android's Demo application guide to set up a test environment and take a quick look at what its data looks like with the dashboards provided in this content package.
The main dashboard provides a high-level view of your Android application's health and usage. It is organized into four collapsible sections:
Overview
- Installations — Total number of unique device installations, tracked by an installation ID stored in each device's cache.
- Sessions — Number of unique sessions. A session represents a period of user interaction with the application.
- Installations by manufacturer — Donut chart showing the distribution of installations across Android device manufacturers.
- Installations by OS version — Donut chart showing the distribution of installations across Android OS versions.
- Applications — Table of applications with their number of installations, sessions and crashes. Click an application name to filter the whole dashboard by it.
- Versions — Table of application versions with their number of installations, sessions and crashes. Select an application first, then click a version to narrow the dashboard down to it.
Logs & Spans
- Total recorded logs / Total recorded spans / Total failed spans — Metric counters for log, span and errored span counts.
- All spans — Table of spans grouped by name with their average duration, which can be further explored by a drilldown into Discover to see more span details with the trace waterfall UI.
- Failed spans — Table of spans with an "Error" status, grouped by name and occurrence count, with a similar drilldown into Discover to see span details with the trace waterfall UI.
- Failed span rate and p95 duration over time — Line chart with the share of errored spans and the 95th percentile span duration per time bucket.
Crashes
- Total recorded crashes / Crashes per affected session — Metric counters for the total crash count and the average number of crashes among sessions that recorded at least one crash.
- Crashes table — List of crashes grouped by a group ID computed from their stack trace, with a message sample and occurrence count. Clicking a group ID drills down into the Exception Details dashboard. Use that drilldown rather than filtering the dashboard on a group ID: the group ID is computed by Kibana, so a filter on it shows the metric counters and trend charts as empty.
- Crash rate over time — Line chart with the percentage of sessions active in each time bucket that recorded at least one crash.
Event timeline
- First 100 events — Shows a list of logs and spans in chronological order, useful to trace back the steps a user took during a session.
A drilldown dashboard opened from the Application Overview when selecting a specific crash group. The group ID filter at the top narrows every panel to that exception. It is organized into two collapsible sections:
Overview
- Top affected OS versions — Donut chart of exception occurrences by Android OS version.
- Top affected manufacturers — Donut chart of exception occurrences by device manufacturer.
- Total occurrences — Total count of the selected exception.
- Affected installations — Number of distinct device installations that recorded the exception.
- Occurrences per session — Average number of times the exception occurs per session.
- Top affected sessions — Sessions with the most occurrences of the selected exception. Click a session ID to open the Application Overview filtered by that session.
- Top exception messages — Most common messages associated with the exception, useful when stack traces have variable message content.
- Occurrences over time — Line chart with the number of occurrences per time bucket.
Stack trace
- Most recent occurrence — The complete stack trace of the most recent occurrence of the selected exception, with an action to retrace obfuscated Android stack traces.
- Instrument your Android application and start sending data to your Elastic Stack.
- Install this content package in Kibana and open the [Android OTel] Application Overview dashboard.
For the full setup guide, refer to the EDOT Android getting started documentation.
- In the top search bar in Kibana, search for Dashboards. Alternatively, you can find the dashboards in the Integrations page under this package's Assets tab.
- In the search bar, type Android OTel.
- Open the [Android OTel] Application Overview dashboard and verify that data is populated.
- Select your application by clicking its name in the "Applications" table of the Overview section.
- (Optional) Click a version in the "Versions" table to narrow down your results.
- (Recommended) Click on values across the dashboard's panels to create filters and focus the dashboard on the specific data you'd like to inspect.
Within the [Android OTel] Application Overview dashboard, go to a panel that shows a list of spans and click on its "Explore in Discover" button.

Then expand the details for one of the spans in Discover.

You'll see the trace waterfall UI in there. You can expand it to become fullscreen and start drilling down to other details from there.

Within the [Android OTel] Application Overview dashboard, scroll down to the "Crashes" section to see the list of crashes by group ID. Click one group ID and select "View crash details" to see that crash's details in a separate dashboard.

In the [Android OTel] Exception Details dashboard, scroll down to the "Stack trace" section. Click the menu for the stack trace row, then select "Retrace stack trace".

Kibana opens the Android Crash Retrace page with the deobfuscated class names, methods, source files, and line numbers.

If you can't see the trace waterfall UI in Discover, as shown above, make sure that:
- Your Elastic Stack version is supported by this package.
- Your Kibana space's "solution view" is set to "Observability". As explained here.
If you do not see data in the dashboards, make sure that:
- Your Android application is sending telemetry to the Elastic Stack. You can verify this in Kibana's Discover by searching for
os.name: "Android"in thelogs-generic.otel*ortraces-generic.otel*index patterns. - The
session.idfield is present in the telemetry data. If you are not using EDOT Android, you may need to configure session tracking manually. - The
service.namefield is set correctly so the application name filter works as expected. - No filter on a crash group ID is active. The group ID is computed by Kibana, and the metric counters and trend charts cannot evaluate it, so such a filter shows them as empty while the tables keep their data. Open crash details through the "View crash details" drilldown instead.
- The time range selected in Kibana covers the period when your application was sending telemetry. If the default time range doesn't show any data, try expanding it (for example, to "Last 7 days" or "Last 30 days") to confirm data has been ingested.
If a stack trace cannot be retraced, make sure that its crash event contains app.build_id and that the matching R8 mapping data has been uploaded to the Elastic Stack. See the EDOT Android documentation for mapping upload and troubleshooting guidance.
For general help with the EDOT Android SDK, refer to EDOT Android troubleshooting.
This integration includes one or more Kibana dashboards that visualizes the data collected by the integration. The screenshots below illustrate how the ingested data is displayed.
Changelog
| Version | Details | Minimum Kibana version |
|---|---|---|
| 1.1.0 | Enhancement (View pull request) Redesign the Android application overview and exception details dashboards with collapsible sections, failed span rate and crash rate trend charts, affected installations and occurrences over time on exception details, and installation, session and crash counts on the application and version tables Bug fix (View pull request) Make every embedded data view copy identical so panels no longer fail with "Field _exception.message was not found" depending on load order Bug fix (View pull request) Store the "Retrace stack trace" drilldown in the shape Kibana 8.19 reads so it appears on every supported version |
9.5.0 9.4.5 9.3.9 8.19.20 |
| 1.0.0 | Breaking change (View pull request) Add Android stacktrace retracing and require Kibana versions that provide the client apps plugin |
9.5.0 9.4.5 9.3.9 8.19.20 |
| 0.1.3 | Bug fix (View pull request) Fix Top values aggregation on exception.message by adding a keyword runtime field after the field type changed to match_only_text in Elasticsearch OTel mappings |
9.1.0 8.19.0 |
| 0.1.2 | Enhancement (View pull request) Also match app.crash event name alongside device.crash in crash queries |
9.1.0 8.19.0 |
| 0.1.1 | Bug fix (View pull request) Update crash event name from app.crash to device.crash |
9.1.0 8.19.0 |
| 0.1.0 | Enhancement (View pull request) Initial draft of the package |
9.1.0 8.19.0 |