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 ¶
- Variables
- func InitFreshnessGauge(lastSyncFn func(ctx context.Context) (time.Time, bool)) error
- func InitMemoryGauges() error
- func InitMetrics() error
- func InitObjectCountGauges(countsFn func() map[string]int64) error
- func NewDualLogger(stdout io.Writer, logProvider *sdklog.LoggerProvider) *slog.Logger
- type SetupInput
- type SetupOutput
Constants ¶
This section is empty.
Variables ¶
var RoleTransitions metric.Int64Counter
RoleTransitions counts LiteFS role transition events (promoted/demoted).
var SyncDuration metric.Float64Histogram
SyncDuration records the duration of sync operations in seconds.
var SyncOperations metric.Int64Counter
SyncOperations counts sync operations by status (success/failed).
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.
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.
var SyncTypeDeleted metric.Int64Counter
SyncTypeDeleted counts objects deleted per type.
var SyncTypeFallback metric.Int64Counter
SyncTypeFallback counts incremental-to-full fallback events per type.
var SyncTypeFetchErrors metric.Int64Counter
SyncTypeFetchErrors counts PeeringDB API fetch errors per type per D-10.
var SyncTypeObjects metric.Int64Counter
SyncTypeObjects counts objects synced per type.
var SyncTypeUpsertErrors metric.Int64Counter
SyncTypeUpsertErrors counts database upsert errors per type per D-10.
Functions ¶
func InitFreshnessGauge ¶ added in v1.1.0
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
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 ¶
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 ¶
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.