6.5 KiB
Telemetry in Zed
Up to date with v0.112.0
Zed collects anonymous telemetry data to help the team understand how people are using the application and to see what sort of issues they are experiencing.
Dataflow
Telemetry is sent from the application to zed.dev. Data is proxied through our servers to enable us to easily switch analytics services; we never store this data. The data is then sent off to various services:
- Datadog: Cloud-monitoring service - stores diagnostic events
- Clickhouse: Business Intelligence platform - stores both diagnostic and metric events
- Metabase: Dashboards - dashboards built around data pulled from Clickhouse
Types of Telemetry
Diagnostics
Diagnostic events include debug information (stack traces) from crash reports. Reports are sent on the first application launch after the crash occurred. We've built dashboards that allow us to visualize the frequency and severity of issues experienced by users. Having these reports sent automatically allows us to begin implementing fixes without the user needing to file a report in our issue tracker. The plots in the dashboards also give us an informal measurement of the stability of Zed.
When a panic occurs, the following data is sent:
PanicRequest
panic
: The panic datatoken
: An identifier that is used to authenticate the request on zed.dev
Panic
thread
: The name of the thread that panickedpayload
: The panic messagelocation_data
: The location of the panicfile
line
backtrace
: The backtrace of the panicapp_version
: Zed's app versionrelease_channel
: Zed's release channelstable
preview
dev
os_name
: The name of your operating systemos_version
: The version of your operating systemarchitecture
: The architecture of your CPUpanicked_on
: The time that the panic occurredinstallation_id
: An identifier that is unique to each installation of Zed (this differs for stable, preview, and dev builds)session_id
: An identifier that is unique to each Zed session (this differs for each time you open Zed)
Metrics
Zed also collects metric information based on user actions. Metric events are reported over HTTPS, and requests are rate-limited to avoid using significant network bandwidth. All data remains anonymous, and can't be related to specific Zed users.
The following data is sent:
ClickhouseEventRequestBody
token
: An identifier that is used to authenticate the request on zed.devinstallation_id
: An identifier that is unique to each installation of Zed (this differs for stable, preview, and dev builds)session_id
: An identifier that is unique to each Zed session (this differs for each time you open Zed)is_staff
: A boolean that indicates whether the user is a member of the Zed team or notapp_version
: Zed's app versionos_name
: The name of your operating systemos_version
: The version of your operating systemarchitecture
: The architecture of your CPUrelease_channel
: Zed's release channelstable
preview
dev
events
: A vector ofClickhouseEventWrapper
s
ClickhouseEventWrapper
signed_in
: A boolean that indicates whether the user is signed in or notevent
: An enum, where each variant can be one of the followingClickhouseEvent
variants:
ClickhouseEvent
editor
operation
: The editor operation that was performedopen
save
file_extension
: The extension of the file that was opened or savedvim_mode
: A boolean that indicates whether the user is in vim mode or notcopilot_enabled
: A boolean that indicates whether the user has copilot enabled or notcopilot_enabled_for_language
: A boolean that indicates whether the user has copilot enabled for the language of the file that was opened or savedmilliseconds_since_first_event
: Duration of time between this event's timestamp and the timestamp of the first event in the current batch
copilot
suggestion_id
: The ID of the suggestionsuggestion_accepted
: A boolean that indicates whether the suggestion was accepted or notfile_extension
: The file extension of the file that was opened or savedmilliseconds_since_first_event
: Same as above
call
operation
: The call operation that was performedaccept incoming
decline incoming
disable microphone
disable screen share
enable microphone
enable screen share
hang up
invite
join channel
open channel notes
share project
unshare project
room_id
: The ID of the roomchannel_id
: The ID of the channelmilliseconds_since_first_event
: Same as above
assistant
conversation_id
: The ID of the conversation (for panel events only)kind
: An enum with the following variants:panel
inline
model
: The model that was usedmilliseconds_since_first_event
: Same as above
cpu
usage_as_percentage
: The CPU usagecore_count
: The number of cores on the CPUmilliseconds_since_first_event
: Same as above
memory
memory_in_bytes
: The amount of memory used in bytesvirtual_memory_in_bytes
: The amount of virtual memory used in bytesmilliseconds_since_first_event
: Same as above
app
operation
: The app operation that was performedfirst open
open
close
milliseconds_since_first_event
: Same as above
You can audit the metrics data that Zed has reported by running the command zed: open telemetry log
from the command palette, or clicking Help > View Telemetry Log
in the application menu.
Configuring Telemetry Settings
You have full control over what data is sent out by Zed. To enable or disable some or all telemetry types, open your settings.json
file via zed: open settings
from the command palette. Insert and tweak the following:
"telemetry": {
"diagnostics": false,
"metrics": false
},
The telemetry settings can also be configured via the welcome
screen, which can be invoked via the workspace: welcome
action in the command palette.
Concerns and Questions
If you have concerns about telemetry, please feel free to open issues in our community repository.