Documentation
¶
Overview ¶
Package shotel provides an OpenTelemetry bridge for Go observability libraries.
Index ¶
- type Config
- type Exporter
- type Observable
- type Shotel
- func (s *Shotel) CreateLogHandler() func(context.Context, any) error
- func (s *Shotel) CreateSlogHandler() slog.Handler
- func (s *Shotel) ObserveMetrics(observable Observable, keys ...metricz.Key)
- func (s *Shotel) ObserveTraces(traceable Traceable)
- func (s *Shotel) SetGlobalOtelLogger()
- func (s *Shotel) SetGlobalSlogHandler()
- func (s *Shotel) Shutdown(ctx context.Context) error
- type Traceable
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
// ServiceName identifies this service in telemetry data
ServiceName string
// Endpoint is the OTLP collector endpoint (default: localhost:4317)
Endpoint string
// MetricsInterval is how often to poll and export metrics (default: 10s)
MetricsInterval time.Duration
// Insecure disables TLS for the OTLP connection (default: false)
Insecure bool
// Logger for shotel operations (default: slog.Default())
Logger *slog.Logger
}
Config holds configuration for the OpenTelemetry bridge.
func DefaultConfig ¶
DefaultConfig returns a Config with sensible defaults.
type Exporter ¶
type Exporter struct {
// contains filtered or unexported fields
}
Exporter manages OTLP exporters for metrics, traces, and logs.
func NewExporter ¶
NewExporter creates OTLP exporters for metrics, traces, and logs. If cfg.Endpoint is empty, creates in-memory exporters suitable for testing.
func (*Exporter) LogProvider ¶
func (e *Exporter) LogProvider() *sdklog.LoggerProvider
LogProvider returns the log provider for log record creation.
func (*Exporter) MetricReader ¶
MetricReader returns the metric reader for integration with MeterProvider.
func (*Exporter) SetLogger ¶ added in v0.0.3
SetLogger updates the logger used by the exporter. Note: This is called internally by Shotel during construction.
func (*Exporter) TraceProvider ¶
func (e *Exporter) TraceProvider() *sdktrace.TracerProvider
TraceProvider returns the trace provider for span creation.
type Observable ¶
Observable defines components that expose metrics.
type Shotel ¶
type Shotel struct {
// contains filtered or unexported fields
}
Shotel manages the bridge between application observables and OTLP.
func (*Shotel) CreateLogHandler ¶
CreateLogHandler returns a hook handler function that sends events to OTLP logs. This handler can be registered with hookz events or any context-aware event system.
Usage with hookz:
handler := shotel.CreateLogHandler() engine.OnRequestReceived(handler) engine.OnRequestCompleted(handler)
func (*Shotel) CreateSlogHandler ¶
CreateSlogHandler returns an slog.Handler that sends logs to OTLP. This allows standard structured logging to be exported via OTLP.
Usage:
logger := slog.New(shotel.CreateSlogHandler())
logger.Info("request received", "method", "GET", "path", "/api/users")
func (*Shotel) ObserveMetrics ¶
func (s *Shotel) ObserveMetrics(observable Observable, keys ...metricz.Key)
ObserveMetrics registers an observable and starts polling specified metric keys.
func (*Shotel) ObserveTraces ¶
ObserveTraces registers a traceable and bridges its spans to OTLP.
func (*Shotel) SetGlobalOtelLogger ¶
func (s *Shotel) SetGlobalOtelLogger()
SetGlobalOtelLogger sets the global OTLP logger provider. This allows other OTLP-aware libraries to use the same log provider.
func (*Shotel) SetGlobalSlogHandler ¶
func (s *Shotel) SetGlobalSlogHandler()
SetGlobalSlogHandler sets the global slog default handler to use OTLP. This redirects all slog.Info/Warn/Error calls to OTLP automatically.