util

package
v0.0.0-...-0c3af6b Latest Latest
Warning

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

Go to latest
Published: Jan 3, 2024 License: MIT Imports: 19 Imported by: 0

Documentation

Overview

Package util has some helpers for setting up common components.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetResourceHostName

func GetResourceHostName(r *resource.Resource) string

GetResourceHostName returns the hostname from the resource, see semconv.HostName.

func GetResourceServiceName

func GetResourceServiceName(r *resource.Resource) string

GetResourceServiceName returns the service name from the resource, see semconv.ServiceName.

func LoggerFromContext

func LoggerFromContext(ctx context.Context) *slog.Logger

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

func LogrFromSlog(logger *slog.Logger) logr.Logger

LogrFromSlog returns a logr.Logger from a slog.Logger. This is useful for setting up the opentelemetry logger.

func NewDefaultResource

func NewDefaultResource(serviceName, serviceVersion string) (*resource.Resource, error)

NewDefaultResource creates an OTEL resource with a few useful semconv attributes

func NewLoggerForResource

func NewLoggerForResource(r *resource.Resource, level slog.Leveler) *slog.Logger

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

func ServeMetrics(address string) func() error

ServeMetrics starts an HTTP server to serve prometheus metrics

func SetContext

func SetContext(ctx context.Context, logger *slog.Logger) context.Context

SetContext sets the provided logger as a context value, to be later retrieved using LoggerFromContext.

func SetupDefaultEnvironment

func SetupDefaultEnvironment(ctx context.Context, c Config) error

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

Jump to

Keyboard shortcuts

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