otel

package
v1.15.0 Latest Latest
Warning

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

Go to latest
Published: Apr 18, 2026 License: BSD-3-Clause Imports: 21 Imported by: 0

Documentation

Overview

Package otel initializes the OpenTelemetry trace, metric, and log pipelines. It uses autoexport for environment-driven configuration of exporters, supporting all standard OTEL_* env vars per D-07.

Index

Constants

This section is empty.

Variables

View Source
var RoleTransitions metric.Int64Counter

RoleTransitions counts LiteFS role transition events (promoted/demoted).

SyncDuration records the duration of sync operations in seconds.

View Source
var SyncOperations metric.Int64Counter

SyncOperations counts sync operations by status (success/failed).

View Source
var SyncPeakHeapMiB atomic.Int64

SyncPeakHeapMiB holds the most-recent end-of-sync-cycle Go runtime HeapInuse in MiB. Exposed via pdbplus.sync.peak_heap_mib ObservableGauge for Grafana / Prometheus dashboards to plot over time. Zero means "no sync has completed yet" — the gauge suppresses observation until the first store.

View Source
var SyncPeakRSSMiB atomic.Int64

SyncPeakRSSMiB holds the most-recent end-of-sync-cycle /proc/self/status VmHWM in MiB (Linux only). Zero means "not Linux" or "no sync yet" — the gauge suppresses observation when zero.

View Source
var SyncTypeDeleted metric.Int64Counter

SyncTypeDeleted counts objects deleted per type.

View Source
var SyncTypeFallback metric.Int64Counter

SyncTypeFallback counts incremental-to-full fallback events per type.

View Source
var SyncTypeFetchErrors metric.Int64Counter

SyncTypeFetchErrors counts PeeringDB API fetch errors per type per D-10.

View Source
var SyncTypeObjects metric.Int64Counter

SyncTypeObjects counts objects synced per type.

View Source
var SyncTypeUpsertErrors metric.Int64Counter

SyncTypeUpsertErrors counts database upsert errors per type per D-10.

Functions

func InitFreshnessGauge added in v1.1.0

func InitFreshnessGauge(lastSyncFn func(ctx context.Context) (time.Time, bool)) error

InitFreshnessGauge registers the sync freshness observable gauge per D-09. The lastSyncFn callback returns the time of the last successful sync. Must be called after OTel Setup() and database initialization.

func InitMemoryGauges added in v1.15.0

func InitMemoryGauges() error

InitMemoryGauges registers observable gauges that report the most-recent end-of-sync-cycle peak heap and RSS (MiB) for SEED-001 dashboard watch. Values are updated by internal/sync.(*Worker).emitMemoryTelemetry via the SyncPeakHeapMiB / SyncPeakRSSMiB atomics. A zero value suppresses the observation (no sync yet, or non-Linux for RSS) so dashboards don't plot misleading zeros.

func InitMetrics

func InitMetrics() error

InitMetrics registers custom metric instruments for sync operations per D-05. HTTP metrics are handled automatically by otelhttp middleware (Plan 03).

func InitObjectCountGauges added in v1.5.0

func InitObjectCountGauges(countsFn func() map[string]int64) error

InitObjectCountGauges registers an observable Int64Gauge that reports the number of objects stored per PeeringDB type. Reads from a cache function that returns pre-computed counts updated at sync completion time (PERF-02). Must be called after OTel Setup().

func NewDualLogger

func NewDualLogger(stdout io.Writer, logProvider *sdklog.LoggerProvider) *slog.Logger

NewDualLogger creates a slog.Logger that sends every log record to both a JSON stdout handler and the OTel log pipeline via otelslog per D-03. This ensures logs are always visible on stdout even if the OTel backend is unavailable.

Types

type SetupInput

type SetupInput struct {
	ServiceName string
	SampleRate  float64
}

SetupInput holds configuration for initializing the OTel pipeline. SampleRate controls trace sampling (0.0 to 1.0) per D-02.

type SetupOutput

type SetupOutput struct {
	// Shutdown flushes all providers and must be called before program exit.
	Shutdown func(context.Context) error

	// LogProvider is exposed so the caller can create a dual slog handler
	// that bridges slog records into the OTel log pipeline.
	LogProvider *sdklog.LoggerProvider
}

SetupOutput holds the OTel shutdown function and LoggerProvider for creating the dual slog handler.

func Setup

func Setup(ctx context.Context, in SetupInput) (*SetupOutput, error)

Setup initializes TracerProvider, MeterProvider, and LoggerProvider using autoexport for environment-driven exporter selection per D-06, D-07. Individual signals can be disabled via OTEL_*_EXPORTER=none per D-04.

Jump to

Keyboard shortcuts

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