otel

package
v0.0.0-...-ceb3dac Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2026 License: AGPL-3.0 Imports: 49 Imported by: 0

Documentation

Overview

Package otel provides OpenTelemetry tracing, metrics, and logging initialization and utilities.

Index

Constants

View Source
const MaxTelemetryPayloadSize = 1024 * 1024 // 1MB

MaxTelemetryPayloadSize is the maximum size of telemetry payloads accepted by the proxy. This prevents denial-of-service attacks through excessively large payloads.

Variables

This section is empty.

Functions

This section is empty.

Types

type DBDriverConfig

type DBDriverConfig struct {
	Driver         string
	DataSourceName string
	EnableTracing  bool
}

DBDriverConfig holds configuration for creating a traced database driver.

type FrontendSpan

type FrontendSpan struct {
	TraceID      string                 `json:"traceId"`
	SpanID       string                 `json:"spanId"`
	ParentSpanID string                 `json:"parentSpanId,omitempty"`
	Name         string                 `json:"name"`
	Kind         string                 `json:"kind,omitempty"`
	StartTime    int64                  `json:"startTime"` // Unix milliseconds
	EndTime      int64                  `json:"endTime"`   // Unix milliseconds
	Attributes   map[string]interface{} `json:"attributes,omitempty"`
	Status       *SpanStatus            `json:"status,omitempty"`
	Events       []SpanEvent            `json:"events,omitempty"`
}

FrontendSpan represents a span sent from the frontend.

type Provider

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

Provider wraps the OpenTelemetry providers with additional functionality.

func NewProvider

func NewProvider(ctx context.Context, cfg *config.OTelConfig, buildVersion string) (*Provider, error)

NewProvider creates a new OpenTelemetry provider based on the configuration. If OTel is disabled, returns a no-op provider that can still be used safely.

func (*Provider) Config

func (p *Provider) Config() *config.OTelConfig

Config returns the OpenTelemetry configuration.

func (*Provider) DatabaseDriver

func (p *Provider) DatabaseDriver(originalDriver string) string

DatabaseDriver returns the driver name to use for database connections. If tracing is enabled, this returns the instrumented driver name.

func (*Provider) DatabaseTracingEnabled

func (p *Provider) DatabaseTracingEnabled() bool

DatabaseTracingEnabled returns true if database tracing is enabled.

func (*Provider) IsEnabled

func (p *Provider) IsEnabled() bool

IsEnabled returns true if OpenTelemetry tracing is enabled.

func (*Provider) Logger

func (p *Provider) Logger(name string, opts ...otellog.LoggerOption) otellog.Logger

Logger returns a named logger from this provider.

func (*Provider) LoggerProvider

func (p *Provider) LoggerProvider() otellog.LoggerProvider

LoggerProvider returns the underlying OpenTelemetry LoggerProvider.

func (*Provider) Meter

func (p *Provider) Meter(name string, opts ...metric.MeterOption) metric.Meter

Meter returns a named meter from this provider.

func (*Provider) MeterProvider

func (p *Provider) MeterProvider() metric.MeterProvider

MeterProvider returns the underlying OpenTelemetry MeterProvider.

func (*Provider) NewDBDriver

func (p *Provider) NewDBDriver(cfg DBDriverConfig) (*entsql.Driver, error)

NewDBDriver creates a new database driver with optional tracing.

func (*Provider) OpenDatabase

func (p *Provider) OpenDatabase(driverName, dataSourceName string) (*sql.DB, error)

OpenDatabase opens a database connection with optional OpenTelemetry instrumentation. This wraps the standard sql.Open with tracing if enabled.

func (*Provider) OpenEntDriver

func (p *Provider) OpenEntDriver(driverName, dataSourceName string) (*entsql.Driver, error)

OpenEntDriver opens an Ent SQL driver with optional OpenTelemetry instrumentation.

func (*Provider) ProxyHandler

func (p *Provider) ProxyHandler() http.HandlerFunc

ProxyHandler handles telemetry data from the frontend. This forwards frontend telemetry data to the configured OTLP endpoint, allowing for distributed tracing across the full stack.

func (*Provider) Shutdown

func (p *Provider) Shutdown(ctx context.Context) error

Shutdown gracefully shuts down the trace provider.

func (*Provider) Tracer

func (p *Provider) Tracer(name string, opts ...trace.TracerOption) trace.Tracer

Tracer returns a named tracer from this provider.

func (*Provider) TracerProvider

func (p *Provider) TracerProvider() trace.TracerProvider

TracerProvider returns the underlying OpenTelemetry TracerProvider.

func (*Provider) WrapEntDriver

func (p *Provider) WrapEntDriver(drv *entsql.Driver, _ string) *entsql.Driver

WrapEntDriver wraps an existing Ent driver with tracing. This is useful when you have an existing driver and want to add tracing.

type SpanEvent

type SpanEvent struct {
	Name       string                 `json:"name"`
	Time       int64                  `json:"time"` // Unix milliseconds
	Attributes map[string]interface{} `json:"attributes,omitempty"`
}

SpanEvent represents an event within a span.

type SpanStatus

type SpanStatus struct {
	Code    string `json:"code"` // "ok", "error", "unset"
	Message string `json:"message,omitempty"`
}

SpanStatus represents the status of a span.

type TelemetryPayload

type TelemetryPayload struct {
	ResourceAttributes map[string]interface{} `json:"resourceAttributes,omitempty"`
	Spans              []FrontendSpan         `json:"spans"`
}

TelemetryPayload represents the payload sent from the frontend.

type ZerologOTelHook

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

ZerologOTelHook forwards zerolog events to OpenTelemetry logs.

func NewZerologOTelHook

func NewZerologOTelHook(lp otellog.LoggerProvider, name string) *ZerologOTelHook

NewZerologOTelHook creates a new hook using the provided LoggerProvider and logger name.

func (*ZerologOTelHook) Run

func (h *ZerologOTelHook) Run(e *zerolog.Event, level zerolog.Level, msg string)

Run implements zerolog.Hook and emits an OTel log Record with severity and message.

Jump to

Keyboard shortcuts

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