Skip to content

Commit abaf799

Browse files
committed
Merge branch 'main' of github.com:elastic/opentelemetry into doc-java-faq-troubleshooting
2 parents 45ebf74 + 03731b2 commit abaf799

File tree

1 file changed

+56
-18
lines changed

1 file changed

+56
-18
lines changed

docs/_edot-sdks/java/migration.md

+56-18
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,68 @@ This documentation describes how to update applications that are currently using
1111

1212
## Advantages of using EDOT Java agent
1313

14-
- Allows to capture, send, transform and store data in an OpenTelemetry native way. This includes for example the ability to use all features of the OpenTelemetry SDK for manual tracing, data following semantic conventions or ability to use intermediate collectors and processors.
15-
- OpenTelemetry Java Instrumentation provides a broad coverage of libraries and frameworks.
16-
- EDOT Java is a fully compatible drop-in replacement for the OpenTelemetry Java Agent
17-
- No vendor lock-in through proprietary instrumentation or agent
14+
### OpenTelemetry-native Data
15+
16+
Allows to capture, send, transform and store data in an OpenTelemetry native way. This includes for example the ability to use all features of the OpenTelemetry SDK for manual tracing, data following semantic conventions or ability to use intermediate collectors and processors.
17+
18+
### Broad Coverage of Instrumentation
19+
20+
OpenTelemetry Java Instrumentation provides a [broad coverage of libraries, frameworks and applications](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/supported-libraries.md).
21+
22+
- [Libraries and frameworks](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/supported-libraries.md#libraries--frameworks)
23+
- [Application servers](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/supported-libraries.md#application-servers)
24+
25+
### Compatible Drop-in Replacement
26+
27+
The upstream OpenTelemetry Java Agent is a vendor-neutral implementation.
28+
EDOT Java is a distribution of it and is thus a
29+
fully compatible drop-in replacement of the upstream OpenTelemetry Java Agent.
30+
31+
Hence, exclusive features of EDOT aside, there is no vendor lock-in through proprietary instrumentation or agent.
1832

1933
## Limitations
2034

21-
- EDOT Java agent and OpenTelemetry Java instrumentation are only compatible with Java 8 and later.
22-
- Support for LDAP client instrumentation is not available yet.
23-
- Usages of the [Elastic APM Agent API](https://www.elastic.co/guide/en/apm/agent/java/current/public-api.html) require migration to OpenTelemetry API
24-
- for [Annotation API](https://www.elastic.co/guide/en/apm/agent/java/current/public-api.html#api-annotation) see [OpenTelemetry Annotations](https://opentelemetry.io/docs/zero-code/java/agent/annotations/).
25-
- for [Transaction API](https://www.elastic.co/guide/en/apm/agent/java/current/public-api.html#api-transaction) see [OpenTelemetry API](https://opentelemetry.io/docs/zero-code/java/agent/api/).
26-
- Note that migration of application code using these APIs and annotations is _not strictly required_ when deploying the EDOT agent. If not migrated, the spans, transactions and metrics that were previously explicitly created with those custom API calls and annotations, will no longer be generated. The broader OpenTelemetry instrumentation coverage may replace the need for some or all of these custom code changes.
27-
- By default, micrometer instrumentation is disabled and won't capture metrics, enabling requires to set `otel.instrumentation.micrometer.enabled=true`.
35+
### Supported Java Versions
36+
37+
EDOT Java agent and OpenTelemetry Java instrumentation are only compatible with Java 8 and later.
38+
39+
### Missing Instrumentations
40+
41+
Support for LDAP client instrumentation is not available in EDOT Java, yet.
42+
43+
### Central and Dynamic configuration
44+
45+
Currently EDOT Java does not have an equivalent of the [central configuration feature](https://www.elastic.co/guide/en/observability/current/apm-agent-configuration.html) that the Elastic APM Java agent supports. When using EDOT Java, all the configurations are static and should be provided to the application with other configurations, e.g. environment variables.
46+
47+
### Span compression
48+
49+
EDOT Java does not implement [span compression](https://www.elastic.co/guide/en/observability/current/apm-data-model-spans.html#apm-spans-span-compression).
50+
51+
### Breakdown metrics
52+
53+
EDOT Java is not sending metrics that power the [Breakdown metrics](https://www.elastic.co/guide/en/apm/guide/current/data-model-metrics.html#_breakdown_metrics).
54+
55+
### No remote attach
56+
57+
There is currently no EDOT Java equivalent for starting the agent with the [remote attach](https://www.elastic.co/guide/en/apm/agent/java/current/setup-attach-cli.html) capability. The `-javaagent:` option is the preferred startup mechanism. There is a migration path for starting the agent with [self attach](https://www.elastic.co/guide/en/apm/agent/java/current/setup-attach-api.html), which is to use [runtime attachment](https://github.com/open-telemetry/opentelemetry-java-contrib/blob/main/runtime-attach/README.md).
58+
59+
### Micrometer disabled by default
60+
61+
By default, micrometer instrumentation is disabled and won't capture metrics, enabling requires to set `otel.instrumentation.micrometer.enabled=true`.
2862

2963
## Migration steps
3064

31-
- review all pros/cons of this migration guide including the [differences in performance overhead](./overhead).
32-
- (optional) migrate usages of Elastic APM Agent API with OpenTelemetry API in the application source code.
33-
- remove the `-javaagent:` argument containing [Elastic APM Java agent](https://www.elastic.co/guide/en/apm/agent/java/current/index.html) from the JVM arguments
34-
- replace configuration options using [reference](#option-reference) below, see [configuration](./configuration) for ways to provide those.
35-
- add `-javaagent:` argument to the JVM arguments to use EDOT Java and restart the application or follow [Kubernetes instructions](./setup/k8s) if applicable.
36-
- there is currently no EDOT equivalent for starting the agent with the [remote attach](https://www.elastic.co/guide/en/apm/agent/java/current/setup-attach-cli.html) capability. The `-javaagent:` option is the preferred startup mechanism.
37-
- there is a migration path for starting the agent with [self attach](https://www.elastic.co/guide/en/apm/agent/java/current/setup-attach-api.html), which is to use [runtime attachment](https://github.com/open-telemetry/opentelemetry-java-contrib/blob/main/runtime-attach/README.md).
65+
1. **Review all pros/cons of this migration guide** including the [differences in performance overhead](./overhead).
66+
1. **(Optional) Migrate manual instrumentation API:** Usages of the [Elastic APM Agent API](https://www.elastic.co/guide/en/apm/agent/java/current/public-api.html) require migration to OpenTelemetry API:
67+
- for [Annotation API](https://www.elastic.co/guide/en/apm/agent/java/current/public-api.html#api-annotation) see [OpenTelemetry Annotations](https://opentelemetry.io/docs/zero-code/java/agent/annotations/).
68+
- for [Transaction API](https://www.elastic.co/guide/en/apm/agent/java/current/public-api.html#api-transaction) see [OpenTelemetry API](https://opentelemetry.io/docs/zero-code/java/agent/api/).
69+
70+
{: .note}
71+
Migration of application code using these APIs and annotations is _not strictly required_ when deploying the EDOT agent. If not migrated, the spans, transactions and metrics that were previously explicitly created with those custom API calls and annotations, will no longer be generated. The broader OpenTelemetry instrumentation coverage may replace the need for some or all of these custom code changes.
72+
1. **Replace configuration options** using the [Reference](#option-reference) below, see [Configuration](./configuration) for ways to provide those.
73+
1. **Replace Agent binary**
74+
- Remove the `-javaagent:` argument containing [Elastic APM Java agent](https://www.elastic.co/guide/en/apm/agent/java/current/index.html) from the JVM arguments
75+
- Add `-javaagent:` argument to the JVM arguments to use EDOT Java and restart the application or follow [Kubernetes instructions](./setup/k8s) if applicable
3876

3977
## Option reference
4078

0 commit comments

Comments
 (0)