无法获取 jaeger ui 上的详细跟踪消息(使用 quarkus)
unable to obtain detail trace message on jaeger ui (using quarkus)
我正在通过 opentracing 集成玩 quarkus 和 jaeger。在 运行 jaeger 服务器和 https://github.com/quarkusio/quarkus-quickstarts/tree/master/opentracing-quickstart 存储库之后,我在 http://localhost:16686/search 找到了踪迹。但我只找到了资源 class、参数和进程名称,但跟踪详细信息展开时未显示“日志”。
步骤很简单:
1.Run 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
克隆示例 repo 并 运行 它
https://github.com/quarkusio/quarkus-quickstarts/tree/master/opentracing-quickstart
(无进一步配置)
运行->mvn quarkus:dev
访问http://localhost:8080/hello/
5.Explore 在 jaeger ui 'http://localhost:16686/'
6.Found 跟踪标签和流程详细信息,但未显示详细内容 Log.info('hello')
我尝试使用@Slfj,但我得到了相同的结果
提前致谢。
默认情况下,OpenTracing 不会自动记录到 span 日志中,只有 Jaeger 认为需要记录并且需要进行跟踪的重要消息才会在那里:)。这个想法是将跟踪和日志管理之间的职责分开,Check this GitHub discussion。
另一种方法是使用集中式日志管理并将 traceId 和 spanId 打印到您的日志中以进行故障排除以及关联日志和跟踪。
正如iabughosh所说,jaeger的主要关注点是可追溯性、监控和性能,而不是日志记录。
无论如何,我发现使用@traced Bean 注入你可以在当前跨度中插入一个标签,它将被打印在 Jaeger UI 上。这个例子将excpetion的前4行添加到标签部分。 (我在我的全局 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 中看到小堆栈跟踪。
希望有所帮助
我正在通过 opentracing 集成玩 quarkus 和 jaeger。在 运行 jaeger 服务器和 https://github.com/quarkusio/quarkus-quickstarts/tree/master/opentracing-quickstart 存储库之后,我在 http://localhost:16686/search 找到了踪迹。但我只找到了资源 class、参数和进程名称,但跟踪详细信息展开时未显示“日志”。
步骤很简单:
1.Run 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
克隆示例 repo 并 运行 它
https://github.com/quarkusio/quarkus-quickstarts/tree/master/opentracing-quickstart
(无进一步配置)运行->
mvn quarkus:dev
访问
http://localhost:8080/hello/
5.Explore 在 jaeger ui 'http://localhost:16686/'
6.Found 跟踪标签和流程详细信息,但未显示详细内容 Log.info('hello')
我尝试使用@Slfj,但我得到了相同的结果
提前致谢。
默认情况下,OpenTracing 不会自动记录到 span 日志中,只有 Jaeger 认为需要记录并且需要进行跟踪的重要消息才会在那里:)。这个想法是将跟踪和日志管理之间的职责分开,Check this GitHub discussion。
另一种方法是使用集中式日志管理并将 traceId 和 spanId 打印到您的日志中以进行故障排除以及关联日志和跟踪。
正如iabughosh所说,jaeger的主要关注点是可追溯性、监控和性能,而不是日志记录。
无论如何,我发现使用@traced Bean 注入你可以在当前跨度中插入一个标签,它将被打印在 Jaeger UI 上。这个例子将excpetion的前4行添加到标签部分。 (我在我的全局 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 中看到小堆栈跟踪。
希望有所帮助