Telemetry Gateway
This page contains generated documentation for telemetry event data that gets exported to Sourcegraph from individual Sourcegraph instances.
WARNING: This page primarily pertains to the new telemetry system introduced in Sourcegraph 5.2.1 - refer to DEPRECATED: Telemetry for the legacy system which may still be in use if a callsite has not been migrated yet.
Table of Contents
telemetrygateway/v1/telemetrygateway.proto
Event
| Field | Type | Label | Description |
|---|---|---|---|
| id | string | Generated ID of the event, currently expected to be UUID v4. | |
| timestamp | google.protobuf.Timestamp | Timestamp of when the original event was recorded. | |
| feature | string | Feature associated with the event in camelCase, e.g. 'myFeature'. | |
| action | string | Action associated with the event in camelCase, e.g. 'pageView'. | |
| source | EventSource | Source of the event. | |
| parameters | EventParameters | Parameters of the event. | |
| user | EventUser | optional | Optional user associated with the event. This field should be hydrated by the Sourcegraph server, and not provided by clients. |
| feature_flags | EventFeatureFlags | optional | Optional feature flags configured in the context of the event. |
| marketing_tracking | EventMarketingTracking | optional | Optional marketing campaign tracking parameters. π¨ SECURITY: This metadata is NEVER exported from an instance, and is only exported for events tracked in the public Sourcegraph.com instance. |
| interaction | EventInteraction | optional | Optional metadata identifying the interaction that generated the event. |
EventBillingMetadata
| Field | Type | Label | Description |
|---|---|---|---|
| product | string | Billing product ID associated with the event. | |
| category | string | Billing category ID the event falls into. |
EventFeatureFlags
| Field | Type | Label | Description |
|---|---|---|---|
| flags | EventFeatureFlags.FlagsEntry | repeated | Evaluated feature flags. In Soucegraph we currently only support boolean feature flags, but in the API we allow arbitrary string values for future extensibility. This field should be hydrated by the Sourcegraph server, and not provided by clients. |
EventFeatureFlags.FlagsEntry
| Field | Type | Label | Description |
|---|---|---|---|
| key | string | ||
| value | string |
EventInteraction
| Field | Type | Label | Description |
|---|---|---|---|
| trace_id | string | optional | OpenTelemetry trace ID representing the interaction associated with the event. |
| interaction_id | string | optional | Custom interaction ID representing the interaction associated with the event. |
| geolocation | EventInteraction.Geolocation | optional | Geolocation associated with the interaction, typically inferred from the originating client's IP address (which we do not collect). |
EventInteraction.Geolocation
| Field | Type | Label | Description |
|---|---|---|---|
| country_code | string | Inferred ISO 3166-1 alpha-2 or alpha-3 country code |
EventMarketingTracking
Marketing campaign tracking metadata.
π¨ SECURITY: This metadata is NEVER exported from private Sourcegraph instances, and is only exported for events tracked in the public Sourcegraph.com instance.
| Field | Type | Label | Description |
|---|---|---|---|
| url | string | optional | URL the event occurred on. |
| first_source_url | string | optional | Initial URL the user landed on. |
| cohort_id | string | optional | Cohort ID to identify the user as part of a specific A/B test. |
| referrer | string | optional | Referrer URL that refers the user to Sourcegraph. |
| last_source_url | string | optional | Last source URL visited by the user. |
| device_session_id | string | optional | Device session ID to identify the user's session. |
| session_referrer | string | optional | Session referrer URL for the user. |
| session_first_url | string | optional | First URL the user visited in their current session. |
EventParameters
| Field | Type | Label | Description |
|---|---|---|---|
| version | int32 | Version of the event parameters, used for indicating the "shape" of this event's metadata, beginning at 0. Useful for denoting if the shape of metadata has changed in any way. | |
| legacy_metadata | EventParameters.LegacyMetadataEntry | repeated | Legacy metadata format that only accepted int64 - use the new metadata field instead, which accepts float values. Values sent through this proto field will be merged into the new metadata attributes. We don't use a [deprecated = true] tag because we use this field to handle accepting exporters sending metadata in this format. |
| metadata | EventParameters.MetadataEntry | repeated | Strictly typed metadata, restricted to integer values to avoid accidentally exporting sensitive or private data. |
| private_metadata | google.protobuf.Struct | optional | Additional potentially sensitive metadata - i.e. not restricted to integer values. π¨ SECURITY: This metadata is NOT exported from instances by default, as it can contain arbitrarily-shaped data that may accidentally contain sensitive or private contents. This metadata is only exported on an allowlist basis based on terms of use agreements and combinations of event feature and action, alongside careful audit of callsites. |
| billing_metadata | EventBillingMetadata | optional | Optional billing-related metadata. |
EventParameters.LegacyMetadataEntry
| Field | Type | Label | Description |
|---|---|---|---|
| key | string | ||
| value | int64 |
EventParameters.MetadataEntry
| Field | Type | Label | Description |
|---|---|---|---|
| key | string | ||
| value | double |
EventSource
| Field | Type | Label | Description |
|---|---|---|---|
| server | EventSource.Server | Information about the Sourcegraph instance that received the event. | |
| client | EventSource.Client | optional | Information about the client that generated the event. |
EventSource.Client
| Field | Type | Label | Description |
|---|---|---|---|
| name | string | Source client of the event. | |
| version | string | optional | Version of the cleint. |
EventSource.Server
| Field | Type | Label | Description |
|---|---|---|---|
| version | string | Version of the Sourcegraph server. |
EventUser
| Field | Type | Label | Description |
|---|---|---|---|
| user_id | int64 | optional | Database user ID of signed in user. User IDs are specific to a Sourcegraph instance, and not universal. We use an int64 as an ID because in Sourcegraph, database user IDs are always integers. |
| anonymous_user_id | string | optional | Randomized unique identifier for an actor (e.g. stored in localstorage in web client). |
Identifier
| Field | Type | Label | Description |
|---|---|---|---|
| licensed_instance | Identifier.LicensedInstanceIdentifier | A licensed Sourcegraph instance. | |
| unlicensed_instance | Identifier.UnlicensedInstanceIdentifier | An unlicensed Sourcegraph instance. |
Identifier.LicensedInstanceIdentifier
| Field | Type | Label | Description |
|---|---|---|---|
| license_key | string | License key configured in the Sourcegraph instance emitting the event. | |
| instance_id | string | Self-reported Sourcegraph instance identifier. |
Identifier.UnlicensedInstanceIdentifier
| Field | Type | Label | Description |
|---|---|---|---|
| instance_id | string | Self-reported Sourcegraph instance identifier. |
RecordEventsRequest
| Field | Type | Label | Description |
|---|---|---|---|
| metadata | RecordEventsRequestMetadata | Metadata about the events being recorded. | |
| events | RecordEventsRequest.EventsPayload | Batch of events to record in a single request. Clients should aim to batch large event backlogs into a series of smaller requests in the RecordEvents stream, being mindful of common limits in individual message sizes: https://protobuf.dev/programming-guides/api/#bound-req-res-sizes |
RecordEventsRequest.EventsPayload
| Field | Type | Label | Description |
|---|---|---|---|
| events | Event | repeated |
RecordEventsRequestMetadata
| Field | Type | Label | Description |
|---|---|---|---|
| request_id | string | Client-provided request identifier for diagnostics purposes. | |
| identifier | Identifier | Telemetry source self-identification. |
RecordEventsResponse
| Field | Type | Label | Description |
|---|---|---|---|
| succeeded_events | string | repeated | IDs of all events that were successfully recorded in the request. Note that if succeeded_events is a subset of events that were submitted, then some events failed to record and should be retried. |
TelemeteryGatewayService
| Method Name | Request Type | Response Type | Description |
|---|---|---|---|
| RecordEvents | RecordEventsRequest stream | RecordEventsResponse stream | RecordEvents streams telemetry events in batches to the Telemetry Gateway service. Events should only be considered delivered if recording is acknowledged in RecordEventsResponse. π¨ SECURITY: Callers should check the attributes of the Event type to ensure that only the appropriate fields are exported, as some fields should only be exported on an allowlist basis. |