jaeger v2.17.0 版本更新介绍
发布日期: 2026-03-30
版本号: v2.17.0
后端部分主要包括多项错误修复与改进,如优化定时器解析、修正内存错误过滤、增强监控功能及自追踪机制;实验性功能方面,点击House优化查询性能,MCP服务器增加系统提示与租户限制;CI持续集成改进涉及缓存修复与测试执行工具升级;代码重构将参数转换工具移出存储API;文档更新新增ADR说明。
UI部分新增了Span详情侧边视图及Trace日志聚合功能;修复了XSS安全漏洞、暗色模式显示问题及多项界面交互错误;实验性功能推进了侧边面板与视图模式的集成;CI改进确保工作流稳定性;代码重构完成了路由库升级、状态管理迁移及组件函数化改造。
更新内容 (中文)
后端变更
🐞 缺陷修复、小幅改进
- 在指标初始化中实现计时器时长桶解析(@junaiddshaukat 在 #7951)
- 修复(内存):在链路搜索中接受字符串形式的错误过滤器(@YoungHypo 在 #8217)
- 功能(监控):恢复 grafana 到 spm docker-compose 示例(adr-007 步骤 1)(@abhay1999 在 #8215)
- 通过 otel collector 遥测工厂实现安全的自跟踪(@yurishkuro 在 #8208)
- 修复:防护 addjitter 函数以避免零/亚纳秒时长导致的 panic(修复 #8149)(@shivamtiwari3 在 #8178)
- 修复:时钟偏移调整器也调整结束时间戳(@Audio431 在 #8170)
- 更新 mcp server readme(@yurishkuro 在 #8163)
- 功能(查询):将 metricsstorage 暴露给 ui 作为存储能力(@hharshhsaini 在 #8154)
🚧 实验性功能
- [clickhouse] 优化 spans 表以实现更快的搜索(@mahadzaryab1 在 #8258)
- [jaegermcp] 为 llm 客户端添加系统提示指令(adr 阶段 4)(@lopster568 在 #8253)
- 修复(jaegermcp):强制执行响应限制(@abhay1999 在 #8242)
- 功能(监控):go sdk 仪表盘生成器 — adr-007 步骤 2a(@abhay1999 在 #8216)
- [clickhouse][基准测试] 添加来自基准测试的初步结果(@mahadzaryab1 在 #8181)
- [jaegermcp] 启用租户强制执行(@whiplashvin 在 #8203)
- [jaegermcp] 在 mcp 处理程序中强制执行配置驱动的限制(@rite7sh 在 #8194)
- [jaegermcp] 修复 mcp server 与 claude code 的集成(@yurishkuro 在 #8191)
- [clickhouse] 修复 trace id 时间戳表模式 / 查询以对 trace_ids 进行去重(@mahadzaryab1 在 #8180)
- [clickhouse] 通过添加开始和结束时间过滤器优化获取链路查询(@mahadzaryab1 在 #8152)
👷 CI 改进
- 修复:创建可重用的 setup-go action 以修复 ci 工作流中的 go 模块缓存(@Copilot 在 #8257)
- 使用 gotestsum 执行所有测试(@Copilot 在 #8256)
- 修复(ci):更正指标快照比较噪声(@Copilot 在 #8246)
- Ci(监控):为 go sdk 生成器添加仪表盘同步检查(adr-007 步骤 3)(@abhay1999 在 #8240)
- 修复(ci):为 prepare-docker-buildx 中拉取 registry:2 添加重试逻辑(@Copilot 在 #8236)
- [ci] 改进 e2e 工作流文档和测试模式命名(@yurishkuro 在 #8195)
- 修复 oke demo prometheus 升级(@danish9039 在 #8183)
- [test] 添加作用域名称和版本集成测试(@Manik2708 在 #8138)
- 修复 ci 并行模式检测针对无团队访问权限的组织成员(@yurishkuro 在 #8182)
- 撤回 pr8106 的指标工作流变更(@yurishkuro 在 #8175)
- Ci:修复 ci 摘要报告发布工作流中的 pr 解析(@yurishkuro 在 #8159)
- 不在推送到主分支时运行 dependency-review(@yurishkuro 在 #8158)
- 在 pr 评论中包含指标变更详情(@yurishkuro 在 #8153)
- 修复(ci):防止过时的覆盖率基线在主分支运行中持续存在(@Copilot 在 #8157)
- 修复:在 version-check 二进制路径中为调试构建使用 $(suffix)(@Copilot 在 #8148)
⚙️ 重构
- 将参数类型转换工具从 tracestore api 移至 v1adapter(@Copilot 在 #8255)
- 功能(监控):完成 adr-007 步骤 2b 仪表盘升级(@YoungHypo 在 #8241)
📖 文档
- Adr-007:grafana 仪表盘现代化及 spm 示例验证(@yurishkuro 在 #8214)
- 添加 badger adr(@yurishkuro 在 #8166)
📊 UI 变更
✨ 新功能
- 允许在侧面板中查看 span 详情,而不是内联视图(@yurishkuro 在 #3578)
- [功能]:添加链路日志视图以聚合所有 span 事件(@SoumyaRaikwar 在 #3563)
🐞 缺陷修复、小幅改进
- 🔒 [安全修复] 用 textContent 替换 innerHTML 以缓解 XSS 风险(@jkowall 在 #3651)
- 将 plexus 演示路由添加到主 ui(仅开发用,
/plexus-demo)(@Copilot 在 #3656) - 修复 plexus 演示(@yurishkuro 在 #3654)
- 清理不完整图标、文本和工具提示的显示(@yurishkuro 在 #3619)
- 撤回 “refactor(plexus): 将 digraph 迁移到函数式组件”(@yurishkuro 在 #3600)
- 撤回 “chore: 在开发模式下动态获取后端配置 (#3541)"(@yurishkuro 在 #3599)
- 修复:质量指标页面上的深色模式无法正常工作(@gulshank0 在 #3583)
- 修复:在 url 中将大写链路 id 标准化为小写(@samar-703 在 #3485)
- 修复:tracediff 槽 b 搜索填充到槽 a 而不是槽 b(@samar-703 在 #3473)
- 修复详情行层级:父 span 缺少垂直线和白色背景回归(@Copilot 在 #3572)
- 修复:系统架构(dag)深色模式可见性(@Parship12 在 #3568)
🚧 实验性功能
- [adr-0006] 阶段 5:组合模式、分析、最终润色(@yurishkuro 在 #3577)
- [adr-0006] 阶段 4:侧面板润色(@yurishkuro 在 #3576)
- [adr-0006] 阶段 3:侧面板容器和 span 选择(@yurishkuro 在 #3569)
- [adr-0006] 阶段 2:仅树模式(隐藏时间线)(@yurishkuro 在 #3562)
👷 CI 改进
- 不在主分支上使包大小工作流失败(@yurishkuro 在 #3653)
- 使用 .prettierignore 而不是显式选择加入(@yurishkuro 在 #3647)
- 固定 npm 版本(@yurishkuro 在 #3596)
⚙️ 重构
- 功能:添加 zustand 和用于状态迁移的查询基础(@Parship12 在 #3662)
- 修复:替换剩余的 tooltip 箭头属性(@YoungHypo 在 #3663)
- 移除
storenpm 依赖并抑制 lightningcss 警告(@yurishkuro 在 #3659) - 移除已弃用的
worker-loader,改用 webpack 5 / vite 内置 worker 支持(@yurishkuro 在 #3646) - 最后一部分:迁移到 react-router-dom v7 & 移除兼容层 & history(@Parship12 在 #3645)
- 阶段 4 & 5 的一部分:将 v5 matchpath 调用签名迁移到 v6/v7 matchpath 签名(@Parship12 在 #3617)
- 阶段 4 & 5 的一部分:将 link 迁移到 react-router-dom-v5-compat(@Parship12 在 #3618)
- 阶段 4 的一部分:移除 redux-first-history 并将路由状态与 redux 解耦(@Parship12 在 #3616)
- 阶段 4 清理:移除 history.replace() 和 historyupdatemiddleware(@Parship12 在 #3615)
- 阶段 3.2 的最后部分(任务 1):重构(tracepage):将类组件转换为函数式组件(@Parship12 在 #3613)
- 阶段 3 剩余:移除 state.router.location 用法(清理)(@Parship12 在 #3614)
- 阶段 3.2 的一部分(任务 1):在 tracepage 中将键盘快捷键设置提取到单独函数中(@Parship12 在 #3609)
- 修复(tracepage):修复过时的 filterspans 缓存键并移除无效代码(@thc1006 在 #3592)
- 阶段 3.2 的一部分(任务 2):移除无效的 searchurl prop(@Parship12 在 #3603)
- 阶段 3.2(任务 2):重构(dependencygraph):将类组件转换为函数式组件(@Parship12 在 #3591)
- 重构(plexus):将 digraph 迁移到函数式组件(@hharshhsaini 在 #3534)
- 任务:在开发模式下动态获取后端配置 (#3541)(@hharshhsaini 在 #3561)
- 重构(plexus):将 node 迁移到函数式组件 (#3392)(@hharshhsaini 在 #3531)
- 重构(plexus):将 svgedges 迁移到函数式组件 (#3397)(@hharshhsaini 在 #3518)
- 任务:将
getconfigvalue替换为直接的getconfig()属性访问(@Copilot 在 #3589) - 修复(监控):使用 storagecapabilities 配置作为 spm 可用性的权威信号(@yurishkuro 在 #3587)
- 重构:通过后端的存储能力控制监控选项卡的可见性(@hharshhsaini 在 #3554)
- 阶段 3.2(任务 3):从 redux 移除 historyupdatemiddleware & 将 navigate(url) 移至 searchform 中(@Parship12 在 #3582)
- 阶段 3.1:用 uselocation() 替换 state.router.location(@Parship12 在 #3574)
- 重构(plexus):将 measurablenodes 迁移到函数式组件(@hharshhsaini 在 #3533)
- 阶段 1:将路由定义迁移到 react router v6 语法(@Parship12 在 #3565)
- 重构(plexus):将 svgdefentry 迁移到函数式组件 (#3395)(@hharshhsaini 在 #3528)
更新内容 (原始)
Backend Changes
🐞 Bug fixes, Minor Improvements
- Implement timer duration bucket parsing in metrics init (@junaiddshaukat in #7951)
- Fix(memory): accept string-form error filters in trace search (@YoungHypo in #8217)
- Feat(monitor): restore grafana to spm docker-compose example (adr-007 step 1) (@abhay1999 in #8215)
- Safe self-tracing via otel collector telemetry factory (@yurishkuro in #8208)
- Fix: guard addjitter against zero/sub-nanosecond durations to prevent panic (fixes #8149) (@shivamtiwari3 in #8178)
- Fix: clock skew adjuster to also adjust endtimestamp (@Audio431 in #8170)
- Update mcp server readme (@yurishkuro in #8163)
- Feat(query): expose metricsstorage to ui as storage capabilities (@hharshhsaini in #8154)
🚧 Experimental Features
- [clickhouse] optimize spans table for faster searching (@mahadzaryab1 in #8258)
- [jaegermcp] add system prompt instructions for llm clients (adr phase 4) (@lopster568 in #8253)
- Fix(jaegermcp): enforce response limits (@abhay1999 in #8242)
- Feat(monitor): go sdk dashboard generator — adr-007 step 2a (@abhay1999 in #8216)
- [clickhouse][benchmarking] add initial results from benchmarking (@mahadzaryab1 in #8181)
- [jaegermcp] enable tenancy enforcement (@whiplashvin in #8203)
- [jaegermcp] enforce config-driven limits in mcp handlers (@rite7sh in #8194)
- [jaegermcp] fix mcp server integration with claude code (@yurishkuro in #8191)
- [clickhouse] fix trace id timestamps table schema / query to deduplicate trace_ids (@mahadzaryab1 in #8180)
- [clickhouse] optimize get traces query by adding start and end time filter (@mahadzaryab1 in #8152)
👷 CI Improvements
- Fix: create reusable setup-go action to fix go module cache in ci workflows (@Copilot in #8257)
- Use gotestsum for all test execution (@Copilot in #8256)
- Fix(ci): correct metrics snapshot comparison noise (@Copilot in #8246)
- Ci(monitor): add dashboard sync check for go sdk generator (adr-007 step 3) (@abhay1999 in #8240)
- Fix(ci): add retry logic for pulling registry:2 in prepare-docker-buildx (@Copilot in #8236)
- [ci] improve e2e workflow documentation and test mode naming (@yurishkuro in #8195)
- Fix oke demo prometheus upgrade (@danish9039 in #8183)
- [test] add scope name and version integration test (@Manik2708 in #8138)
- Fix ci parallel mode detection for org members without team access (@yurishkuro in #8182)
- Revert metrics workflow changes from pr8106 (@yurishkuro in #8175)
- Ci: fix pr resolution in ci summary report publish workflow (@yurishkuro in #8159)
- Do not run dependency-review on push to main (@yurishkuro in #8158)
- Include metric change details in pr comment (@yurishkuro in #8153)
- Fix(ci): prevent stale coverage baseline from persisting across main-branch runs (@Copilot in #8157)
- Fix: use $(suffix) in version-check binary path for debug builds (@Copilot in #8148)
⚙️ Refactoring
- Move param type conversion util out of tracestore api into v1adapter (@Copilot in #8255)
- Feat(monitor): complete adr-007 step 2b dashboard upgrade (@YoungHypo in #8241)
📖 Documentation
- Adr-007: grafana dashboard modernization and spm example validation (@yurishkuro in #8214)
- Add badger adr (@yurishkuro in #8166)
📊 UI Changes
✨ New Features
- Allow viewing span details in a side panel instead of inline view (@yurishkuro in #3578)
- [feature]: add trace logs view to aggregate all span events (@SoumyaRaikwar in #3563)
🐞 Bug fixes, Minor Improvements
- 🔒 [security fix] replace innerHTML with textContent to mitigate XSS risk (@jkowall in #3651)
- Add plexus demo route to main ui (dev only,
/plexus-demo) (@Copilot in #3656) - Fix plexus demo (@yurishkuro in #3654)
- Clean-up display of incomplete icon, text, and tooltip (@yurishkuro in #3619)
- Revert “refactor(plexus): migrate digraph to functional component” (@yurishkuro in #3600)
- Revert “chore: fetch backend config dynamically in dev mode (#3541)” (@yurishkuro in #3599)
- Fix: dark mode is not working correctly on the quality metrics page (@gulshank0 in #3583)
- Fix: normalize uppercase trace ids to lowercase in url (@samar-703 in #3485)
- Fix: tracediff slot b search populates slot a instead (@samar-703 in #3473)
- Fix detail-row hierarchy: missing vertical bars for parent spans and white background regression (@Copilot in #3572)
- Fix: system architecture (dag) dark mode visibility (@Parship12 in #3568)
🚧 Experimental Features
- [adr-0006] phase 5: combined modes, analytics, final polish (@yurishkuro in #3577)
- [adr-0006] phase 4: side panel polish (@yurishkuro in #3576)
- [adr-0006] phase 3: side panel container and span selection (@yurishkuro in #3569)
- [adr-0006] phase 2: tree-only mode (hide timeline) (@yurishkuro in #3562)
👷 CI Improvements
- Do not fail bundle size workflow on main branch (@yurishkuro in #3653)
- Use .prettierignore instead of explicit opt-in (@yurishkuro in #3647)
- Pin npm version (@yurishkuro in #3596)
⚙️ Refactoring
- Feat: add zustand and query foundation for state migration (@Parship12 in #3662)
- Fix: replace remaining tooltip arrow prop (@YoungHypo in #3663)
- Remove
storenpm dependency and suppress lightningcss warning (@yurishkuro in #3659) - Remove deprecated
worker-loaderin favor of webpack 5 / vite built-in worker support (@yurishkuro in #3646) - Final part: migrate to react-router-dom v7 & drop compat layer & history (@Parship12 in #3645)
- Part of phase 4 & 5: migrate the v5 matchpath call signature to v6/v7 matchpath signature (@Parship12 in #3617)
- Part of phase 4 & 5: migrate link to react-router-dom-v5-compat (@Parship12 in #3618)
- Part of phase 4: remove redux-first-history and decouple router state from redux (@Parship12 in #3616)
- Cleanup for phase 4: remove history.replace() and historyupdatemiddleware (@Parship12 in #3615)
- Final part of phase 3.2 (task 1): refactor(tracepage): convert class component to functional (@Parship12 in #3613)
- Phase 3 leftovers: remove state.router.location usages (cleanup) (@Parship12 in #3614)
- Part of phase 3.2 (task 1): factor out keyboard shortcut setup into a separate function in the tracepage (@Parship12 in #3609)
- Fix(tracepage): fix stale filterspans cache key and remove dead code (@thc1006 in #3592)
- Part of phase 3.2 (task 2): remove dead searchurl prop (@Parship12 in #3603)
- Phase 3.2 (task 2): refactor(dependencygraph): convert class component to functional (@Parship12 in #3591)
- Refactor(plexus): migrate digraph to functional component (@hharshhsaini in #3534)
- Chore: fetch backend config dynamically in dev mode (#3541) (@hharshhsaini in #3561)
- Refactor(plexus): migrate node to functional component (#3392) (@hharshhsaini in #3531)
- Refactor(plexus): migrate svgedges to functional component (#3397) (@hharshhsaini in #3518)
- Chore: replace
getconfigvaluewith directgetconfig()property access (@Copilot in #3589) - Fix(monitor): use storagecapabilities config as authoritative signal for spm availability (@yurishkuro in #3587)
- Refactor: control monitor tab visibility via storage capabilities of the backend (@hharshhsaini in #3554)
- Phase 3.2 (task 3): remove historyupdatemiddleware from redux & move navigate(url) into searchform (@Parship12 in #3582)
- Phase 3.1: replace state.router.location with uselocation() (@Parship12 in #3574)
- Refactor(plexus): migrate measurablenodes to functional component (@hharshhsaini in #3533)
- Phase 1: migrate route definitions to react router v6 syntax (@Parship12 in #3565)
- Refactor(plexus): migrate svgdefentry to functional component (#3395) (@hharshhsaini in #3528)
下载链接
- jaeger-2.17.0-darwin-amd64.sha256sum.txt
- jaeger-2.17.0-darwin-amd64.tar.gz
- jaeger-2.17.0-darwin-amd64.tar.gz.asc
- jaeger-2.17.0-darwin-arm64.sha256sum.txt
- jaeger-2.17.0-darwin-arm64.tar.gz
- jaeger-2.17.0-darwin-arm64.tar.gz.asc
- jaeger-2.17.0-linux-amd64.sha256sum.txt
- jaeger-2.17.0-linux-amd64.tar.gz
- jaeger-2.17.0-linux-amd64.tar.gz.asc
- jaeger-2.17.0-linux-arm64.sha256sum.txt
- jaeger-2.17.0-linux-arm64.tar.gz
- jaeger-2.17.0-linux-arm64.tar.gz.asc
- jaeger-2.17.0-linux-ppc64le.sha256sum.txt
- jaeger-2.17.0-linux-ppc64le.tar.gz
- jaeger-2.17.0-linux-ppc64le.tar.gz.asc
- jaeger-2.17.0-linux-s390x.sha256sum.txt
- jaeger-2.17.0-linux-s390x.tar.gz
- jaeger-2.17.0-linux-s390x.tar.gz.asc
- jaeger-2.17.0-windows-amd64.sha256sum.txt
- jaeger-2.17.0-windows-amd64.tar.gz
- jaeger-2.17.0-windows-amd64.tar.gz.asc
- jaeger-2.17.0-windows-amd64.zip
- jaeger-2.17.0-windows-amd64.zip.asc
- jaeger-2.17.0.sha256sum.txt
- jaeger-SBOM.spdx.json
- jaeger-tools-2.17.0-darwin-amd64.sha256sum.txt
- jaeger-tools-2.17.0-darwin-amd64.tar.gz
- jaeger-tools-2.17.0-darwin-amd64.tar.gz.asc
- jaeger-tools-2.17.0-darwin-arm64.sha256sum.txt
- jaeger-tools-2.17.0-darwin-arm64.tar.gz
- jaeger-tools-2.17.0-darwin-arm64.tar.gz.asc
- jaeger-tools-2.17.0-linux-amd64.sha256sum.txt
- jaeger-tools-2.17.0-linux-amd64.tar.gz
- jaeger-tools-2.17.0-linux-amd64.tar.gz.asc
- jaeger-tools-2.17.0-linux-arm64.sha256sum.txt
- jaeger-tools-2.17.0-linux-arm64.tar.gz
- jaeger-tools-2.17.0-linux-arm64.tar.gz.asc
- jaeger-tools-2.17.0-linux-ppc64le.sha256sum.txt
- jaeger-tools-2.17.0-linux-ppc64le.tar.gz
- jaeger-tools-2.17.0-linux-ppc64le.tar.gz.asc
- jaeger-tools-2.17.0-linux-s390x.sha256sum.txt
- jaeger-tools-2.17.0-linux-s390x.tar.gz
- jaeger-tools-2.17.0-linux-s390x.tar.gz.asc
- jaeger-tools-2.17.0-windows-amd64.sha256sum.txt
- jaeger-tools-2.17.0-windows-amd64.tar.gz
- jaeger-tools-2.17.0-windows-amd64.tar.gz.asc
- jaeger-tools-2.17.0-windows-amd64.zip
- jaeger-tools-2.17.0-windows-amd64.zip.asc