telemetry

package
v0.0.0-...-70d2dba Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 10, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type TelemetryConfig

type TelemetryConfig struct {
	// Categories limits which event categories are captured. nil or empty
	// captures events.DefaultCategories. Monitor is added automatically when
	// any CDP category is present and is not configurable here.
	Categories []oapi.TelemetryEventCategory
	// ExportOTLP forwards captured events to the configured OTLP endpoint.
	// Off by default and independent of what is captured.
	ExportOTLP bool
	// StoreS2 writes captured events to the S2 storage sink. The API default
	// is on (an omitted storage block means true), so unlike the other fields
	// the zero value here is not the default: a config that leaves it unset
	// does not store, which is the safe way to fail.
	StoreS2 bool
	// ExcludedCdpMethods leaves the named browser-control methods out of the
	// cdp_command stream. Empty reports every supported method. Telemetry only:
	// an excluded command still reaches the browser.
	ExcludedCdpMethods []oapi.BrowserCdpCommandMethod
}

TelemetryConfig holds caller-supplied telemetry preferences. All fields are optional; zero values mean "use server defaults" (events.DefaultCategories).

type TelemetrySession

type TelemetrySession struct {
	// contains filtered or unexported fields
}

TelemetrySession manages a telemetry session against a shared EventStream. It category-filters Publish calls, tracks session-scoped metadata (ID, config, timestamps), and embeds telemetry_session_id into Event.Source.Metadata before forwarding to the bus.

A *TelemetrySession is required to be non-nil: NewTelemetrySession panics on a nil EventStream and ApiService construction rejects a nil session. Callers should not nil-check.

func NewTelemetrySession

func NewTelemetrySession(es *events.EventStream) *TelemetrySession

func (*TelemetrySession) Active

func (s *TelemetrySession) Active() bool

Active reports whether a telemetry session is currently running.

func (*TelemetrySession) AppliedAt

func (s *TelemetrySession) AppliedAt() time.Time

AppliedAt returns when the current configuration was applied, or the zero time if telemetry is not configured.

func (*TelemetrySession) CategoryEnabled

func (s *TelemetrySession) CategoryEnabled(c oapi.TelemetryEventCategory) bool

CategoryEnabled reports whether events in category c are currently captured. It returns false when no session is active. Lock-free, so a caller on the CDP forwarding path can check it per frame; Publish re-checks under mu.

func (*TelemetrySession) Config

func (s *TelemetrySession) Config() TelemetryConfig

Config returns the current telemetry configuration.

func (*TelemetrySession) DroppedEvents

func (s *TelemetrySession) DroppedEvents() uint64

DroppedEvents returns the cumulative gap count across consumers.

func (*TelemetrySession) ExcludedCdpMethods

func (s *TelemetrySession) ExcludedCdpMethods() map[string]struct{}

ExcludedCdpMethods returns the methods left out of the cdp_command stream. Lock-free for the same reason CategoryEnabled is; the returned set is read-only and may be nil.

func (*TelemetrySession) ID

func (s *TelemetrySession) ID() string

ID returns the current telemetry session ID, or "" if no session is active.

func (*TelemetrySession) NewReader

func (s *TelemetrySession) NewReader(afterSeq uint64) *events.Reader

NewReader returns a Reader from the EventStream positioned after afterSeq.

func (*TelemetrySession) Publish

func (s *TelemetrySession) Publish(ev events.Event) (events.Envelope, bool)

Publish applies the telemetry config filter and forwards ev to the EventStream. Returns the assigned envelope and true on success, or a zero envelope and false when the event was dropped (session inactive or category disabled). Fire-and-forget callers can ignore the returns.

func (*TelemetrySession) RecordDropped

func (s *TelemetrySession) RecordDropped(n uint64)

RecordDropped notes that a consumer found a gap of n envelopes in the stream.

func (*TelemetrySession) Seq

func (s *TelemetrySession) Seq() uint64

Seq returns the sequence number of the last published event.

func (*TelemetrySession) SessionStartSeq

func (s *TelemetrySession) SessionStartSeq() uint64

SessionStartSeq returns the sequence number at which the current session started. Fresh SSE connections with no Last-Event-ID should begin here.

func (*TelemetrySession) Start

func (s *TelemetrySession) Start(telemetrySessionID string, cfg TelemetryConfig)

Start begins a new telemetry session with the given ID and config. Sequence numbers are process-monotonic and do not reset between sessions; a Last-Event-ID from any previous session is valid for resuming the SSE stream.

func (*TelemetrySession) Stop

func (s *TelemetrySession) Stop()

Stop ends the current telemetry session. The ring buffer is left intact so existing readers can finish draining.

func (*TelemetrySession) StoreS2After

func (s *TelemetrySession) StoreS2After() (uint64, bool)

StoreS2After reports whether the current session stores to S2 and, if it does, the seq the sink must start after. False when no session is active, since Stop clears storeS2.

func (*TelemetrySession) UpdateConfig

func (s *TelemetrySession) UpdateConfig(cfg TelemetryConfig)

UpdateConfig applies a new TelemetryConfig to the running session.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL