当前位置: 首页 > article >正文

Go 工具链详解(八):go telemetry

目录

Go telemetry 的目的和工作原理

Go telemetry 的配置和命令

Telemetry 数据报告

telemetry.go.dev 是什么

小结

参考资料


Go 1.23 版本的工具链提供一个新工具——telemetry,用于收集 Go 工具链的使用和故障统计数据,以帮助 Go 团队了解工具链的使用情况和运行状态,从而进行改进和优化。

Go telemetry 的目的和工作原理

Go telemetry 的主要目的是收集 Go 工具链使用情况的统计数据,这些数据将有助于 Go 贡献者修复错误、避免退步并做出更好的决策。默认情况下,Go telemetry 数据仅存储在本地计算机上,如果用户启用了上传功能,那么数据的有限子集每周将被发布到 telemetry.go.dev。

Go telemetry 的工作原理基于“计数器”(counters),计数器有两种变体:基本计数器和堆栈计数器。

  • 基本计数器:记录特定事件的发生次数,例如 gopls/client:vscode 计数器记录由 VS Code启动的 gopls 会话次数。
  • 堆栈计数器:用于跟踪程序执行期间的特定事件序列。

Go telemetry 的配置和命令

Go telemetry 的行为由遥测模式(telemetry mode)控制,有如下三种模式:

  • local:收集的数据仅存储在本地计算机上,不会被上传到远程服务器。
  • on:收集数据,并根据抽样上传数据。
  • off:不收集也不上传数据。

用户可以通过以下命令来查看或修改模式:

  • go telemetry:查看当前模式。
  • go telemetry on:将模式设置为 on。
  • go telemetry off:将模式设置为 off。
  • go telemetry local:将模式设置为`local`。

此外,用户也可以通过 Go 环境变量 GOTELEMETRY 和 GOTELEMETRYDIR 了解 Go telemetry 的配置信息。

Telemetry 数据报告

Go telemetry 每周会将统计数据汇总成报告,并保存在 <gotelemetry>/local 文件夹中,文件名会以日期命名,格式为 <date>.json。如果选择了启用 Telemetry 数据上传功能,在每周生成报告的同时,还会额外创建一个报告,其中包含上传配置中指定的一些计数器数据。请注意,这些计数器数据必须经过公共审查和批准的过程。

上传的报告将被存放在 <gotelemetry>/upload 目录下。为了降低数据收集量、增强隐私保护,同时确保统计数据的代表性,当选择上传 Telemetry 数据的用户数量足够多时,系统会随机选择一部分报告不进行上传。这样既减轻了数据收集的负担,也保护了用户隐私。

telemetry.go.dev 是什么

telemetry.go.dev 网站负责接收上传的数据,并将数据对外公开。网站每天会对上传的报告进行处理,生成两种类型的输出:

  1. 合并报告:将当天收到的所有上传计数器数据合并在一起。
  2. 图表:根据在提案过程中确定的图表配置,绘制上传的数据。每个图表会将具有相同名称的计数器数据汇总到相应的分类中。

小结

Go 1.23 引入的 Telemetry 功能,不仅提升了 Go 工具链自我完善的能力,也提高了社区的参与度。用户可以通过选择加入 Telemetry 项目直接参与到 Go 语言的发展进程中。通过这种方式,Go 团队能够更准确地掌握工具链的使用情况,从而做出更有针对性的改进。

参考资料

  • https://go.dev/blog/gotelemetry
  • https://go.dev/doc/telemetry


http://www.kler.cn/a/404606.html

相关文章:

  • ara::com 与 AUTOSAR 元模型的关系总结
  • 深入了解 Linux htop 命令:功能、用法与示例
  • 键盘上打出反引号符号(´),即单个上标的撇号(这个符号与反引号 ` 不同,反引号通常位于键盘的左上角)
  • 一键部署 200+ 开源软件的 Websoft9 面板,Github 2k+ 星星
  • Spring Boot整合Nacos启动时 Failed to rename context [nacos] as [xxx]
  • WPF里面的C1FlexGrid表格控件添加RadioButton单选
  • Wallpaper壁纸制作学习记录05
  • 【JavaSE 网络编程和日期与时间知识总结】
  • Java Web应用中的跨站请求伪造(CSRF)防御策略
  • 关于一次开源java spring快速开发平台项目RuoYi部署的记录
  • hj 212 协议解包php解包,
  • 从0开始的数据结构速过——番外(1)
  • ubuntu20.04如何升级python3.8到python3.10
  • React 组件中 State 的定义、使用及正确更新方式
  • 本地git多用户ssh配置
  • Adobe XD文件处理:即时设计的在线解决方案
  • 腾讯云存储COS上传视频报错
  • vue3+ant design vue带勾选表格的坑,记录一下
  • Android开发实战班 - 第一部分:Android开发基础
  • 李沐学习安装d2l、gpu-pytorch
  • Android Google登录接入
  • 【Amazon】亚马逊云科技Amazon DynamoDB 实践Amazon DynamoDB
  • windows下编译ffmpeg4.4版本
  • Redis分布式锁的原理与Redisson实现
  • Python解析视频FPS(帧率)、分辨率信息
  • Qt桌面应用开发 第六天(鼠标事件 定时器事件 定时器类 事件分发器 事件过滤器)