微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在Jaeger ui上获取详细的跟踪消息使用quarkus

如何解决无法在Jaeger ui上获取详细的跟踪消息使用quarkus

我正在通过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

  1. 克隆示例存储库并运行它 https://github.com/quarkusio/quarkus-quickstarts/tree/master/opentracing-quickstart (无需进一步配置)

  2. 运行-> mvn quarkus:dev

  3. 访问http://localhost:8080/hello/

5。在jaeger ui'http:// localhost:16686 /'上浏览

6。找到了跟踪标记和过程详细信息,但是未显示详细内容Log.info('hello')

enter image description here

我尝试使用@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。

enter image description here

希望有帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。