问题描述
我正在通过opentracing集成来处理quarkus和jaeger。运行jaeger服务器和https://github.com/quarkusio/quarkus-quickstarts/tree/master/opentracing-quickstart存储库后,我在http:// localhost:16686 / search找到了跟踪。但是我只找到Resource类,参数和Process名称,但是跟踪详细信息展开中未显示“ Logs”。
步骤很简单:
1。运行Jaeger服务器docker run --rm=true --name erp_jaeger_server -e COLLECTOR_ZIPKIN_HTTP_PORT=9411 -p 5775:5775/udp -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778 -p 16686:16686 -p 14268:14268 -p 9411:9411 jaegertracing/all-in-one:latest
-
克隆示例存储库并运行它
https://github.com/quarkusio/quarkus-quickstarts/tree/master/opentracing-quickstart
(无需进一步配置) -
运行->
mvn quarkus:dev
-
访问
http://localhost:8080/hello/
5。在jaeger ui'http:// localhost:16686 /'上浏览
6。找到了跟踪标记和过程详细信息,但是未显示详细内容Log.info('hello')
我尝试使用@Slfj,但结果相同
谢谢。
解决方法
默认情况下,OpenTracing不会自动记录到跨度日志中,只有Jaeger认为需要对其进行记录并且需要进行跟踪的重要消息才会出现:)。这个想法是将跟踪和日志管理Check this GitHub discussion之间的职责分开。
另一种选择是使用集中式日志管理,并将traceId和spanId打印到您的日志中,以进行故障排除以及关联日志和跟踪。
,如iabughosh所说,对jaeger的主要关注是可追溯性,监视和性能,而不是用于日志记录。
无论如何,我发现使用@traced Bean注入可以将标签插入当前范围,该标签将打印在Jaeger UI上。此示例将对exsection的前4行添加到Tag seccion中。 (我在全局ExceptionHandler上使用它来添加有关该错误的更多信息):
public abstract class MyExceptionHandler {
@Inject
io.opentracing.Tracer tracer;
/**
* Will trace the message at jaeger metrics service,only for monitoring and profiling use,not for Logger.
* @param e
*/
protected void monitorTrace(Exception e) {
if(tracer!= null && e!=null) {
StringBuffer sb = new StringBuffer();
sb.append(e.getCause()+ "\n");
int deep = 3;
for(int i=0; i< deep;i++) {
sb.append(e.getStackTrace()[i]+ "\n");
}
tracer.activeSpan().setTag("stack ",sb.toString());
}
}
}
,您将在JaegerUI上看到小的stacktrace。
希望有帮助