With the merge of OpenTracing and OpenCensus, OpenTelemetry holds the future. OpenTelemetry consists of Tracing, Logging, Metrics and Baggage support.
This tracing
directory only focuses on the Tracing aspect (including Baggage use in this context).
This specification directly expose the Tracing APIs from OpenTelemetry and then provide CDI and Jakarta RESTful Web Services integration. The https://github.com/open-telemetry/opentelemetry-java/tree/main/api/all/src/main/java/io/opentelemetry/api/trace Tracer APIs from OpenTelemetry will be exposed. This specification does not plan to reinvent the wheels but rather exposes OpenTelemetry APIs due to the following reasons:
-
OpenTelemetry is a specification under CNCF
-
OpenTelemetry is widely adopted by different vendors and languages
-
OpenTelemetry has Java API and annotations that are readily to be used
-
OpenTelemetry is active and open for the collaboration with us
-
OpenTelemetry is platform technology and we use the effort to make Java libraries to be used directly instead of reinventing our own APIs
-
OpenTelemetry has broad vendor support. Many observability vendors are contributing to the spec, providing a guarantee that traces can be used out of the box, with minimal integrations.
-
OpenTelemetry is serious with backward incompatible changes and communicates openly
MicroProfile Telemetry pulls in a particular version of OpenTelemetry. Whenever we upgrade, we evaluate the backward compatibility status ourselves as well.
MicroProfile Telemetry pulls in OpenTelemetry Tracing and integrate with CDI and Jakarta RESTful Web Services. It provides three types of instrumentation:
-
Automatic Instrumentation
Jakarta RESTful Web Services (server and client), and MicroProfile REST Clients are automatically enlisted to participate in distributed tracing without code modification as specified in the Tracing API.
-
Manual Instrumentation
Explicit manual instrumentation can be added into a MicroProfile application using annotation or programmatic lookup.
-
Agent Instrumentation
Implementations are free to support the OpenTelemetry Agent Instrumentation.
By default, MicroProfile Telemetry Tracing is off.
In order to enable any of the Tracing aspects, the configuration otel.sdk.disabled=false
must be specified in any of the configuration sources available via MicroProfile Config.
This property is read once when the application is starting.
Any changes afterwards will not take effect unless the application is restarted.