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 配置

配置属性类型默认

lock quarkus.camel.opentelemetry.encoding

设置是否需要编码标头名称。如果 OpenTelemetry 传播程序可能会设置与目标系统不兼容的格式,则很有用。例如,用于 JMS,其中规格强制标头名称是有效的 Java 标识符。

布尔值

false

lock quarkus.camel.opentelemetry.exclude-patterns

设置是否禁用与给定模式匹配的端点 URI 的追踪。模式可以采用以下格式:

1.端点 URI 完全匹配。e.g platform-http:/some/path

2.通配符匹配。例如 platform-http:*

3.与端点 URI 匹配的正则表达式。例如 platform-http:/prefix/.*

字符串

 

lock 构建时修复的配置属性。所有其他配置属性可在运行时覆盖。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.