上个月,他的一个 Go 语言小工具拿下了 DEV Summer Bug Smash 的奖项——那个工具能把 Redis 命令追踪到 Sentry 里。这周他拿一个新工具去扫同一个文件,结果揪出两个名字:db.system 和 db.operation。前者在 v1.30.0 被改名为 db.system.name,后者在 v1.26.0 被改名为 db.operation.name。
他自己就是 OpenTelemetry 的贡献者,照样把废弃的名字写进了代码。这就是 Attrition 要解决的问题。
![]()
OpenTelemetry 的语义约定定义了遥测数据该用什么名字:http.request.method、db.system.name、http.server.request.duration。这些名字会随着版本发布而改变。旧的教程、SDK 常量、复制粘贴的代码片段,会让已经退役的名字继续活着,而使用它们时不会有任何明显的报错。仪表盘和告警会悄无声息地停止匹配,团队往往要等上几周才发现问题。
找这些名字听起来像个搜索问题。其实不是。正确答案往往取决于关键词搜索看不到的上下文。
Attrition 会读取埋点代码,把里面的每一个属性键、指标名、事件名和枚举值,逐一对照规范中 26 个版本、1563 个名字进行核查。对于每个已退役的名字,它会给出:
- 该用哪个新名字替代
- 是哪个版本把它退役的
- 规范里写明这一点的具体那一行
- 官方迁移指南补充了什么
它只会为那些可以安全自动化处理的改名生成补丁,其余的留给人工判断。
工具已经上线,无需登录即可使用。聊天智能体从同样的两个来源作答,并在每条回复下方展示证据。
项目页面和在线应用都已公开,知识库的决策记录同样可以查询,公开数据集里能拿到每一个已退役名字的 JSON。
规范在版本之间改名字,而旧博客、SDK 和复制来的代码片段,还在把这些退役的名字一代代传下去。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.