Type to search.

Features of the EDOT Java Agent

Serverless Observability

Elastic Cloud Serverless projects are autoscaled environments, fully managed by Elastic and available on Elastic Cloud.

Availability

  • Generally available

    This functionality is generally available and ready for production usage.

Stack

The Elastic Stack includes Elastic's core products such as Elasticsearch, Kibana, Logstash, and Beats.

Availability

  • Generally available

    This functionality is generally available and ready for production usage.

Unless stated otherwise on the page, this functionality is available when your Elastic Stack is deployed on Elastic Cloud Hosted, Elastic Cloud Enterprise, Elastic Cloud on Kubernetes, and self-managed environments.

This documentation corresponds to the latest patch available for each minor version. If you're not using the latest patch, check the release notes for changes.

EDOT Java

The Elastic Distribution of OpenTelemetry (EDOT) Java SDK collects performance metrics, traces, and logs in OpenTelemetry format, and sends them to Elastic Observability.

Availability

  • Generally available

    This functionality is generally available and ready for production usage.

This documentation corresponds to the latest patch available for each minor version. If you're not using the latest patch, check the release notes for changes.

The EDOT Java agent is a distribution of OpenTelemetry Java Instrumentation agent. It inherits all the features of the OpenTelemetry Java Instrumentation to capture logs, metrics, and traces.

The EDOT Java agent also provides:

In addition to the features listed, refer to Supported technologies.

The EDOT Java agent includes the following resource attributes providers from opentelemetry-java-contrib:

The EDOT Java agent includes the Inferred Spans Extension from opentelemetry-java-contrib. This extension provides the ability to enhance the traces by creating spans from async-profiler data without the need of explicit instrumentation of corresponding spans.

This feature is turned off by default and can be activated by setting OTEL_INFERRED_SPANS_ENABLED to true. Refer to Inferred-spans documentation for configuration options.

The EDOT Java agent includes the Span Stacktrace Extension from opentelemetry-java-contrib.

This feature is activated by default and allows to capture a stacktrace for spans that have a duration above a threshold. The OTEL_JAVA_EXPERIMENTAL_SPAN_STACKTRACE_MIN_DURATION configuration option, which defaults to 5ms, allows to configure the minimal duration threshold. A negative value turns off the feature.

Refer to span-stacktrace for configuration options.

Experimental runtime metrics are turned on by default.

Set OTEL_INSTRUMENTATION_RUNTIME_TELEMETRY_EMIT_EXPERIMENTAL_TELEMETRY to false to turn them off.

For APM versions earlier than 9.5, Elasticsearch and Kibana work best with metrics provided in delta-temporality. Therefore, the EDOT Java changes the default value of OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE to DELTA. You can override this default if needed, though some provided Kibana dashboards will not work correctly if you do it.

You can manage EDOT Java configurations through the APM Agent Central Configuration feature in the Applications UI.

Refer to Central configuration for more information.

Universal Profiling integration provides the ability to correlate traces with profiling data from the Elastic universal profiler. This feature is off by default.

Refer to universal-profiling-integration for details and configuration options.

Baggage provides a key-value store that allows to store and propagate contextual information to traces, metrics, and logs across services.

This feature requires minimal code changes for creating and accessing the baggage using the OpenTelemetry Java API. Baggage entries can be automatically added to spans and logs through these configuration settings:

  • OTEL_JAVA_EXPERIMENTAL_SPAN_ATTRIBUTES_COPY_FROM_BAGGAGE_INCLUDE
  • OTEL_JAVA_EXPERIMENTAL_LOG_ATTRIBUTES_COPY_FROM_BAGGAGE_INCLUDE

Refer to baggage-processor and the baggage example for more details.

This feature is inherited from OpenTelemetry Java Instrumentation.

The EDOT Java agent includes support for extensions which is inherited from OpenTelemetry Java Instrumentation.

This allows to extend or modify the agent behavior and features without having to maintain a complete fork. A few examples are provided here.

Refer to OpenTelemetry Java Instrumentation extensions for more details.