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 ¶
- func HTTPMiddleware(tp oteltrace.TracerProvider, opts ...HTTPOption) func(http.Handler) http.Handler
- func NewTracer(provider oteltrace.TracerProvider) modulex.Tracer
- func SubscriberMiddleware(tp oteltrace.TracerProvider, opts ...SubscriberOption) func(topic string, handler modulex.EventHandler) modulex.EventHandler
- type HTTPOption
- type Span
- type SubscriberOption
- type Tracer
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) RecordError ¶
RecordError implements modulex.Span.
func (*Span) SetAttributes ¶
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.