Quarkus OpenTracing能否同时将追踪信息写入服务日志与Jaeger实例?
在Quarkus中同时将OpenTracing追踪信息写入服务日志和Jaeger实例
完全可以实现同时把追踪信息输出到服务日志并发送给独立Jaeger实例,以下是具体配置步骤:
一、配置追踪ID写入服务日志
Quarkus的OpenTracing扩展会自动将traceId和spanId注入到日志的MDC(映射诊断上下文)中,只需修改日志格式即可将这些信息附加到每条日志里:
- 修改
application.properties,配置控制台日志格式(以默认的JBoss Logging为例):quarkus.log.console.format=%d{HH:mm:ss} %-5p traceId=%X{traceId}, spanId=%X{spanId} [%c{2.}] (%t) %s%e%n - 如果使用JSON格式日志(比如
quarkus-logging-json扩展),可以添加自定义字段:
配置后,每条日志都会自动带上当前请求的追踪ID,方便后续关联日志与Jaeger中的追踪链路。quarkus.log.json.additional-field."traceId"=%X{traceId} quarkus.log.json.additional-field."spanId"=%X{spanId}
二、配置Jaeger实例收集追踪数据
- 引入Quarkus Jaeger扩展:
如果用Maven,在pom.xml中添加依赖;如果用Gradle,添加对应的依赖项(直接使用Quarkus官方提供的quarkus-opentracing-jaeger扩展即可)。 - 在
application.properties中配置Jaeger连接信息:
根据实际环境调整# 服务标识,会在Jaeger中显示 quarkus.jaeger.service-name=your-service-name # Jaeger的HTTP接收端点 quarkus.jaeger.endpoint=http://your-jaeger-host:14268/api/traces # 采样策略,const表示全采样,适合测试环境 quarkus.jaeger.sampler-type=const quarkus.jaeger.sampler-param=1endpoint地址和采样策略即可。
完成以上配置后,Quarkus会同时将追踪数据发送到Jaeger实例,并且在服务日志中输出包含traceId和spanId的日志条目,两者互不影响,可同时生效。
内容的提问来源于stack exchange,提问作者sg2000
相关产品推荐
相关产品推荐

