Zed 中的遥测

已更新至 v0.112.0

Zed 会收集匿名遥测数据,以帮助团队了解人们如何使用该应用程序以及他们遇到的问题类型。

配置遥测设置

您可以完全控制 Zed 发送出的数据。要启用或禁用某些或所有遥测类型,请通过命令面板中的 `zed: open settings` 打开 `settings.json` 文件。插入并调整以下内容

"telemetry": {
    "diagnostics": false,
    "metrics": false
},

还可以通过 `welcome` 屏幕配置遥测设置,该屏幕可以通过命令面板中的 `workspace: welcome` 操作调用。

数据流

遥测数据从应用程序发送到我们的服务器。数据通过我们的服务器进行代理,以便我们轻松切换分析服务。我们目前使用

  • Axiom: 云监控服务 - 存储诊断事件
  • Clickhouse: 商业智能平台 - 存储诊断事件和指标事件
  • Metabase:仪表板 - 从 Clickhouse 提取的数据构建的仪表板

遥测类型

诊断

诊断事件包括来自崩溃报告的调试信息(堆栈跟踪)。报告在崩溃发生后首次启动应用程序时发送。我们构建了仪表板,使我们能够可视化用户遇到的问题的频率和严重性。自动发送这些报告使我们能够开始实施修复,而无需用户在我们的问题跟踪器中提交报告。仪表板中的图表还为我们提供了 Zed 稳定性的非正式测量。

发生恐慌时,将发送以下数据

PanicRequest

  • panic:恐慌数据
  • token:用于在 zed.dev 上对请求进行身份验证的标识符

Panic

  • thread:发生恐慌的线程的名称
  • payload:恐慌消息
  • location_data:恐慌的位置
    • file
    • line
  • backtrace:恐慌的回溯
  • app_version:Zed 的应用版本
  • release_channel:Zed 的发布渠道
    • stable
    • preview
    • dev
  • os_name:您的操作系统的名称
  • os_version:您的操作系统的版本
  • architecture:您的 CPU 架构
  • panicked_on:发生恐慌的时间
  • installation_id:Zed 的每个安装唯一的标识符(对于稳定版、预览版和开发版构建,此标识符不同)
  • session_id:Zed 的每个会话唯一的标识符(对于每次打开 Zed,此标识符不同)

指标

Zed 还根据用户操作收集指标信息。指标事件通过 HTTPS 报告,并且请求受到速率限制,以避免使用大量网络带宽。所有数据都保持匿名,并且无法与特定的 Zed 用户相关联。

发送以下数据

ClickhouseEventRequestBody

  • token:用于在 zed.dev 上对请求进行身份验证的标识符
  • installation_id:Zed 的每个安装唯一的标识符(对于稳定版、预览版和开发版构建,此标识符不同)
  • session_id:Zed 的每个会话唯一的标识符(对于每次打开 Zed,此标识符不同)
  • is_staff:指示用户是否是 Zed 团队成员的布尔值
  • app_version:Zed 的应用版本
  • os_name:您的操作系统的名称
  • os_version:您的操作系统的版本
  • architecture:您的 CPU 架构
  • release_channel:Zed 的发布渠道
    • stable
    • preview
    • dev
  • eventsClickhouseEventWrapper 的向量

ClickhouseEventWrapper

  • signed_in:指示用户是否已登录的布尔值
  • event:枚举,其中每个变体可以是以下 ClickhouseEvent 变体之一

ClickhouseEvent

  • editor
    • operation:执行的编辑器操作
      • open
      • save
    • file_extension:打开或保存的文件的扩展名
    • vim_mode:一个布尔值,表示用户是否处于 vim 模式
    • copilot_enabled:一个布尔值,表示用户是否启用了 copilot
    • copilot_enabled_for_language:一个布尔值,表示用户是否为已打开或已保存的文件的语言启用了 copilot
    • milliseconds_since_first_event:此事件的时间戳与当前批次中第一个事件的时间戳之间的时间持续时间
  • copilot
    • suggestion_accepted:一个布尔值,表示是否接受了建议
    • file_extension:已打开或已保存的文件的文件扩展名
    • milliseconds_since_first_event:同上
  • call
    • operation:执行的呼叫操作
      • 接受传入
      • 拒绝传入
      • 禁用麦克风
      • 禁用屏幕共享
      • 启用麦克风
      • 启用屏幕共享
      • 挂断
      • 邀请
      • 加入频道
      • 打开频道备注
      • 共享项目
      • 取消共享项目
    • room_id:房间的 ID
    • channel_id:频道的 ID
    • milliseconds_since_first_event:同上
  • assistant
    • conversation_id:对话的 ID(仅适用于面板事件)
    • kind:一个枚举,具有以下变体
      • 面板
      • 内联
    • model:使用的模型
    • milliseconds_since_first_event:同上
  • cpu
    • usage_as_percentage:CPU 使用率
    • core_count:CPU 上的核心数
    • milliseconds_since_first_event:同上
  • memory
    • memory_in_bytes:以字节为单位使用的内存量
    • virtual_memory_in_bytes:以字节为单位使用的虚拟内存量
    • milliseconds_since_first_event:同上
  • app
    • operation:执行的应用操作
      • 首次打开
      • open
      • 关闭
    • milliseconds_since_first_event:同上

你可以通过从命令面板运行命令 zed: open telemetry log 或在应用程序菜单中单击 帮助 > 查看遥测日志 来审计 Zed 报告的指标数据。

还可以通过 `welcome` 屏幕配置遥测设置,该屏幕可以通过命令面板中的 `workspace: welcome` 操作调用。

疑虑和问题

如果你对遥测有任何疑虑,请随时在我们的 Zed 存储库 中提出问题。