You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Quarkus中启用Jaeger JDBC追踪?

解决Quarkus v0.21.2中JDBC操作未生成OpenTracing Span的问题

我来帮你排查一下这个问题,Quarkus v0.21.2属于比较早期的版本,OpenTracing对JDBC的自动追踪支持有一些特定的配置要求,我们一步步来解决:

1. 关键配置缺失:启用JDBC追踪

你目前的配置里没有开启JDBC操作的自动追踪,这是导致JDBC Span不出现的核心原因。在application.properties中添加以下配置:

# 确保OpenTracing全局启用
quarkus.opentracing.enabled=true
# 启用JDBC操作的自动追踪(这一步是关键!)
quarkus.opentracing.jdbc.enabled=true
# 保持Jaeger采样配置为const类型,确保100%采样便于测试
quarkus.jaeger.sampler-type=const
quarkus.jaeger.sampler-param=1
# 配置你的服务名称,方便在Jaeger中识别
quarkus.jaeger.service-name=your-rest-service

注意:你之前尝试修改采样类型为remote,但在测试阶段使用const类型并设置param=1能确保所有请求都被采样,更容易排查问题。

2. 移除不必要的@Traced注解

你在实体类上添加@Traced注解是无效的,因为Panache的CRUD操作底层是JDBC驱动层面的调用,实体类本身不会被OpenTracing直接拦截。如果需要手动追踪特定方法,可以在你的REST端点方法或者自定义的Panache Repository方法上添加@Traced,但自动追踪JDBC的核心还是靠上面的配置。

3. 确认依赖完整性

虽然你已经安装了quarkus-jdbc-postgresql,但早期Quarkus版本中,JDBC追踪依赖quarkus-agroal(数据源连接池),不过quarkus-jdbc-postgresql已经默认依赖了这个扩展,所以不需要额外安装,但可以检查一下你的pom.xml(或build.gradle)中是否包含相关依赖,确保没有被排除。

4. 验证Jaeger连接配置

确保Jaeger Agent在你的本地运行(默认端口6831),如果Jaeger Agent在其他地址,需要添加配置:

quarkus.jaeger.agent-host=your-jaeger-agent-host
quarkus.jaeger.agent-port=your-jaeger-agent-port

完成以上配置后,重启你的Quarkus应用,再调用REST端点,应该就能在Jaeger中看到包含REST Span和JDBC Span的完整追踪链路了。

内容的提问来源于stack exchange,提问作者Serkan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:33:49