必须用docker run -d --name jaeger --rm -p 6831:6831/udp -p 16686:16686 jaegertracing/all-in-one:latest启动Jaeger后端,再通过docker run --rm -it --network="host" -p 8080-8083:8080-8083 jaegertracing/example-hotrod:1.6 all --jaeger-agent.host-port=127.0.0.1:6831启动HotROD应用,访问https://www.php.cn/link/cbb686245ece57c9827c4bc0d0654a8e触发请求,即可在https://www.php.cn/link/13941bddb1399810f387f38dc7c775f0中分析端到端调用链与耗时。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在 Windows 或 macOS 上快速启动 Jaeger 链路追踪环境,完成一次真实请求的端到端耗时分析,必须绕过手动编译、依赖安装和配置文件调试——直接用容器启动全功能 Jaeger 实例,并接入可生成真实调用链的 HotROD 示例应用。
启动 Jaeger 后端服务(All-in-One)
这一步只需一条命令,Jaeger 官方 all-in-one 镜像会自动拉取并运行收集器、查询服务和 Web UI,所有组件共享内存存储,无需额外数据库配置。
打开终端(Windows 用户请使用 PowerShell 或 WSL2;macOS 用户用 Terminal),执行:
docker run -d --name jaeger --rm -p 6831:6831/udp -p 16686:16686 jaegertracing/all-in-one:latest
注意:不要加 bash 尾缀,否则容器会立即退出。该镜像默认以守护进程模式运行,--rm 确保容器停止后自动清理,避免残留。
等待 3 秒后,在浏览器中访问 https://www.php.cn/link/13941bddb1399810f387f38dc7c775f0,若看到 Jaeger UI 登录页(Service 下拉框为空),说明后端已就绪。
启动 HotROD 演示应用(生成真实调用链)
HotROD 是 Jaeger 官方提供的端到端演示系统,含 frontend、customer、route、driver 四个服务,自动发起跨服务 HTTP/RPC 调用并上报 Span,天然适配 Jaeger Agent 的 UDP 接收端口。
执行以下命令启动 HotROD:
方法一(推荐,自动网络连接):
docker run --rm -it --network="host" -p 8080-8083:8080-8083 jaegertracing/example-hotrod:1.6 all --jaeger-agent.host-port=127.0.0.1:6831
方法二(适用于 Docker Desktop for Mac/Windows,需显式链接):
先确认 Jaeger 容器名是 jaeger(上一步用了 --name jaeger),再运行:
docker run --rm -it --link jaeger:jaeger -p 8080-8083:8080-8083 jaegertracing/example-hotrod:1.6 all --jaeger-agent.host-port=jaeger:6831
⚠️ 若看到 connection refused 错误,说明 HotROD 无法连通 Jaeger Agent —— 检查是否遗漏 --link 或 --network="host",且确保 Jaeger 容器仍在运行(docker ps 查看)。
配置 OpenClaw 多提供商认证与 OpenAI Codex OAuth 备用方案,实现自动模型切换,适用于多 OpenAI Codex 账户设置。
触发请求并定位高耗时 Span
第一步:在浏览器打开 https://www.php.cn/link/cbb686245ece57c9827c4bc0d0654a8e,点击任意司机头像(如 “Trom Chocolatier”)发起一次完整调用链。
第二步:回到 Jaeger UI(https://www.php.cn/link/13941bddb1399810f387f38dc7c775f0),在 Service 下拉框选择 frontend → 点击 Find Traces。
第三步:在结果列表中,找到最新一条 trace(耗时最长的通常排第一),点击它进入 Trace Detail View。
第四步:观察右侧火焰图,垂直方向为调用层级,水平长度为耗时。重点找颜色最深、条形最长的 Span——例如 mysql SELECT 耗时 304ms,或 redis:GetDriver 多次累计超 100ms。
第五步:点击该 Span,右侧面板展开其详情,查看 Tags 中的 http.status_code、db.statement 或 redis.command,确认是否为慢 SQL 或高频 Redis 命令。
对比分析两个请求的 Span Exclusive Time
Exclusive Time(独占耗时) = Span 总耗时 − 所有子 Span 耗时之和,反映该服务自身计算或资源阻塞时间,而非网络或下游延迟。
① 在 Trace Detail View 中,找到第一个 frontend Span(顶部蓝色条),记录其 Duration 和 Exclusive Time 值。
② 再次点击页面右上角 Refresh,触发一次新请求,等几秒后返回同一 trace 列表,点击新 trace 中的同名 frontend Span。
③ 对比两次的 Exclusive Time:若第二次值显著升高(如从 12ms → 89ms),说明 frontend 本地处理逻辑出现瓶颈,与下游无关。
④ 此时可直接下钻该 Span 的 Logs 标签页,查看是否有 WARN 或 ERROR 日志行 —— Jaeger 会自动关联 OpenTelemetry Collector 注入的日志字段,无需跳转日志平台。

















