Jaeger Elasticsearch 指标迁移对照指南:V1 到 V2 的 Metric 命名与标签映射
Jaeger Elasticsearch 指标迁移对照指南V1 到 V2 的 Metric 命名与标签映射【免费下载链接】jaegerCNCF Jaeger, a Distributed Tracing Platform项目地址: https://gitcode.com/GitHub_Trending/ja/jaeger本文档是 Jaeger v1 → v2 迁移系列中的 Elasticsearch 指标篇完整罗列了 Elasticsearch 存储后端在迁移前后的指标名与标签labels对照关系涵盖组合指标Combined MetricsV1/V2 名称完全一致与等价指标Equivalent Metrics名称与标签均发生变更两类并给出对应源码依据帮助监控团队在升级过程中无痛切换告警规则与 Grafana 面板。本指南以仓库内 cmd/jaeger/docs/migration/elasticsearch-metrics.md 为核心骨架结合 Elasticsearch 存储实现源码与指标生成脚本展开讲解。读者读完可掌握哪些 ES 指标在 v2 中保持不变、哪些指标被重命名并扩展了标签、以及如何在迁移后继续用统一指标名构建监控面板。为什么需要指标迁移对照表Jaeger v2 基于 OpenTelemetry Collector 重写了整体架构数据写入、接收与构建信息的埋点方式也随之变化写入路径从 v1 的internal/storage/v1演进为 v2 的internal/storage/v2但 Elasticsearch 批量写入核心仍然复用统一的写入指标模型接收路径改为标准 OTLP receiver拒绝 span 的计数指标从 Jaeger 自定义命名切换为 OTel 语义约定的receiver_refused_spans构建信息改为遵循 OpenTelemetry 资源语义的target_info标签结构也向 OTel 资源属性靠拢。仓库在 cmd/jaeger/docs/migration/ 下按存储后端分别维护了迁移对照表all-in-one-metrics.md、badger-metrics.md、cassandra-metrics.md、elasticsearch-metrics.md、opensearch-metrics.md本文聚焦 ElasticsearchOpenSearch 对照表见 opensearch-metrics.md内容与 ES 完全一致。这些表格并非手写维护而是由 scripts/utils/metrics-md.py 从指标定义中自动生成的脚本中的generate_combined_markdown_table负责产出Combined Metrics小节generate_spans_markdown_table负责产出Equivalent Metrics小节确保对照关系与源码始终同步。组合指标Combined MetricsV1 与 V2 完全一致ES 写入相关的 10 个指标在 v1、v2 中名称与参数标签完全相同均为N/A即无附加标签只有指标名本身。这意味着基于这些指标构建的写入监控面板、告警规则在迁移后无需任何修改即可继续工作。V1 MetricV1 ParametersV2 MetricV2 Parametersjaeger_bulk_index_attempts_totalN/Ajaeger_bulk_index_attempts_totalN/Ajaeger_bulk_index_errors_totalN/Ajaeger_bulk_index_errors_totalN/Ajaeger_bulk_index_inserts_totalN/Ajaeger_bulk_index_inserts_totalN/Ajaeger_bulk_index_latency_errN/Ajaeger_bulk_index_latency_errN/Ajaeger_bulk_index_latency_okN/Ajaeger_bulk_index_latency_okN/Ajaeger_index_create_attempts_totalN/Ajaeger_index_create_attempts_totalN/Ajaeger_index_create_errors_totalN/Ajaeger_index_create_errors_totalN/Ajaeger_index_create_inserts_totalN/Ajaeger_index_create_inserts_totalN/Ajaeger_index_create_latency_errN/Ajaeger_index_create_latency_errN/Ajaeger_index_create_latency_okN/Ajaeger_index_create_latency_okN/A指标族的统一命名模型这 10 个指标属于两个命名族bulk_index批量写入与index_create索引创建。每个族内都遵循固定的attempts / inserts / errors / latency-ok / latency-err五件套结构其底层定义位于 internal/storage/v1/api/spanstore/spanstoremetrics/write_metrics.gotype WriteMetrics struct { Attempts metrics.Counter metric:attempts Inserts metrics.Counter metric:inserts Errors metrics.Counter metric:errors LatencyOk metrics.Timer metric:latency-ok LatencyErr metrics.Timer metric:latency-err }其语义通过 Emit 方法 一次性确定func (t *WriteMetrics) Emit(err error, latency time.Duration) { t.Attempts.Inc(1) if err ! nil { t.LatencyErr.Record(latency) t.Errors.Inc(1) } else { t.LatencyOk.Record(latency) t.Inserts.Inc(1) } }即每次操作先递增attempts成功则记录latency-ok并递增inserts失败则记录latency-err并递增errors。因此监控时通常以errors / attempts计算失败率用latency-ok与latency-err分别观察正常与异常路径的耗时分布。bulk_index批量写入指标bulk_index族由 BulkIndexer 在写入_bulk时埋点。在 v2 的统一 ES 客户端实现 internal/storage/elasticsearch/esclient/bulk.go 中func NewBulkIndexer(client *Client, cfg BulkIndexerConfig, metricsFactory metrics.Factory, logger *zap.Logger) (*BulkIndexer, error) { b : BulkIndexer{ metrics: spanstoremetrics.NewWriter(metricsFactory, bulk_index), ... } }spanstoremetrics.NewWriter(metricsFactory, bulk_index)会将上述五件套指标统一放入bulk_index命名空间最终输出为jaeger_bulk_index_attempts_total、jaeger_bulk_index_errors_total、jaeger_bulk_index_inserts_total、jaeger_bulk_index_latency_err、jaeger_bulk_index_latency_ok。同步写入路径 internal/storage/elasticsearch/esclient/sync_bulk.go 使用相同的bulk_index命名空间因此无论采用异步批量还是同步批量指标口径完全一致。单元测试对指标行为做了精确断言见 internal/storage/elasticsearch/esclient/bulk_test.go成功场景bulk_index.inserts 1、bulk_index.errors 0只出现latency-ok计时器失败场景bulk_index.inserts 0、bulk_index.errors 1只出现latency-err计时器入队失败场景队列已满bulk_index.attempts 1、bulk_index.errors 1见 TestBulkIndexerEnqueueError。这从测试层面印证了表格中V1/V2 指标名与参数一致的结论——同一套写入指标模型在迁移前后被完整保留。index_create索引创建指标index_create族对应 Elasticsearch 索引初始化/创建如按天/按小时滚动索引的预创建操作同样沿用NewWriter(metricsFactory, index_create)的五件套模型。在迁移对照表中该族 5 个指标的 V1/V2 名称与参数也保持完全一致N/A因此索引创建相关的告警如jaeger_index_create_errors_total持续增长可以直接沿用。等价指标Equivalent Metrics名称与标签均发生变更以下 2 个指标在 v1 与 v2 中名称不同、标签集合也不同迁移时必须同步更新告警表达式与面板查询V1 MetricV1 ParametersV2 MetricV2 Parametersjaeger_collector_spans_rejected_totaldebug, format, svc, transportreceiver_refused_spansreceiver, service_instance_id, service_name, service_version, transportjaeger_build_infobuild_date, revision, versiontarget_infoservice_instance_id, service_name, service_version拒绝 span 计数jaeger_collector_spans_rejected_total → receiver_refused_spansv1 中拒绝 span 的计数由 Collector 自定义埋点jaeger_collector_spans_rejected_total上报携带标签debug调试开关、format数据格式如 jaeger/otlp、svc服务名、transport传输协议。v2 中 Jaeger 以标准 OTel Collector 组件形态运行该指标由接收器按 OpenTelemetry 语义约定上报为receiver_refused_spans标签集变为receiver接收器名称如 otlp、jaeger 等service_instance_id/service_name/service_versionOTel 资源属性标识上报实例transport传输协议标签名保留含义与 v1 一致。这一命名在 Jaeger 的监控资产中已被采用例如 monitoring/jaeger-mixin/dashboard-for-grafana.json 与生成代码 monitoring/jaeger-mixin/generate/main.go 中均使用receiver_refused_spans构建接收拒绝率的监控表达式。迁移后若需按服务维度拆分告警应改用service_name而非 v1 的svc。构建信息jaeger_build_info → target_infov1 的jaeger_build_info携带build_date构建日期、revisionGit 提交、version版本号三个标签用于在 Prometheus 中标识运行中的二进制版本。v2 中该信息通过 OTel 资源属性导出为target_info标签仅保留服务身份三要素service_instance_id、service_name、service_version。迁移后查询运行版本时不再直接看到version/revision标签而需要通过service_nameservice_version组合定位实例若面板依赖jaeger_build_info{version...}做版本告警或展示需改写为对target_info的查询。迁移落地建议写入与索引类指标零改动jaeger_bulk_index_*与jaeger_index_create_*共 10 个指标直接沿用现有面板与告警无需修改可结合errors/attempts比率与latency-err观察写入健康度。接收拒绝类指标改写将jaeger_collector_spans_rejected_total相关查询/告警替换为receiver_refused_spans并按需在标签receiver、service_name、transport上做分组与过滤。版本信息类指标改写将jaeger_build_info相关查询替换为target_info注意标签从version/revision变为service_version/service_name的差异。保持文档同步若后续指标定义发生变更可通过 scripts/utils/metrics-md.py 重新生成 elasticsearch-metrics.md 对照表确保监控团队始终拿到与源码一致的迁移依据。小结Elasticsearch 后端的指标迁移可以概括为写入路径不变、接收与元信息标准化bulk_index与index_create两个指标族的 10 个指标在 v1/v2 中名称与标签完全一致迁移成本为零而receiver_refused_spans、target_info两个 OTel 标准化指标的引入则要求监控侧同步更新查询与告警。结合 bulk.go、write_metrics.go 与 bulk_test.go 中的实现与测试可以确认这套对照关系与运行时代码保持一致可放心作为迁移核对清单使用。【免费下载链接】jaegerCNCF Jaeger, a Distributed Tracing Platform项目地址: https://gitcode.com/GitHub_Trending/ja/jaeger创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

WPF/WinForms异步改造:告别界面卡死,安全更新UI线程

WPF/WinForms异步改造:告别界面卡死,安全更新UI线程

你的程序又卡死了?界面一片白,标题栏写着“未响应”,用户愤怒地关掉程序,留下一条差评。做桌面开发的朋友对这个场景应该都不陌生。把耗时的同步方法改造成异步,配合Task完成后台计算,再安全地回到 UI 线程…

2026/10/23 12:55:10 阅读更多 →
oh-my-pi learn 工具:开启 autolearn 让 agent 沉淀可复用经验并生成托管技能

oh-my-pi learn 工具:开启 autolearn 让 agent 沉淀可复用经验并生成托管技能

oh-my-pi learn 工具:开启 autolearn 让 agent 沉淀可复用经验并生成托管技能 【免费下载链接】oh-my-pi ⌥ Coding agent with the IDE wired in 项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-pi 在 oh-my-pi(omp)里&…

2026/10/23 18:00:36 阅读更多 →
GB28181国标平台设备与通道管理实战:注册、心跳与目录上报全解析

GB28181国标平台设备与通道管理实战:注册、心跳与目录上报全解析

做国标视频平台开发,设备与通道管理永远是最先碰到的硬骨头。GB28181的整个信令流程都是从设备注册开始的,不管是海康的NVR、大华的前端摄像机,还是各家中小厂商的视频网关,接入平台后的第一步就是拿SIP账号来注册;注册…

2026/10/22 15:23:39 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/24 11:09:31 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/23 15:39:08 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/23 10:53:32 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/24 9:46:55 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/24 3:09:39 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/23 19:30:19 阅读更多 →

日新闻

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/23 13:55:34 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/24 1:12:31 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/24 14:09:51 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/24 9:15:56 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/24 11:09:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/24 5:28:28 阅读更多 →