Documentation
¶
Index ¶
- Variables
- func SetupLogging(exporter *otlploghttp.Exporter, res *resource.Resource) *sdklog.LoggerProvider
- func SetupTracing(exporter *otlptrace.Exporter, res *resource.Resource) *sdktrace.TracerProvider
- func SpanLogger(ctx context.Context, name string, attributes ...attribute.KeyValue) (context.Context, trace.Span, *log.Logger)
- func TraceGRPCMiddleware(cfg *Config) connect.Interceptor
- func TraceHttpMiddleware(cfg *Config, next http.Handler) http.Handler
- func WrapLoggerWithOtel(logger *log.Logger)
- type Config
- type Manager
- func (m *Manager) AfterInitialize(ctx context.Context) error
- func (m *Manager) AfterShutDown(ctx context.Context) error
- func (m *Manager) BeforeShutdown(ctx context.Context) error
- func (m *Manager) SetExporter(exporter *otlptrace.Exporter)
- func (m *Manager) SetLogExporter(exporter *otlploghttp.Exporter)
- func (m *Manager) SetLogProvider(provider *sdklog.LoggerProvider)
- func (m *Manager) SetTraceProvider(provider *sdktrace.TracerProvider)
- func (m *Manager) ShutdownCleanup(ctx context.Context) error
- type OtelLogHandler
Constants ¶
This section is empty.
Variables ¶
var ( // OtelConfigSet contains all configuration flags for OpenTelemetry telemetry OtelConfigSet = config.New("otel") // EnabledFlag controls whether OpenTelemetry telemetry is enabled EnabledFlag = OtelConfigSet.Bool("otel.enabled", false, "Enable OpenTelemetry telemetry") // EndpointFlag specifies the OTLP collector endpoint EndpointFlag = OtelConfigSet.String("otel.endpoint", "localhost:4318", "OpenTelemetry collector endpoint (OTLP HTTP)") // ServiceNameFlag specifies the service name for traces ServiceNameFlag = OtelConfigSet.String("otel.service-name", mechanus.SERVICE_NAME, "Service name for OpenTelemetry traces") // InsecureFlag controls whether to use insecure connection to OTLP collectorSERVICE_NAME InsecureFlag = OtelConfigSet.Bool("otel.insecure", true, "Use insecure connection to OTLP collector") )
Functions ¶
func SetupLogging ¶
func SetupLogging(exporter *otlploghttp.Exporter, res *resource.Resource) *sdklog.LoggerProvider
SetupLogging creates and configures the OpenTelemetry log provider
func SetupTracing ¶
func SpanLogger ¶
func SpanLogger(ctx context.Context, name string, attributes ...attribute.KeyValue) (context.Context, trace.Span, *log.Logger)
SpanLogger starts a new span and returns a context containing the span and a SpanLogger
func TraceGRPCMiddleware ¶
func TraceGRPCMiddleware(cfg *Config) connect.Interceptor
TraceGRPCMiddleware returns a Connect interceptor that adds OpenTelemetry telemetry to gRPC requests
func TraceHttpMiddleware ¶
TraceHttpMiddleware wraps an HTTP handler with OpenTelemetry instrumentation
func WrapLoggerWithOtel ¶
WrapLoggerWithOtel wraps the charm.sh logger with an OpenTelemetry bridge. This intercepts log calls and forwards them to OpenTelemetry while maintaining the original logging behavior. Since charm.sh logger implements slog.Handler, we wrap it and set it as the default slog handler.
Types ¶
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager handles the lifecycle of the OpenTelemetry providers
func (*Manager) AfterInitialize ¶
AfterInitialize is called during the initialization phase
func (*Manager) AfterShutDown ¶
AfterShutDown is called after shutdown completes
func (*Manager) BeforeShutdown ¶
BeforeShutdown is called before shutdown begins
func (*Manager) SetExporter ¶
func (*Manager) SetLogExporter ¶
func (m *Manager) SetLogExporter(exporter *otlploghttp.Exporter)
func (*Manager) SetLogProvider ¶
func (m *Manager) SetLogProvider(provider *sdklog.LoggerProvider)
func (*Manager) SetTraceProvider ¶
func (m *Manager) SetTraceProvider(provider *sdktrace.TracerProvider)
type OtelLogHandler ¶
type OtelLogHandler struct {
// contains filtered or unexported fields
}
OtelLogHandler is a slog.Handler that forwards log entries to OpenTelemetry. It wraps the original charm.sh logger handler to maintain existing functionality while also sending logs to the OpenTelemetry collector.
func NewOtelLogHandler ¶
func NewOtelLogHandler(original slog.Handler) *OtelLogHandler
NewOtelLogHandler creates a new handler that forwards logs to both the original handler and OpenTelemetry.
func (*OtelLogHandler) Enabled ¶
Enabled returns true if the handler is enabled for the given level.
func (*OtelLogHandler) Handle ¶
Handle forwards the log record to both the original handler and OpenTelemetry.