Go 工具链已经开始收集和上报使用数据!

2024年 4月 12日 55.7k 0

还做了个投票,以下是我们当时的投票结果:

图片图片

从 Go 社区的讨论结果来看,最后是绝大部分开发者是没有直接同意 rsc 这么干的。都非常关注 ”隐私“ 的问题。更建议做成可选项,也就是用户选择上报。

最后 rsc 就以收集够信息,“草草了事” 的关掉了讨论区(Locked)当我以为这事就这么完了,没想到人家已经静悄悄干起来了,也已经上线完毕了。

遥测数据

遥测(Go Telemetry)是 Go 工具链程序收集其性能和使用数据的一种方式。这些数据可以帮助开发人员改进语言和工具。

Go 工具链程序(例如:go 命令和 gopls)会记录自身执行的某些信息。

这些数据存储在计算机的本地文件中,会存储在 os.UserConfigDir()/go/telemetry/local 目录中。

遥测文件内会至少包含以下数据:

  • 事件计数器:有关 Go 工具链程序使用情况的信息。
  • 堆栈跟踪:有关程序执行的详细信息,用于故障排除。
  • 基本系统信息:操作系统、CPU 架构以及正在执行的 Go 工具的名称和版本。
  • ...

遥测方式

Gotelemetry 工具

要管理 Go 遥测的相关配置和数据,可以使用官方提供的 gotelemetry 命令行工具。

安装命令如下:

$ go install golang.org/x/telemetry/cmd/gotelemetry@latest

常用命令如下:

  • gotelemetry on:每周上传 Go 遥测数据。
  • gotelemetry off:关闭遥测,不上传 Go 遥测数据。
  • gotelemetry view:查看本地收集的遥测数据。
  • gotelemetry env:打印当前遥测环境信息。
  • gotelemetry clear:删除所有本地采集的遥测数据。

IDE 集成

如果我们使用的是 Visual Studio Code 等 IDE,默认 gopls 会收集遥测数据,版本要求是 v0.14.0 及更高版本。

遥测收集后,数据只有在选择允许(IDE 中的同意对话框)后才会上传,您可以使用上文所述的命令 getelemetry on 去开启上传。

也可以随时使用 gotelemetry local 或 gotelemetry off 等命令退出上传。

数据隐私

默认情况下,Go 遥测收集的数据仅保存在你的计算机本地。除非你明确决定启用 Go 遥测同步,否则不会与任何人共享数据。

操作上,我们可以通过运行命令 getelemetry on 或使用 IDE 中的命令来实现遥测的开关。一旦启用,Go 遥测可能会决定每周一次将报告上传到 Google 服务器。

上传报告的本地副本,一般会保存在用户机器上的 os.UserConfigDir()/go/telemetry/remote目录中。

这些报告只包括经用户同意的的计数器等数据,并根据 Google 隐私政策收集做一定的规则配置或约束。上传的报告还将作为 telemetry.go.dev 公共数据集的一部分提供。

例如下图,可以看到近期的遥测图表,作为你的分析数据:

图片图片

Google 内部和外部的 Go 开发人员都可以使用该数据集来了解 Go 工具链的使用情况以及其性能是否符合预期。

总结

Go 官方走了民主流程在社区内收集了大量的建议,虽然有许多的同学反对收集。不过从现在真正落地的情况来看,官方选择了一条比较折中的路线,让人有种吐槽也很难改的感觉。

图片图片

像是本文提到的新版本的 IDE(gopls >= v0.14.0)等,本身 Go 遥测就会收集在本地,我们调整的更多的是遥测发送数据与否的开关等。

可能很多同学,没有细看,按着按着就加入发送遥测的名单里了。

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论