telemetry

package
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Apr 13, 2026 License: MIT Imports: 23 Imported by: 0

Documentation

Overview

Package telemetry provides opt-out anonymous usage telemetry for unum.

Telemetry is sent via OpenTelemetry (OTLP HTTP) and is disabled when:

  • OTEL_EXPORTER_OTLP_ENDPOINT is empty (dev builds)
  • DO_NOT_TRACK=1 or UNUM_NO_TELEMETRY=1 is set
  • "telemetry": false in config.json
  • --no-telemetry CLI flag is used

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Telemetry

type Telemetry struct {
	Umami *UmamiClient
	// contains filtered or unexported fields
}

Telemetry is the unified facade for all telemetry systems. All methods are safe to call on a nil or disabled instance.

func Init

func Init(cfg config.Config, serviceName, version string) *Telemetry

Init creates a Telemetry instance. If telemetry is disabled (config, env, or missing endpoint), returns a fully functional but no-op instance.

func (*Telemetry) Close

func (t *Telemetry) Close(ctx context.Context) error

Close flushes pending telemetry data. Should be called before process exit.

func (*Telemetry) Disable

func (t *Telemetry) Disable()

Disable switches telemetry to no-op mode. Called when --no-telemetry is set.

func (*Telemetry) Meter

func (t *Telemetry) Meter() ometric.Meter

Meter returns the OTel meter. Returns a no-op meter if disabled.

func (*Telemetry) Tracer

func (t *Telemetry) Tracer() otrace.Tracer

Tracer returns the OTel tracer. Returns a no-op tracer if disabled.

func (*Telemetry) TrackEvent

func (t *Telemetry) TrackEvent(event, pageURL string, props map[string]string)

TrackEvent sends a named event to Umami (web mode only). No-op if Umami is not configured or telemetry is disabled.

type UmamiClient

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

UmamiClient sends page-level analytics events to a self-hosted Umami instance. Used only in web mode — CLI and TUI telemetry goes through OTel.

func NewUmami

func NewUmami(endpoint, websiteID, hostname string) *UmamiClient

NewUmami creates a client. If endpoint or websiteID is empty, the client is disabled (all methods are no-ops).

func (*UmamiClient) Track

func (u *UmamiClient) Track(event, pageURL string, props map[string]string)

Track sends a named event to Umami. Non-blocking (fires a goroutine). Safe to call on a disabled client.

Jump to

Keyboard shortcuts

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