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

Java Spring应用集成Jaeger后无法在Jaeger UI中看到服务名求助

解决Spring集成Jaeger链路追踪无法显示服务及采样策略错误的问题

看起来你遇到的问题核心是旧版Jaeger客户端与新版Jaeger Collector的协议不兼容,再加上手动配置Tracer时的细节疏漏。我来一步步帮你梳理解决:

1. 替换为最新的Jaeger Spring Starter依赖

你当前使用的com.uber.jaeger是旧版客户端,现在Jaeger已经迁移到io.jaegertracing组织,并且提供了适配Spring Boot的自动配置依赖,能大幅减少手动配置的错误。先把你的项目依赖替换为以下内容:

Maven 依赖:

<dependency>
    <groupId>io.opentracing.contrib</groupId>
    <artifactId>opentracing-spring-jaeger-starter</artifactId>
    <version>3.2.2</version> <!-- 建议使用最新稳定版 -->
</dependency>

Gradle 依赖:

implementation 'io.opentracing.contrib:opentracing-spring-jaeger-starter:3.2.2'

2. 移除手动Tracer Bean,改用配置文件自动配置

手动编写jaegerTracer() Bean很容易因为版本适配问题出错,Spring Starter会帮我们自动完成Tracer的初始化。只需要在application.properties(或application.yml)中添加以下配置:

application.properties:

# 服务名称
spring.application.name=pilot-tracking

# Jaeger核心配置
opentracing.jaeger.service-name=${spring.application.name}
opentracing.jaeger.http-sender.url=http://localhost:14268/api/traces
opentracing.jaeger.sampler.type=probabilistic
opentracing.jaeger.sampler.param=1.0 # 测试阶段设置100%采样,生产环境可按需调整

配置完成后,直接删掉你手动编写的jaegerTracer()方法即可,Spring会自动生成符合要求的Tracer实例,并且默认使用HTTP协议与Collector通信,避开旧版TChannel协议的兼容性问题。

3. 验证Jaeger容器运行状态

你启动Jaeger容器的命令是正确的,但可以先确认容器是否正常运行:

docker ps | grep jaegertracing/all-in-one

确保14268(HTTP Sender端口)和16686(UI端口)都正常映射。

4. 重新启动应用并检查Jaeger UI

启动你的Spring应用后,先触发一些业务请求(比如调用API接口),因为Jaeger只有接收到链路数据后,才会在UI中显示服务。之后访问http://localhost:16686,在服务下拉列表中就能找到pilot-tracking了。

关于采样策略错误的原因解释

你访问5778端口时遇到的错误,是因为旧版Jaeger客户端默认使用TChannel协议请求采样策略,但新版Jaeger Collector已经不再支持TChannel的SamplingManager::getSamplingStrategy接口。换成Spring Starter后,客户端会自动使用HTTP协议获取采样策略,这个问题就会自然消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:17:59