我试图添加一些自定义信息到opentelemetry行李,但没有找到它在Jaeger用户界面的一部分,显示的信息。我是否可以配置Quarkus opentelemetry从行李中发送自定义数据?或者是否有任何方法可以默认包括这一点?我在我的application.properties中有这个设置(应该是默认的)。基本上,我希望了解如何将自定义ID(相关ID或messageId)添加到跟踪信息。有什么想法吗?提前感谢!
mrphzbgm1#
是,在Quarkus中,使用OpenTelemetry默认值W3C自动传播行李。假设您使用的是HTTP通信...有多种方法可以丰富你的包袱。这是一个使用Quarkus 3.x的示例:
@InjectBaggage 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;
// ...
try (final Scope scope = baggage.toBuilder()
.put("legumeId", legumeItem.getId()) // some data you need to send
.build()
.makeCurrent()) {
// ... send things to other service
}
字符串另一方面,要检索行李属性,您可以:
@InjectBaggage 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()));
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。我不确定耶格能不能展示出来。最有可能的是,它永远不会到达那里,因为它应该在服务之间的调用的头中传播,而不是到收集器端。
aemubtdh2#
Baggage是一个运行时的概念,它的目的是使应用程序在分布式请求的不同跳上可以访问某些信息。使用OpenTelemetry,行李可以在没有任何跟踪的情况下工作。如果希望在跟踪中捕获行李,则需要通过span.setAttribute显式地执行此操作。
span.setAttribute
2条答案
按热度按时间mrphzbgm1#
是,在Quarkus中,使用OpenTelemetry默认值W3C自动传播行李。假设您使用的是HTTP通信...
有多种方法可以丰富你的包袱。这是一个使用Quarkus 3.x的示例:
字符串
另一方面,要检索行李属性,您可以:
型
请注意,OpenTelemetry是与跟踪不同的API。它应该用于传输应用程序context data。我不确定耶格能不能展示出来。最有可能的是,它永远不会到达那里,因为它应该在服务之间的调用的头中传播,而不是到收集器端。
aemubtdh2#
Baggage是一个运行时的概念,它的目的是使应用程序在分布式请求的不同跳上可以访问某些信息。使用OpenTelemetry,行李可以在没有任何跟踪的情况下工作。如果希望在跟踪中捕获行李,则需要通过
span.setAttribute
显式地执行此操作。