Skip to content

OpenTelemetry

pkg/otel manages the OpenTelemetry SDK lifecycle — initializing trace, metric, and log providers on startup and flushing them on shutdown.

lakta.NewRuntime(
config.NewModule(
config.WithConfigDirs(".", "./config"),
config.WithArgs(os.Args[1:]),
),
tint.NewModule(),
slog.NewModule(),
otel.NewModule(), // after logger, before app modules
)
DI typeDescription
trace.TracerProviderOTLP trace exporter
metric.MeterProviderOTLP metric exporter
*slog.LoggerOTel log bridge (wraps the existing logger)
tracer := do.MustInvoke[trace.TracerProvider](injector).Tracer("my-service")
ctx, span := tracer.Start(ctx, "operation-name")
defer span.End()

Config path: modules.otel.otel.<name>

service_name string default: lakta

serviceName specifies the OpenTelemetry service name

env LAKTA_MODULES_OTEL_OTEL_<NAME>_SERVICE_NAME
service_version string

serviceVersion is included as semconv.ServiceVersionKey in the resource

env LAKTA_MODULES_OTEL_OTEL_<NAME>_SERVICE_VERSION
service_namespace string

serviceNamespace is included as semconv.ServiceNamespaceKey in the resource

env LAKTA_MODULES_OTEL_OTEL_<NAME>_SERVICE_NAMESPACE
environment string

environment is the deployment environment (e.g. "production", "staging")

env LAKTA_MODULES_OTEL_OTEL_<NAME>_ENVIRONMENT
endpoint string

endpoint overrides the OTLP exporter endpoint. Empty uses the SDK default (env vars)

env LAKTA_MODULES_OTEL_OTEL_<NAME>_ENDPOINT
protocol string default: grpc

protocol sets the OTLP transport: "grpc" (default), "http/protobuf", or "http/json"

env LAKTA_MODULES_OTEL_OTEL_<NAME>_PROTOCOL
insecure bool

insecure disables TLS on the OTLP connection — useful for local collectors

env LAKTA_MODULES_OTEL_OTEL_<NAME>_INSECURE
headers map[string]string

headers are additional headers sent with every OTLP export (e.g. auth tokens)

env LAKTA_MODULES_OTEL_OTEL_<NAME>_HEADERS
sample_rate float64 default: 1

sampleRate sets the trace sampling ratio. 1.0 = always sample, 0.0 = never sample

env LAKTA_MODULES_OTEL_OTEL_<NAME>_SAMPLE_RATE
metric_interval time.Duration default: 1m0s

metricInterval sets the periodic metric export interval

env LAKTA_MODULES_OTEL_OTEL_<NAME>_METRIC_INTERVAL
runtime_interval time.Duration default: 1s

runtimeInterval sets the minimum Go runtime stats collection interval

env LAKTA_MODULES_OTEL_OTEL_<NAME>_RUNTIME_INTERVAL
enabled bool default: true

enabled controls whether OTEL is set up. When false, noop providers are registered

env LAKTA_MODULES_OTEL_OTEL_<NAME>_ENABLED
signals []string default: [traces metrics logs]

signals lists which telemetry signals to enable: "traces", "metrics", "logs"

env LAKTA_MODULES_OTEL_OTEL_<NAME>_SIGNALS