2.59. OpenTelemetry
使用 OpenTelemetry 的分布式追踪
2.59.1. 内部是什么
有关使用和配置详情,请参阅上述链接。
2.59.2. Maven 协调
在 code.quarkus.redhat.com 上使用此扩展创建一个新项目
或者将协调添加到现有项目中:
<dependency> <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-opentelemetry</artifactId> </dependency>
2.59.3. 使用方法
扩展会自动创建一个 Camel OpenTelemetry Tracer
,并将其绑定到 Camel registry。
要将捕获的 trace 发送到追踪系统,您需要在 application.properties
中配置一些属性,如下所示。
# 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:4317 # For Jaeger quarkus.opentelemetry.tracer.exporter.jaeger.endpoint=http://localhost:14250
请注意,您必须在要使用的 OpenTelemetry exporter 中添加依赖项。
目前,Quarkus 支持 Jaeger 和 OpenTelemetry 协议规格(OTLP)。
对于 Jaeger:
<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-opentelemetry-exporter-jaeger</artifactId> </dependency>
对于 OTLP:
<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-opentelemetry-exporter-otlp</artifactId> </dependency>
有关配置选项的完整列表,请参阅 Quarkus OpenTelemetry 指南。
通过在 application.properties
中配置名为 quarkus.camel.opentelemetry.exclude-patterns
的属性,可以从追踪中排除路由端点。例如:
# Exclude all direct & netty-http endpoints from tracing quarkus.camel.opentelemetry.exclude-patterns=direct:*,netty-http:*
2.59.3.1. 追踪 CDI bean 方法执行
当从 Camel 路由检测 CDI bean 方法时,您应该为此类方法添加 io.opentelemetry.extension.annotations.WithSpan
。使用 @WithSpan
注解的方法将创建一个新的 Span,并与当前 Trace 上下文建立任何所需的关系。
例如,若要从 Camel 路由检测 CDI bean,首先请确保使用 @WithTrace
标注了适当的方法。
@ApplicationScoped @Named("myBean") public class MyBean { @WithSpan public String greet() { return "Hello World!"; } }
接下来,使用 Camel 路由中的 bean。
为确保记录的 span 序列正确,您必须使用 full to ("bean:")
端点 URI,而不是短的 .bean ()
EIP DSL 方法。
public class MyRoutes extends RouteBuilder { @Override public void configure() throws Exception { from("direct:executeBean") .to("bean:myBean?method=greet"); } }
Quarkus OpenTelemetry 指南中的 CDI 检测的更多信息。
2.59.4. 其他 Camel Quarkus 配置
配置属性 | 类型 | 默认 |
---|---|---|
设置是否需要编码标头名称。如果 OpenTelemetry 传播程序可能会设置与目标系统不兼容的格式,则很有用。例如,用于 JMS,其中规格强制标头名称是有效的 Java 标识符。 |
|
|
设置是否禁用与给定模式匹配的端点 URI 的追踪。模式可以采用以下格式: 1.端点 URI 完全匹配。e.g platform-http:/some/path 2.通配符匹配。例如 platform-http:* 3.与端点 URI 匹配的正则表达式。例如 platform-http:/prefix/.* |
|
构建时修复的配置属性。所有其他配置属性可在运行时覆盖。