大家好,我是煎鱼。
一年多前,Go 核心团队提起了想要收集用户使用数据的诉求,为此我们在《Go 工具链想主动上报使用数据,你愿意吗?》中进行了深入探讨。
还做了个投票,以下是我们当时的投票结果:
![71221e4a75f75568afd104ac74a0561f.png](https://img-blog.csdnimg.cn/img_convert/71221e4a75f75568afd104ac74a0561f.png)
从 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
公共数据集的一部分提供。
例如下图,可以看到近期的遥测图表,作为你的分析数据:
![e918d9a136bfb7af512eaf0bb11b4549.png](https://img-blog.csdnimg.cn/img_convert/e918d9a136bfb7af512eaf0bb11b4549.png)
Google 内部和外部的 Go 开发人员都可以使用该数据集来了解 Go 工具链的使用情况以及其性能是否符合预期。
总结
Go 官方走了民主流程在社区内收集了大量的建议,虽然有许多的同学反对收集。不过从现在真正落地的情况来看,官方选择了一条比较折中的路线,让人有种吐槽也很难改的感觉。
![1d289ee8670db44d30cac5011aec84bc.png](https://img-blog.csdnimg.cn/img_convert/1d289ee8670db44d30cac5011aec84bc.png)
像是本文提到的新版本的 IDE(gopls >= v0.14.0)等,本身 Go 遥测就会收集在本地,我们调整的更多的是遥测发送数据与否的开关等。
可能很多同学,没有细看,按着按着就加入发送遥测的名单里了。
推荐阅读
关注和加煎鱼微信,
一手消息和知识,拉你进技术交流群👇
你好,我是煎鱼,出版过 Go 畅销书《Go 语言编程之旅》,再到获得 GOP(Go 领域最有观点专家)荣誉,点击蓝字查看我的出书之路。
日常分享高质量文章,输出 Go 面试、工作经验、架构设计,加微信拉读者交流群,和大家交流!
原创不易 点赞支持