otel

package
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Feb 6, 2026 License: MIT Imports: 37 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 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 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 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, 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
	// 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) *Observer

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