otel

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Jul 20, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package otel provides an OpenTelemetry Tracer adapter for Modulex.

It implements the modulex.Tracer interface using an OpenTelemetry TracerProvider, preserving span ancestry and recording errors with the appropriate span status.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HTTPMiddleware added in v0.2.0

func HTTPMiddleware(tp oteltrace.TracerProvider, opts ...HTTPOption) func(http.Handler) http.Handler

HTTPMiddleware returns an HTTP middleware that creates a span for each request. It extracts W3C trace context from incoming headers, records HTTP attributes (method, path, status code), and marks 5xx responses as errors.

If tp is nil, the global OpenTelemetry TracerProvider is used.

func NewTracer

func NewTracer(provider oteltrace.TracerProvider) modulex.Tracer

NewTracer creates a Modulex Tracer backed by OpenTelemetry.

If provider is nil, the global OpenTelemetry TracerProvider is used. The returned tracer is safe for concurrent use.

func SubscriberMiddleware added in v0.2.0

func SubscriberMiddleware(tp oteltrace.TracerProvider, opts ...SubscriberOption) func(topic string, handler modulex.EventHandler) modulex.EventHandler

SubscriberMiddleware wraps an EventHandler with automatic span creation. Each handler invocation gets a child span named after the topic, with the topic recorded as an attribute. Handler errors are recorded on the span.

If tp is nil, the global OpenTelemetry TracerProvider is used.

Types

type HTTPOption added in v0.2.0

type HTTPOption func(*httpConfig)

HTTPOption configures the HTTP middleware.

func WithHTTPSpanName added in v0.2.0

func WithHTTPSpanName(fn func(r *http.Request) string) HTTPOption

WithHTTPSpanName sets a custom span naming function. The default uses the HTTP method as the span name.

type Span

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

Span adapts an OpenTelemetry span to modulex.Span.

func (*Span) End

func (s *Span) End()

End implements modulex.Span.

func (*Span) RecordError

func (s *Span) RecordError(err error)

RecordError implements modulex.Span.

func (*Span) SetAttributes

func (s *Span) SetAttributes(attrs map[string]any)

SetAttributes implements modulex.Span.

type SubscriberOption added in v0.2.0

type SubscriberOption func(*subscriberConfig)

SubscriberOption configures the subscriber middleware.

func WithSubscriberTopicAttr added in v0.2.0

func WithSubscriberTopicAttr(key string) SubscriberOption

WithSubscriberTopicAttr sets the attribute key used to record the topic name on subscriber spans. Default is "messaging.destination".

type Tracer

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

Tracer adapts an OpenTelemetry TracerProvider to modulex.Tracer.

func (*Tracer) ContextWithSpanContext

func (t *Tracer) ContextWithSpanContext(ctx context.Context, sc modulex.SpanContext) context.Context

ContextWithSpanContext implements modulex.Tracer.

func (*Tracer) SpanContextFromContext

func (t *Tracer) SpanContextFromContext(ctx context.Context) modulex.SpanContext

SpanContextFromContext implements modulex.Tracer.

func (*Tracer) Start

func (t *Tracer) Start(ctx context.Context, spanName string, attrs map[string]any) (context.Context, modulex.Span)

Start implements modulex.Tracer.

Jump to

Keyboard shortcuts

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