Documentation
¶
Overview ¶
Package util has some helpers for setting up common components.
Index ¶
- func GetResourceHostName(r *resource.Resource) string
- func GetResourceServiceName(r *resource.Resource) string
- func LoggerFromContext(ctx context.Context) *slog.Logger
- func LogrFromSlog(logger *slog.Logger) logr.Logger
- func NewDefaultResource(serviceName, serviceVersion string) (*resource.Resource, error)
- func NewLoggerForResource(r *resource.Resource, level slog.Leveler) *slog.Logger
- func NewMeterProviderForResource(r *resource.Resource) (*metric.MeterProvider, error)
- func NewTracerProviderForResource(ctx context.Context, r *resource.Resource, opts ...otlptracegrpc.Option) (*trace.TracerProvider, error)
- func ServeMetrics(address string) func() error
- func SetContext(ctx context.Context, logger *slog.Logger) context.Context
- func SetupDefaultEnvironment(ctx context.Context, c Config) error
- func UnaryServerInterceptor(logger *slog.Logger) grpc.UnaryServerInterceptor
- type Config
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetResourceHostName ¶
GetResourceHostName returns the hostname from the resource, see semconv.HostName.
func GetResourceServiceName ¶
GetResourceServiceName returns the service name from the resource, see semconv.ServiceName.
func LoggerFromContext ¶
LoggerFromContext returns a slog.Logger from the context, with trace/span IDs set as log attributes. The logger can be injected into the context using SetContext or UnaryServerInterceptor. If no slog.Logger is found in the context, the default logger is returned, but will still have trace/span IDs set as log attributes if available.
func LogrFromSlog ¶
LogrFromSlog returns a logr.Logger from a slog.Logger. This is useful for setting up the opentelemetry logger.
func NewDefaultResource ¶
NewDefaultResource creates an OTEL resource with a few useful semconv attributes
func NewLoggerForResource ¶
NewLoggerForResource creates a new slog.Logger with some attributes from the resource
func NewMeterProviderForResource ¶
func NewMeterProviderForResource(r *resource.Resource) (*metric.MeterProvider, error)
NewMeterProviderForResource creates a prometheus-based OTEL MeterProvider with a default resource
func NewTracerProviderForResource ¶
func NewTracerProviderForResource(ctx context.Context, r *resource.Resource, opts ...otlptracegrpc.Option) (*trace.TracerProvider, error)
NewTracerProviderForResource creates an OTEL TracerProvider with a default resource
func ServeMetrics ¶
ServeMetrics starts an HTTP server to serve prometheus metrics
func SetContext ¶
SetContext sets the provided logger as a context value, to be later retrieved using LoggerFromContext.
func SetupDefaultEnvironment ¶
SetupDefaultEnvironment creates and registers components for logging, metrics, and tracing
func UnaryServerInterceptor ¶
func UnaryServerInterceptor(logger *slog.Logger) grpc.UnaryServerInterceptor
UnaryServerInterceptor returns a grpc.UnaryServerInterceptor that helps to make a logger accessible from GRPC context, see LoggerFromContext.
Types ¶
type Config ¶
type Config struct { ServiceName string // ServiceName is applied to the otel resource ServiceVersion string // ServiceVersion is applied to the otel resource OTLPEndpoint string // OTLPEndpoint is the endpoint for the OTLP exporter LogLevel slog.Leveler // LogLevel is the log level }
Config is passed to SetupDefaultEnvironment to configure the environment