otel

package
v1.9.2 Latest Latest
Warning

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

Go to latest
Published: Feb 14, 2026 License: MIT Imports: 43 Imported by: 0

Documentation

Index

Constants

View Source
const ObservablesGroupName = "us.observables"

ObservablesGroupName is the DI group name for observable setters.

Variables

This section is empty.

Functions

func ContextFunc

func ContextFunc(ctx context.Context) []zapcore.Field

func DefaultMetricAttributes added in v1.8.1

func DefaultMetricAttributes(config Config) []attribute.KeyValue

func FilterFieldsCore

func FilterFieldsCore(core zapcore.Core, dropKeys ...string) zapcore.Core

FilterFieldsCore drops fields with matching keys before writing to the core.

func HasContext

func HasContext(ctx context.Context) bool

HasContext returns true if ctx contains observer, logger, or tracer overrides.

func Layer

func Layer(name string) di.Option

Layer packs layer metadata into a single DI option.

func MergeMetricAttributes added in v1.8.1

func MergeMetricAttributes(defaults []attribute.KeyValue, attrs []attribute.KeyValue) []attribute.KeyValue

func Module

func Module() di.Node

func NewBaseLogger

func NewBaseLogger(cfg Config) (*zap.Logger, error)

func NewEventLogger

func NewEventLogger(log *zap.Logger) fxevent.Logger

func NewLogExporter

func NewLogExporter(ctx context.Context, config Config, opts ...otlploggrpc.Option) (sdklog.Exporter, error)

func NewLogger

func NewLogger(config Config, lp *LoggerProvider) (*zap.Logger, error)

func NewMetricExporter

func NewMetricExporter(ctx context.Context, config Config) (sdkmetric.Exporter, error)

func NewResource

func NewResource(ctx context.Context, config Config) (*resource.Resource, error)

func NewTraceExporter

func NewTraceExporter(ctx context.Context, config Config, opts ...otlptracegrpc.Option) (sdktrace.SpanExporter, error)

func ParseHeaders added in v1.8.1

func ParseHeaders(value string) map[string]string

func ParseSlogLevel added in v1.9.2

func ParseSlogLevel(level string) slog.Level

func ParseTimeoutMS added in v1.8.1

func ParseTimeoutMS(value string) (int, bool)

func UseRuntimeMetrics added in v1.7.0

func UseRuntimeMetrics() di.Node

func WithLogger

func WithLogger(ctx context.Context, logger *zap.Logger) context.Context

WithLogger stores a zap.Logger in context for later span creation.

func WithTracer

func WithTracer(ctx context.Context, tracer trace.Tracer) context.Context

WithTracer stores a trace.Tracer in context for later span creation.

func ZapFieldsFromContext

func ZapFieldsFromContext(ctx context.Context, buf *[4]zap.Field) []zap.Field

ZapFieldsFromContext appends fields into the provided buffer and returns a slice of the populated entries. It avoids heap allocations when the caller reuses buf.

Types

type Attached

type Attached struct {
	Logger         *zap.Logger
	TracerProvider *TracerProvider
}

Attached is a marker indicating telemetry has been wired.

func AttachTelemetryToObservables

func AttachTelemetryToObservables(logger *zap.Logger, tp *TracerProvider, mp *MeterProvider, config Config, observables ...Observable) Attached

type Config

type Config struct {
	ServiceName   string            `mapstructure:"service_name"`
	LogLevel      string            `mapstructure:"log_level" default:"info"`
	Enabled       bool              `mapstructure:"enabled" default:"false"`
	ResourceAttrs map[string]string `mapstructure:"resource_attributes"`
	OTLP          OTLPConfig        `mapstructure:"otlp"`
	Traces        TracesConfig      `mapstructure:"traces"`
	Logs          LogsConfig        `mapstructure:"logs"`
	Metrics       MetricsConfig     `mapstructure:"metrics"`
}

func (Config) OTLPForLogs

func (c Config) OTLPForLogs() OTLPConfig

OTLPForLogs returns the merged OTLP config for logs.

func (Config) OTLPForMetrics

func (c Config) OTLPForMetrics() OTLPConfig

OTLPForMetrics returns the merged OTLP config for metrics.

func (Config) OTLPForTraces

func (c Config) OTLPForTraces() OTLPConfig

OTLPForTraces returns the merged OTLP config for traces.

type LayerMetadata

type LayerMetadata struct {
	Kind string
	Name string
}

LayerMetadata describes a logical layer used for tracer naming.

type LoggerProvider

type LoggerProvider struct {
	*sdklog.LoggerProvider
}

func NewLoggerProvider

func NewLoggerProvider(ctx context.Context, resource *resource.Resource, exporter sdklog.Exporter) (*LoggerProvider, error)

func (*LoggerProvider) Stop

func (lp *LoggerProvider) Stop(ctx context.Context) error

type LogsConfig

type LogsConfig struct {
	Exporter string     `mapstructure:"exporter" default:"none"`
	OTLP     OTLPConfig `mapstructure:"otlp"`
}

type MeterProvider

type MeterProvider struct {
	*sdkmetric.MeterProvider
}

func NewMeterProvider

func NewMeterProvider(resource *resource.Resource, exporter sdkmetric.Exporter, config Config) (*MeterProvider, error)

func (*MeterProvider) Stop

func (mp *MeterProvider) Stop(ctx context.Context) error

type MetricsConfig

type MetricsConfig struct {
	Exporter string        `mapstructure:"exporter" default:"none"`
	Tuning   MetricsTuning `mapstructure:"tuning"`
	OTLP     OTLPConfig    `mapstructure:"otlp"`
}

type MetricsTuning

type MetricsTuning struct {
	ExportIntervalMS     int    `mapstructure:"export_interval_ms" default:"10000"`
	Temporality          string `mapstructure:"temporality" default:"cumulative"`
	HistogramAggregation string `mapstructure:"histogram_aggregation" default:"explicit_bucket_histogram"`
}

type MockObservable added in v1.2.0

type MockObservable struct {
	mock.Mock
}

MockObservable is an autogenerated mock type for the Observable type

func NewMockObservable added in v1.2.0

func NewMockObservable(t interface {
	mock.TestingT
	Cleanup(func())
}) *MockObservable

NewMockObservable creates a new instance of MockObservable. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. The first argument is typically a *testing.T value.

func (*MockObservable) EXPECT added in v1.2.0

type MockObservable_Expecter added in v1.2.0

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

type MockObservable_apply_Call added in v1.2.0

type MockObservable_apply_Call struct {
	*mock.Call
}

MockObservable_apply_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'apply'

func (*MockObservable_apply_Call) Return added in v1.2.0

func (*MockObservable_apply_Call) Run added in v1.2.0

func (_c *MockObservable_apply_Call) Run(run func(observer *Observer)) *MockObservable_apply_Call

func (*MockObservable_apply_Call) RunAndReturn added in v1.2.0

func (_c *MockObservable_apply_Call) RunAndReturn(run func(observer *Observer)) *MockObservable_apply_Call

type OTLPConfig

type OTLPConfig struct {
	Endpoint    string            `mapstructure:"endpoint"`
	Protocol    string            `mapstructure:"protocol"`
	Headers     map[string]string `mapstructure:"headers"`
	TimeoutMS   int               `mapstructure:"timeout_ms"`
	Compression string            `mapstructure:"compression"`
	Insecure    bool              `mapstructure:"insecure"`
	TLS         TLSConfig         `mapstructure:"tls"`
}

func (OTLPConfig) EndpointForGRPC

func (c OTLPConfig) EndpointForGRPC() string

func (OTLPConfig) EndpointForHTTP

func (c OTLPConfig) EndpointForHTTP() (string, string)

func (OTLPConfig) Timeout

func (c OTLPConfig) Timeout() time.Duration

type Observable

type Observable interface {
	// contains filtered or unexported methods
}

Observable is implemented by types that can receive an Observability instance.

type Observer

type Observer struct {
	*zap.Logger
	trace.Tracer
	otelmetric.Meter
	// contains filtered or unexported fields
}

func From

func From(ctx context.Context) *Observer

From retrieves Obs from context

func NewNopObserver added in v1.2.0

func NewNopObserver() *Observer

func NewObserver

func NewObserver(logger *zap.Logger, tracer trace.Tracer, meter ...otelmetric.Meter) *Observer

func (*Observer) AddCounter added in v1.7.0

func (o *Observer) AddCounter(ctx context.Context, name string, value int64, attrs ...attribute.KeyValue)

func (*Observer) AddFloatCounter added in v1.7.0

func (o *Observer) AddFloatCounter(ctx context.Context, name string, value float64, attrs ...attribute.KeyValue)

func (*Observer) AddFloatUpDownCounter added in v1.7.0

func (o *Observer) AddFloatUpDownCounter(ctx context.Context, name string, value float64, attrs ...attribute.KeyValue)

func (*Observer) AddUpDownCounter added in v1.7.0

func (o *Observer) AddUpDownCounter(ctx context.Context, name string, value int64, attrs ...attribute.KeyValue)

func (*Observer) RecordHistogram added in v1.7.0

func (o *Observer) RecordHistogram(ctx context.Context, name string, value float64, attrs ...attribute.KeyValue)

func (*Observer) RecordIntHistogram added in v1.7.0

func (o *Observer) RecordIntHistogram(ctx context.Context, name string, value int64, attrs ...attribute.KeyValue)

func (*Observer) Span

func (o *Observer) Span(ctx context.Context, name string, opts ...trace.SpanStartOption) (context.Context, *Span)

Span starts a new span and returns enriched context plus span-scoped observability.

func (*Observer) Start

func (o *Observer) Start(ctx context.Context, name string, opts ...trace.SpanStartOption) (context.Context, *Span)

Start is a convenience alias for Span.

func (*Observer) With

func (o *Observer) With(ctx context.Context) context.Context

With stores Obs in context

type RuntimeMetrics added in v1.7.0

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

func NewRuntimeMetrics added in v1.7.0

func NewRuntimeMetrics(mp *MeterProvider, config Config) (*RuntimeMetrics, error)

type SlogResult added in v1.9.2

type SlogResult struct {
	fx.Out
	Handler slog.Handler
	Logger  *slog.Logger
}

func NewSlog added in v1.9.2

func NewSlog(config Config, zapLogger *zap.Logger) SlogResult

type Span

type Span struct {
	*Observer
	// contains filtered or unexported fields
}

func Start

func Start(ctx context.Context, name string, opts ...trace.SpanStartOption) (context.Context, *Span)

Span starts a new span using Observability from context (or a safe default).

func (*Span) End

func (s *Span) End(options ...trace.SpanEndOption)

End closes the span.

type TLSConfig

type TLSConfig struct {
	CAFile             string `mapstructure:"ca_file"`
	CertFile           string `mapstructure:"cert_file"`
	KeyFile            string `mapstructure:"key_file"`
	ServerName         string `mapstructure:"server_name"`
	InsecureSkipVerify bool   `mapstructure:"insecure_skip_verify"`
}

func (TLSConfig) IsZero

func (c TLSConfig) IsZero() bool

func (TLSConfig) Load

func (c TLSConfig) Load() (*tls.Config, error)

type Telemetry

type Telemetry struct {
	Obs *Observer
}

Observable can be embedded to receive an Observability via DI auto-grouping.

func Nop

func Nop() Telemetry

type TracerProvider

type TracerProvider struct {
	*sdktrace.TracerProvider
}

func NewTracerProvider

func NewTracerProvider(ctx context.Context, resource *resource.Resource, config Config, exporter sdktrace.SpanExporter) (*TracerProvider, error)

func (*TracerProvider) Stop

func (tp *TracerProvider) Stop(ctx context.Context) error

type TracesConfig

type TracesConfig struct {
	Exporter   string     `mapstructure:"exporter" default:"none"`
	Sampler    string     `mapstructure:"sampler" default:"parentbased_traceidratio"`
	SamplerArg float64    `mapstructure:"sampler_arg" default:"1"`
	OTLP       OTLPConfig `mapstructure:"otlp"`
}

Jump to

Keyboard shortcuts

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