jaeger v2.15.0 版本更新介绍
发布日期: 2026-02-06
版本号: v2.15.0
Jaeger项目的此次更新包含多项后端和前端(UI)的改动。后端方面,引入了破坏性变更,限制了链路追踪和指标存储配置只能指定一种后端类型;新增了用于指标导出的Grafana仪表盘;修复了多个API在服务不存在时返回空数组而非nil的错误,以及优化了Badger存储的维护关闭流程。实验性功能方面,重点增强了ClickHouse集成,包括为事件属性元数据添加物化视图和改进属性类型查询,同时大幅推进了MCP服务器功能,新增了包括获取服务名、链路名、关键路径、拓扑结构以及搜索链路在内的一系列工具,并完成了SDK集成与HTTP传输实现。此外,还进行了多项CI改进和代码重构,如启用未处理错误检查、更新测试快照、迁移查询服务包等。UI部分,新功能包括采用了IBM调色板的Span颜色方案和优化了追踪视图的树形层级结构;修复了深色模式下的多处显示问题、文本重叠错误,并改进了追踪元数据的可读性;实验性功能主要围绕向OpenTelemetry模型迁移,推进了多个阶段的客户端和组件更新;同样完成了多项CI配置优化和代码重构,将多个React组件转换为函数式组件,并移除了过时依赖。文档方面,新增了AI使用政策、快速入门指南、安全文档、MCP服务器的架构决策记录,并更新了贡献指南。
更新内容 (中文)
后端变更
⛔ 破坏性变更
- 限制追踪/指标存储配置,以允许精确指定一种后端类型(@yurishkuro 在 #7875 中)
✨ 新功能
- Issue #7811:为指标导出器添加 grafana 仪表盘(@Anmol202005 在 #7903 中)
🐞 错误修复,小幅改进
- [修复] 从 api/v3/services 返回空数组而非 nil(@dee077 在 #7926 中)
- [修复] 从 queryservice.getservices 返回空数组而非 nil(@sujalshah-bit 在 #7925 中)
- [修复] 当不存在服务时,始终返回空服务列表(@Sudhanshu-NITR 在 #7929 中)
- [修复] 确保在现有 close() 之前停止 badger 维护(@Yashika0724 在 #7940 中)
- 对存储工厂使用延迟初始化(@Copilot 在 #7887 中)
🚧 实验性功能
- [clickhouse] 添加事件属性元数据的物化视图(@mahadzaryab1 在 #7923 中)
- [clickhouse] 重新设计 clickhouse 属性以查找字符串属性的类型(@mahadzaryab1 在 #7815 中)
- [mcp] 添加用于发现 span 名称的 get_span_names 工具(@sajal004004 在 #7909 中)
- 在 jaegermcp 扩展中使用 opentelemetry span_name 术语(@Copilot 在 #7916 中)
- [mcp] 实现 get_critical_path 工具(第 3 阶段步骤 8-9)(@Copilot 在 #7857 中)
- [clickhouse][杂务] 更新单元测试快照以处理多个查询(@mahadzaryab1 在 #7865 中)
- [mcp] 用于服务发现的 get_services 工具(@Copilot 在 #7864 中)
- [mcp] 添加 cors 设置并修复 null 数组错误(@yurishkuro 在 #7863 中)
- [mcp] get_trace_topology 工具(第 3 阶段步骤 7)(@Copilot 在 #7862 中)
- [mcp] 第 2 阶段步骤 5-6:get_span_details 和 get_trace_errors 工具(@Copilot 在 #7859 中)
- [mcp] 第 2 阶段步骤 4:search_traces(@Copilot 在 #7858 中)
- [clickhouse][杂务] 更新测试驱动程序以处理多个查询(@mahadzaryab1 在 #7839 中)
- [mcp] 第 2 阶段步骤 3:存储集成(@Copilot 在 #7849 中)
- Mcp 服务器/第 1.2 阶段:使用可流式传输 HTTP 传输的 SDK 集成(@Copilot 在 #7846 中)
- Mcp 服务器脚手架(@Copilot 在 #7842 中)
- [clickhouse] 在 clickhouse 查询的单元测试中转向快照测试(@mahadzaryab1 在 #7831 中)
👷 CI 改进
- 修复指标比较工作流以减少 PR 评论噪音(@Copilot 在 #7957 中)
- 通过更频繁地刷新指标使 spm 集成测试更快(@Don-Assamongkol1 在 #7861 中)
- 启用未处理错误 linter(@iypetrov 在 #7895 中)
- 修复(ci):修复 codeql 工作流以正确分析 go 代码(@jkowall 在 #7885 中)
- 实现 pr 配额工作流(@yurishkuro 在 #7882 中)
- 在 spm 集成测试中验证 span 名称(@Don-Assamongkol1 在 #7830 中)
- [杂务/ci] 添加排除指标计数(@neoandmatrix 在 #7756 中)
⚙️ 重构
- 启用 confusion-naming linter 规则(@SamyakBorkar 在 #7949 中)
- 用适当的错误处理替换 panic 调用(@aaryan359 在 #7956 中)
- 修复 search_traces.go 中的 time-naming linter 违规(@jkowall 在 #7913 中)
- [badger][v2] 重构工厂签名以使用遥测设置(@iypetrov 在 #7902 中)
- [cassandra] 为
keyvalue和 traceid 的序列化器/反序列化器添加 omitempty 标记(@Manik2708 在 #7867 中) - 将状态报告融合到收集器框架(@yurishkuro 在 #7890 中)
- [杂务] 将查询服务移至更高位置(@yurishkuro 在 #7854 中)
- [杂务] 移除 v1 查询服务包(@Copilot 在 #7845 中)
文档
- [杂务]:为贡献添加 AI 使用策略(@Sapthagiri777 在 #7932 中)
- 文档:添加包含 docker 命令的快速入门部分(@njg7194 在 #7945 中)
- 添加 claude.md 作为 agents.md 的符号链接(@yurishkuro 在 #7934 中)
- 为 openssf 银色徽章添加安全文档(@jkowall 在 #7896 中)
- Adr-003 延迟存储工厂初始化(@yurishkuro 在 #7886 中)
- 为新贡献者引入 PR 限制(@yurishkuro 在 #7880 中)
- 通过删除冗余内容简化 agents.md(@yurishkuro 在 #7879 中)
- 更新贡献指南中的版权标题(@yurishkuro 在 #7877 中)
- 将文档默认值从 v1 更新到 v2(@Copilot 在 #7640 中)
- 添加 mcp 服务器 adr(@yurishkuro 在 e91d028 中)
📊 UI 变更
✨ 新功能
- 来自 ibm 调色板的新 span 颜色(@yurishkuro 在 #3306 中)
- 追踪视图中更好的树层次结构(@yurishkuro 在 #3302 中)
🐞 错误修复,小幅改进
- 修复 tracediff 头部中的文本重叠(@greedy-wudpeckr 在 #3401 中)
- 修复 linter 错误(@yurishkuro 在 #3510 中)
- 启用 react-hooks/exhaustive-deps linter 规则(@taanvi2205 在 #3471 中)
- 修复:在浅色模式下 traceidsearchinput 文本不可见(@yosri-brh 在 #3464 中)
- [修复] 修复 tracediff 节点的深色模式(@gulshank0 在 #3474 中)
- 错误:在深色模式下增加 ddg 中增量/减量按钮的可见性(@gulshank0 在 #3450 中)
- 修复当不存在追踪数据时 operations metrics reducer 中的类型错误(@Copilot 在 #3460 中)
- 抑制 501 metrics api 响应的控制台错误(@Copilot 在 #3461 中)
- 修复 tracegraph 中的深色模式(@rakshityadav1868 在 #3334 中)
- [错误修复] 在深色主题中更新火焰图 #3321(@gulshank0 在 #3324 中)
- 添加间距使追踪元数据更易读(@Parship12 在 #3331 中)
- 实现 tracediff(比较页面)的深色模式(@Parship12 在 #3314 中)
- 主题清理(@yurishkuro 在 #3320 中)
- 修复深色模式下的追踪 span 表(@yurishkuro 在 #3310 中)
- [树] 修复数字较大时的框大小(@yurishkuro 在 #3303 中)
- 在导航栏中添加 jaeger 标志(@yurishkuro 在 #3291 中)
🚧 实验性功能
- [otel 迁移] 为 v3 api 客户端添加运行时模式验证(@yurishkuro 在 #3448 中)
- [otel 迁移] 第 3.1 阶段:添加 jaegerclient v3 并用于服务 / 操作(@yurishkuro 在 #3329 中)
- [otel] 为阶段-3 添加更多详细信息(@yurishkuro 在 #3323 中)
- Otel 迁移 - 完成第 2 阶段验证(@yurishkuro 在 #3319 中)
- 清理 opentracing/opentelemetry 术语(@yurishkuro 在 #3316 中)
- 最终确定 opentracing/opentelemetry 术语的双重使用(@yurishkuro 在 #3311 中)
- 将 virtualizedtraceview 及其依赖组件迁移到 iotelspan(@Copilot 在 #3289 中)
- 用更多派生数据增强 otel 领域模型(@yurishkuro 在 #3292 中)
- 实现 spandetail 组件的第 2 阶段(@Copilot 在 #3275 中)
👷 CI 改进
- 添加 pr 配额工作流(@yurishkuro 在 #3441 中)
- 分别计算 main 和 plexus 测试覆盖率(@yurishkuro 在 #3349 中)
⚙️ 重构
- 重构:将 detailspanel 更新为函数式组件(@Harshdev098 在 #3358 中)
- 更新 @types/redux-actions 至 v2.6.5(@Parship12 在 #3498 中)
- 重构(plexus):将 svgedgeslayer 从类转换为函数式组件(@thc1006 在 #3409 中)
- 将 accordionlinks 重构为函数式组件(@aaryan359 在 #3406 中)
- 将 measurablenodeslayer 转换为函数式组件(@Parship12 在 #3429 中)
- 重构:将 referencebutton 从基于类的转换为函数式组件(@gulshank0 在 #3350 中)
- 移除 reducers/services.ts(@yurishkuro 在 #3455 中)
- [杂务] 从 resultitem 中移除 history(@insane-22 在 #3361 中)
- 用通用内部错误捕获实现替换 @sentry/browser(@Copilot 在 #3226 中)
- 重构:将 diffnode 转换为函数式组件(@hxrshxz 在 #3343 中)
- 重构:将 hopsselector 选择器转换为函数式组件(@hxrshxz 在 #3340 中)
- 重构:将 app/index.tsx 文件的基于类的转换为函数式组件(@gulshank0 在 #3342 中)
- 将 htmllayersgroup 从类转换为函数式组件(@Parship12 在 #3351 中)
- 将 htmllayer 从类转换为函数式组件(@Parship12 在 #3345 中)
- 从 resultitemtitle 中移除 history(@Parship12 在 #3312 中)
- 将 searchform 转换为函数式组件(@yurishkuro 在 #3326 中)
- 将 searchtrace 页面中的剩余文件转换为 typescript(@yurishkuro 在 #3325 中)
- 将 tracepage 转换为 otel 模型(@yurishkuro 在 #3309 中)
- [杂务] 将更多组件迁移到 otel 模型(@yurishkuro 在 #3308 中)
- 将 tracepageheader 迁移到 otel 模型(@yurishkuro 在 #3307 中)
- 按照 adr 0002 将 trace-dag 文件迁移到 otel 类型(@Copilot 在 #3299 中)
- 将 otel 模型转换为使用强类型的时间/持续时间字段(@yurishkuro 在 #3304 中)
- 升级 searchresults 组件以接受 ioteltrace(@Copilot 在 #3300 中)
- 将关键路径计算升级到 otel 模型(@yurishkuro 在 #3301 中)
- 修复先前重构中引入的错误(@yurishkuro 在 #3298 中)
- 将 tracetimelineviewer 完全升级到 otel 模型(@yurishkuro 在 #3297 中)
- 将关键路径类型移至其自己的领域模型文件(@yurishkuro 在 #3296 中)
- 将领域类型 link 重命名为 hyperlink 并将 link-getter 升级到 otel(@yurishkuro 在 #3295 中)
- 将 otel traceid/spanid 重命名为 traceid/spanid 以匹配遗留领域模型(@yurishkuro 在 #3294 中)
- 将纯 typescript 文件重命名为具有 .ts 扩展名,而不是 .tsx(@yurishkuro 在 #3290 中)
更新内容 (原始)
Backend Changes
⛔ Breaking Changes
- Restrict trace/metric storage configs to allow exactly one backend type (@yurishkuro in #7875)
✨ New Features
- Issue #7811: added grafana dashboard for metrics exporter (@Anmol202005 in #7903)
🐞 Bug fixes, Minor Improvements
- [fix] return empty array instead of nil from api/v3/services (@dee077 in #7926)
- [fix] return empty array instead of nil from queryservice.getservices (@sujalshah-bit in #7925)
- [fix] always return empty services list when none exist (@Sudhanshu-NITR in #7929)
- [fix] ensure badger maintenance is stopped before existing close() (@Yashika0724 in #7940)
- Use lazy initialization for storage factory (@Copilot in #7887)
🚧 Experimental Features
- [clickhouse] add materialized view for event attribute metadata (@mahadzaryab1 in #7923)
- [clickhouse] rework clickhouse attributes to look up type for string attributes (@mahadzaryab1 in #7815)
- [mcp] add get_span_names tool for discovering span names (@sajal004004 in #7909)
- Use opentelemetry span_name terminology in jaegermcp extension (@Copilot in #7916)
- [mcp] implement get_critical_path tool (phase 3 steps 8-9) (@Copilot in #7857)
- [clickhouse][chore] update unit tests snapshots to handle multiple queries (@mahadzaryab1 in #7865)
- [mcp] get_services tool for service discovery (@Copilot in #7864)
- [mcp] add cors setting and fix null array errors (@yurishkuro in #7863)
- [mcp] get_trace_topology tool (phase 3 step 7) (@Copilot in #7862)
- [mcp] phase 2 steps 5-6: get_span_details and get_trace_errors tools (@Copilot in #7859)
- [mcp] phase 2 step 4: search_traces (@Copilot in #7858)
- [clickhouse][chore] update test driver to handle multiple queries (@mahadzaryab1 in #7839)
- [mcp] phase 2 step 3: storage integration (@Copilot in #7849)
- Mcp server/phase 1.2: sdk integration with streamable http transport (@Copilot in #7846)
- Mcp server scaffolding (@Copilot in #7842)
- [clickhouse] move to snapshot testing in unit tests for clickhouse queries (@mahadzaryab1 in #7831)
👷 CI Improvements
- Fix metrics comparison workflow to reduce pr comment noise (@Copilot in #7957)
- Make spm integration test faster by flushing metrics more frequently (@Don-Assamongkol1 in #7861)
- Enable unhandled-error linter (@iypetrov in #7895)
- Fix(ci): fix codeql workflow to properly analyze go code (@jkowall in #7885)
- Implement pr quota workflow (@yurishkuro in #7882)
- Validate span names in spm integration test (@Don-Assamongkol1 in #7830)
- [chore/ci] add excluded metrics count (@neoandmatrix in #7756)
⚙️ Refactoring
- Enable confusing-naming linter rule (@SamyakBorkar in #7949)
- Replace panic calls with proper error handling (@aaryan359 in #7956)
- Fix time-naming linter violation in search_traces.go (@jkowall in #7913)
- [badger][v2] refactor factory signatures to use telemetry settings (@iypetrov in #7902)
- [cassandra] add omitempty notation for
keyvalueand marshaller/unmarshaller fortraceid(@Manik2708 in #7867) - Converge status reporting to collector framework (@yurishkuro in #7890)
- [chore] move query service to higher location (@yurishkuro in #7854)
- [chore] remove v1 queryservice package (@Copilot in #7845)
Documentation
- [chore]: add ai usage policy for contributions (@Sapthagiri777 in #7932)
- Docs: add quick start section with docker command (@njg7194 in #7945)
- Add claude.md as symlink to agents.md (@yurishkuro in #7934)
- Add security documentation for openssf silver badge (@jkowall in #7896)
- Adr-003 lazy storage factory initialization (@yurishkuro in #7886)
- Introduce pr limits for new contributors (@yurishkuro in #7880)
- Streamline agents.md by removing redundant content (@yurishkuro in #7879)
- Update contributing guidelines for copyright headers (@yurishkuro in #7877)
- Update documentation defaults from v1 to v2 (@Copilot in #7640)
- Add mcp server adr (@yurishkuro in e91d028)
📊 UI Changes
✨ New Features
- New span colors from ibm palette (@yurishkuro in #3306)
- Better tree hierarchy for trace view (@yurishkuro in #3302)
🐞 Bug fixes, Minor Improvements
- Fix text overlapping in tracediff header (@greedy-wudpeckr in #3401)
- Fix linter error (@yurishkuro in #3510)
- Enable react-hooks/exhaustive-deps linter rule (@taanvi2205 in #3471)
- Fix: traceidsearchinput invisible text in light mode (@yosri-brh in #3464)
- [fix] fix the dark mode for tracediff nodes (@gulshank0 in #3474)
- Bug : increase increment/decrement buttons visibility in ddg in dark mode (@gulshank0 in #3450)
- Fix typeerror in operations metrics reducer when no trace data exists (@Copilot in #3460)
- Suppress console errors for 501 metrics api responses (@Copilot in #3461)
- Fix dark mode in tracegraph (@rakshityadav1868 in #3334)
- [bugfix] update flame graph in dark theme #3321 (@gulshank0 in #3324)
- Add spacing to make the trace metadata more readable (@Parship12 in #3331)
- Implement dark mode for tracediff (compare page) (@Parship12 in #3314)
- Theme cleanup (@yurishkuro in #3320)
- Fix trace span table in dark mode (@yurishkuro in #3310)
- [tree] fix box size when number is large (@yurishkuro in #3303)
- Add jaeger logo to navbar (@yurishkuro in #3291)
🚧 Experimental Features
- [otel migration] add runtime schema validation to v3 api client (@yurishkuro in #3448)
- [otel migration] phase 3.1: add jaegerclient v3 and use for services / operations (@yurishkuro in #3329)
- [otel] add more details to phase-3 (@yurishkuro in #3323)
- Otel migration - complete phase 2 validation (@yurishkuro in #3319)
- Clean up of opentracing/opentelemetry nomenclature (@yurishkuro in #3316)
- Finalize dual use of opentracing/opentelemetry nomenclature (@yurishkuro in #3311)
- Migrate virtualizedtraceview and dependent components to iotelspan (@Copilot in #3289)
- Enhance otel domain model with more derived data (@yurishkuro in #3292)
- Implement phase 2 for spandetail component (@Copilot in #3275)
👷 CI Improvements
- Add pr quota workflow (@yurishkuro in #3441)
- Calculate main and plexus test coverage separately (@yurishkuro in #3349)
⚙️ Refactoring
- Refactor: update detailspanel to functional component (@Harshdev098 in #3358)
- Update @types/redux-actions to v2.6.5 (@Parship12 in #3498)
- Refactor(plexus): convert svgedgeslayer from class to functional component (@thc1006 in #3409)
- Refactor accordionlinks to functional component (@aaryan359 in #3406)
- Convert measurablenodeslayer to functional component (@Parship12 in #3429)
- Refactoring: converted referencebutton from class based to functional component (@gulshank0 in #3350)
- Remove reducers/services.ts (@yurishkuro in #3455)
- [chore] remove history from resultitem (@insane-22 in #3361)
- Replace @sentry/browser with generic internal error capture implementation (@Copilot in #3226)
- Refactor: convert diffnode to functional component (@hxrshxz in #3343)
- Refactor: convert hopsselector selector to functional component (@hxrshxz in #3340)
- Refactor: convert app/index.tsx file’s class based to functional component (@gulshank0 in #3342)
- Convert the htmllayersgroup from class to functional component (@Parship12 in #3351)
- Convert the htmllayer from class to functional component (@Parship12 in #3345)
- Remove history from resultitemtitle (@Parship12 in #3312)
- Convert searchform to functional component (@yurishkuro in #3326)
- Convert remaining files in searchtrace page to typescript (@yurishkuro in #3325)
- Convert tracepage to otel model (@yurishkuro in #3309)
- [chore] migrate few more components to otel model (@yurishkuro in #3308)
- Migrate tracepageheader to otel model (@yurishkuro in #3307)
- Migrate trace-dag files to otel types per adr 0002 (@Copilot in #3299)
- Convert otel model to use strongly typed time/duration fields (@yurishkuro in #3304)
- Upgrade searchresults components to accept ioteltrace (@Copilot in #3300)
- Upgrade critical path calculations to otel model (@yurishkuro in #3301)
- Fix for bug introduced in previous refactoring (@yurishkuro in #3298)
- Fully upgrade tracetimelineviewer to otel model (@yurishkuro in #3297)
- Move critical path types to their own domain model file (@yurishkuro in #3296)
- Rename domain type link to hyperlink and upgrade link-getter to otel (@yurishkuro in #3295)
- Rename otel traceid/spanid to traceid/spanid to match legacy domain model (@yurishkuro in #3294)
- Rename pure typescript files to have .ts extension, not .tsx (@yurishkuro in #3290)
下载链接
- jaeger-2.15.0-darwin-amd64.sha256sum.txt
- jaeger-2.15.0-darwin-amd64.tar.gz
- jaeger-2.15.0-darwin-amd64.tar.gz.asc
- jaeger-2.15.0-darwin-arm64.sha256sum.txt
- jaeger-2.15.0-darwin-arm64.tar.gz
- jaeger-2.15.0-darwin-arm64.tar.gz.asc
- jaeger-2.15.0-linux-amd64.sha256sum.txt
- jaeger-2.15.0-linux-amd64.tar.gz
- jaeger-2.15.0-linux-amd64.tar.gz.asc
- jaeger-2.15.0-linux-arm64.sha256sum.txt
- jaeger-2.15.0-linux-arm64.tar.gz
- jaeger-2.15.0-linux-arm64.tar.gz.asc
- jaeger-2.15.0-linux-ppc64le.sha256sum.txt
- jaeger-2.15.0-linux-ppc64le.tar.gz
- jaeger-2.15.0-linux-ppc64le.tar.gz.asc
- jaeger-2.15.0-linux-s390x.sha256sum.txt
- jaeger-2.15.0-linux-s390x.tar.gz
- jaeger-2.15.0-linux-s390x.tar.gz.asc
- jaeger-2.15.0-windows-amd64.sha256sum.txt
- jaeger-2.15.0-windows-amd64.tar.gz
- jaeger-2.15.0-windows-amd64.tar.gz.asc
- jaeger-2.15.0-windows-amd64.zip
- jaeger-2.15.0-windows-amd64.zip.asc
- jaeger-2.15.0.sha256sum.txt
- jaeger-SBOM.spdx.json
- jaeger-tools-2.15.0-darwin-amd64.sha256sum.txt
- jaeger-tools-2.15.0-darwin-amd64.tar.gz
- jaeger-tools-2.15.0-darwin-amd64.tar.gz.asc
- jaeger-tools-2.15.0-darwin-arm64.sha256sum.txt
- jaeger-tools-2.15.0-darwin-arm64.tar.gz
- jaeger-tools-2.15.0-darwin-arm64.tar.gz.asc
- jaeger-tools-2.15.0-linux-amd64.sha256sum.txt
- jaeger-tools-2.15.0-linux-amd64.tar.gz
- jaeger-tools-2.15.0-linux-amd64.tar.gz.asc
- jaeger-tools-2.15.0-linux-arm64.sha256sum.txt
- jaeger-tools-2.15.0-linux-arm64.tar.gz
- jaeger-tools-2.15.0-linux-arm64.tar.gz.asc
- jaeger-tools-2.15.0-linux-ppc64le.sha256sum.txt
- jaeger-tools-2.15.0-linux-ppc64le.tar.gz
- jaeger-tools-2.15.0-linux-ppc64le.tar.gz.asc
- jaeger-tools-2.15.0-linux-s390x.sha256sum.txt
- jaeger-tools-2.15.0-linux-s390x.tar.gz
- jaeger-tools-2.15.0-linux-s390x.tar.gz.asc
- jaeger-tools-2.15.0-windows-amd64.sha256sum.txt
- jaeger-tools-2.15.0-windows-amd64.tar.gz
- jaeger-tools-2.15.0-windows-amd64.tar.gz.asc
- jaeger-tools-2.15.0-windows-amd64.zip
- jaeger-tools-2.15.0-windows-amd64.zip.asc