OpenTelemetry
JVM since2.1.0 Native since2.1.0
Distributed tracing using OpenTelemetry
Maven coordinates
Or add the coordinates to your existing project:
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-opentelemetry</artifactId>
</dependency>
Check the User guide for more information about writing Camel Quarkus applications.
Usage
The extension automatically creates a Camel OpenTelemetryTracer
and binds it to the Camel registry.
In order to send the captured traces to a tracing system, you need to configure some properties within application.properties
like those below.
# Identifier for the origin of spans created by the application
quarkus.application.name=my-camel-application
# For OTLP
quarkus.opentelemetry.tracer.exporter.otlp.endpoint=http://localhost:55680
# For Jaeger
quarkus.opentelemetry.tracer.exporter.jaeger.endpoint=http://localhost:14268/api/traces
Note that you must add a dependency to the OpenTelemetry exporter that you want to work with. At present, Quarkus has support for Jaeger and the OpenTelemetry Protocol Specification (OTLP).
For Jaeger:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-opentelemetry-exporter-jaeger</artifactId>
</dependency>
For OTLP:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-opentelemetry-exporter-otlp</artifactId>
</dependency>
Refer to the Quarkus OpenTelemetry guide for a full list of configuration options.
Route endpoints can be excluded from tracing by configuring a property named quarkus.camel.opentelemetry.exclude-patterns
in application.properties
. For example:
# Exclude all direct & netty-http endpoints from tracing
quarkus.camel.opentelemetry.exclude-patterns=direct:*,netty-http:*
Additional Camel Quarkus configuration
Configuration property | Type | Default |
---|---|---|
Sets whether header keys need to be encoded |
|
|
Sets whether to disable tracing for endpoint URIs that match the given patterns. The pattern can take the following forms: 1. An exact match on the endpoint URI. E.g platform-http:/some/path 2. A wildcard match. E.g platform-http:* 3. A regular expression matching the endpoint URI. E.g platform-http:/prefix/.* |
|
Configuration property fixed at build time. All other configuration properties are overridable at runtime.