otel

package
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Mar 24, 2026 License: BSD-3-Clause Imports: 20 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

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 SyncTypeDeleted metric.Int64Counter

SyncTypeDeleted counts objects deleted per type.

View Source
var SyncTypeDuration metric.Float64Histogram

SyncTypeDuration records per-type sync step duration in seconds.

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 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 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