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 type Description
trace.TracerProvider OTLP trace exporter
metric.MeterProvider OTLP metric exporter
*slog.Logger OTel 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_namestringdefault: lakta

serviceName specifies the OpenTelemetry service name

envLAKTA_MODULES__OTEL__OTEL__<NAME>__SERVICE_NAME
service_versionstring

serviceVersion is included as semconv.ServiceVersionKey in the resource

envLAKTA_MODULES__OTEL__OTEL__<NAME>__SERVICE_VERSION
service_namespacestring

serviceNamespace is included as semconv.ServiceNamespaceKey in the resource

envLAKTA_MODULES__OTEL__OTEL__<NAME>__SERVICE_NAMESPACE
environmentstring

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

envLAKTA_MODULES__OTEL__OTEL__<NAME>__ENVIRONMENT
endpointstring

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

envLAKTA_MODULES__OTEL__OTEL__<NAME>__ENDPOINT
protocolstringdefault: grpc

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

envLAKTA_MODULES__OTEL__OTEL__<NAME>__PROTOCOL
insecurebool

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

envLAKTA_MODULES__OTEL__OTEL__<NAME>__INSECURE
headersmap[string]string

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

envLAKTA_MODULES__OTEL__OTEL__<NAME>__HEADERS
sample_ratefloat64default: 1

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

envLAKTA_MODULES__OTEL__OTEL__<NAME>__SAMPLE_RATE
metric_intervaltime.Durationdefault: 1m0s

metricInterval sets the periodic metric export interval

envLAKTA_MODULES__OTEL__OTEL__<NAME>__METRIC_INTERVAL
runtime_intervaltime.Durationdefault: 1s

runtimeInterval sets the minimum Go runtime stats collection interval

envLAKTA_MODULES__OTEL__OTEL__<NAME>__RUNTIME_INTERVAL
enabledbooldefault: true

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

envLAKTA_MODULES__OTEL__OTEL__<NAME>__ENABLED
requiredbool

required makes telemetry setup failures fatal. When false (default), setup

envLAKTA_MODULES__OTEL__OTEL__<NAME>__REQUIRED
signals[]stringdefault: ["traces","metrics","logs"]

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

envLAKTA_MODULES__OTEL__OTEL__<NAME>__SIGNALS