Header background

Automatic and intelligent end-to-end observability for OpenTelemetry Java

Dynatrace PurePath seamlessly integrates OpenTelemetry data emitted by custom-instrumentation of Java source code. Dynatrace and OpenTelemetry work better together, ensuring observability at scale with automated instrumentation, continuous topology mapping, and causation-based AI.

Establishing end-to-end observability insights for today’s highly dynamic and exceedingly complex cloud-native production environments represents an enormous challenge to IT operations and SRE teams who are responsible for ensuring that hundreds, or even thousands, of running services meet with agreed upon SLOs. To avoid blind spots that get in the way of efficient root cause analysis and increase resolution times, such teams need an enterprise-scale platform that provides a holistic end-to-end view across all the services they are responsible for. Oftentimes, this involves the integration of OpenTelemetry data that’s used during development into production workflows.

Dynatrace and OpenTelemetry work better together

Today, Dynatrace is happy to announce OneAgent support for discovering and automatically capturing OpenTelemetry trace data for Java. This new capability further expands our OneAgent support for OpenTelemetry for Go as well as for OpenTracing for Java and enables the enrichment of OneAgent-collected observability data with additional context information coming from OpenTelemetry traces or metrics. Dynatrace allows you to unify tracing analytics across teams and hybrid-clouds, provides robust enterprise-scale and secure trace capture and processing, and Davis AI based answers across traces, metrics, logs, behavioral information and more.

OpenTelemetry with OneAgent enables you to:

  • Enrich monitoring data with project-specific additions (for example, custom instrumentation that adds business data or the capture of developer-specific diagnostics points).
  • Stitch together independent, unrelated transactions to extend end-to-end traces (for instance, by adding vendor-neutral custom instrumentation to gain business-process specific or domain-specific end-to-end transactional insights).

PurePath integrates OpenTelemetry Java data for enterprise-grade collection and contextual analytics

Dynatrace OneAgent enables organizations to automate their OpenTelemetry for Java data collection, extend and customize PurePath with additional observability data coming from OpenTelemetry, enrich the observability data with full-stack context, and analyze telemetry data at enterprise-scale to optimize applications and drive cloud automation. PurePath 4 unifies automatic instrumentation with custom- and pre-instrumentation based on OpenTelemetry and/or OpenTracing.

OneAgent automates data collection, gives you all the operational and business performance metrics you need, and puts OpenTelemetry data for Java into context, providing topology information to related infrastructure components.

Use-case example: WorldAtlas sample application

To showcase our new OpenTelemetry for Java capability, we’ve set up a sample application called WorldAtlas.

The worldatlas service represents the front-end, which serves data from the world service and ad service. The world service uses the custom web server Nano HTTPD (instead of the built-in Spring Boot server) to provide featured countries and connects a PostgreSQL database. The ad service provides sponsor notes that advertise different types of beer based on a beer-sample bucket served by Couchbase.

Enriching local monitoring data with project-specific additions

Using OpenTelemetry instrumentation, we’ve added project-specific metadata to the world service to provide further insights into country metadata for requests.

// Request attributes
Span.current()
        .setAttribute("featured_country.name", featuredCountry.getName())
        .setAttribute("featured_country.continent", featuredCountry.getContinent())
        .setAttribute("featured_country.life_expectancy", featuredCountry.getLifeExpectancy())
        ;

Dynatrace OneAgent automatically collects additional metadata, including span attributes, while ensuring the protection of sensitive data. These span attributes are not only seamlessly integrated into PurePath, they are also made available for further analyses in Dynatrace.

The analysis shows slow requests for the ad service when a specific continent is involved, in this case Africa. Such information can be crucial to IT operations and SRE teams for quickly identifying the culprit of slow web requests and triggering proper remediation action in a timely manner.

Stitching together independent, unrelated transactions

As mentioned above, the WorldAtlas sample application uses the custom web server Nano HTTPD which Dynatrace OneAgent does not support natively. This leads to incomplete traces and transactional insights in the PostgreSQL database not being linked correctly in PurePath, as shown below:

Once we’ve enabled OpenTelemetry for Java support, OneAgent will pick up spans for the world service via:

GlobalOpenTelemetry.getTracer("worldservice", "1.0.0");

OneAgent uses these OpenTelemetry spans to enrich the PurePath and to correctly link transactional insights into the PostgreSQL database which are provided by OneAgent out-of-the-box but haven’t been linked before.

Try it out today and share your feedback with us!

Already a Dynatrace customer?

You can start benefiting from the seamless integration today! To enable this Early Adopter feature, go to Settings  > Server-side service monitoring > Deep monitoring > OpenTelemetry and OpenTracing.

Note: This Early Adopter feature supports custom instrumentation using OpenTelemetry Java API version 1.0.0 and requires OneAgent version 1.215 and Dynatrace version 1.216.

Are you new to Dynatrace?

Start your Dynatrace free trial today and tame blind spots and close visibility gaps with OneAgent and additional context information coming from OpenTelemetry for Java.

We’ve set up a feedback channel at Dynatrace Community. Please use this channel to share your thoughts about the OpenTelemetry for Java capability. Your feedback is highly appreciated.

What’s next  

We’re currently expanding OneAgent OpenTelemetry capabilities with language support for .NET, PHP, and Node.js. We’re also constantly aligning our OneAgent support for OpenTelemetry for Go to stay compatible with the latest OpenTelemetry for Go versions. Please have a look at the OneAgent release notes for details on supported OpenTelemetry for Go versions.

Are you interested in ingesting distributed traces from third-party sources emitting OpenTelemetry traces where no OneAgent can be deployed? If so, please have a look at our current trace ingest preview.