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_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
required bool

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

env LAKTA_MODULES__OTEL__OTEL__<NAME>__REQUIRED
signals []string default: [traces metrics logs]

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

env LAKTA_MODULES__OTEL__OTEL__<NAME>__SIGNALS