java Quarkus Opentelemetry行李

tyg4sfes  于 10个月前  发布在  Java
关注(0)|答案(2)|浏览(101)

我试图添加一些自定义信息到opentelemetry行李,但没有找到它在Jaeger用户界面的一部分,显示的信息。我是否可以配置Quarkus opentelemetry从行李中发送自定义数据?或者是否有任何方法可以默认包括这一点?
我在我的application.properties中有这个设置(应该是默认的)。基本上,我希望了解如何将自定义ID(相关ID或messageId)添加到跟踪信息。
有什么想法吗?提前感谢!

mrphzbgm

mrphzbgm1#

是,在Quarkus中,使用OpenTelemetry默认值W3C自动传播行李。假设您使用的是HTTP通信...
有多种方法可以丰富你的包袱。这是一个使用Quarkus 3.x的示例:

@Inject
Baggage baggage;

// ...

try (final Scope scope = baggage.toBuilder()
        .put("legumeId", legumeItem.getId()) // some data you need to send
        .build()
        .makeCurrent()) {

    // ... send things to other service
}

字符串
另一方面,要检索行李属性,您可以:

@Inject
Baggage baggage;

// ...

log.info("legumeId: {}", baggage.getEntryValue("legumeId"));
// or, to see all the map entries:
baggage.asMap().forEach((k, v) -> log.info("baggage: {}={}", k, v.getValue()));


请注意,OpenTelemetry是与跟踪不同的API。它应该用于传输应用程序context data。我不确定耶格能不能展示出来。最有可能的是,它永远不会到达那里,因为它应该在服务之间的调用的头中传播,而不是到收集器端。

aemubtdh

aemubtdh2#

Baggage是一个运行时的概念,它的目的是使应用程序在分布式请求的不同跳上可以访问某些信息。使用OpenTelemetry,行李可以在没有任何跟踪的情况下工作。如果希望在跟踪中捕获行李,则需要通过span.setAttribute显式地执行此操作。

相关问题