NodeSdk.ts
NodeSdk.ts overview
Section titled “NodeSdk.ts overview”Node.js OpenTelemetry setup for Effect applications.
This module exports a Configuration type and layers for installing
tracing, metrics, and logging in Node.js. The main layer builds the shared
OpenTelemetry resource from environment variables and optional service
metadata, then enables only the signal types that have processors or readers
configured. layerTracerProvider creates a scoped Node tracer provider, and
layerEmpty provides an empty resource.
Since v4.0.0
Exports Grouped by Category
Section titled “Exports Grouped by Category”layers
Section titled “layers”Creates a Node OpenTelemetry layer from configuration, enabling tracing, metrics, and logging only when their processors or readers are supplied.
When to use
Use to install OpenTelemetry support for a Node.js Effect application from one configuration object, enabling tracing, metrics, logging, or any combination of those signals based on the processors and readers supplied.
Details
The configuration can be provided lazily or effectfully. The layer always
provides Resource.Resource, building it from environment variables and any
explicit resource metadata in the configuration.
Gotchas
Register Node auto-instrumentations before importing modules that should be patched, because many Node instrumentations hook module loading.
Signature
declare const layer: { (evaluate: LazyArg<Configuration>): Layer.Layer<Resource.Resource> <R, E>(evaluate: Effect.Effect<Configuration, E, R>): Layer.Layer<Resource.Resource, E, R>}Since v4.0.0
layerEmpty
Section titled “layerEmpty”Layer that provides an empty OpenTelemetry Resource.
Signature
declare const layerEmpty: Layer.Layer<Resource.Resource, never, never>Since v2.0.0
layerTracerProvider
Section titled “layerTracerProvider”Creates a scoped Node OpenTelemetry tracer provider from one or more span processors and shuts it down when the layer is released.
Signature
declare const layerTracerProvider: ( processor: SpanProcessor | NonEmptyReadonlyArray<SpanProcessor>, config?: Omit<TracerConfig, "resource"> & { readonly shutdownTimeout?: Duration.Input | undefined }) => Layer.Layer<Tracer.OtelTracerProvider, never, Resource.Resource>Since v4.0.0
models
Section titled “models”Configuration (interface)
Section titled “Configuration (interface)”Configuration for the Node OpenTelemetry layer, including optional tracing, metrics, logging, resource, and shutdown settings.
Signature
export interface Configuration { readonly spanProcessor?: SpanProcessor | ReadonlyArray<SpanProcessor> | undefined readonly tracerConfig?: Omit<TracerConfig, "resource"> | undefined readonly metricReader?: MetricReader | ReadonlyArray<MetricReader> | undefined readonly metricTemporality?: Metrics.TemporalityPreference | undefined readonly logRecordProcessor?: LogRecordProcessor | ReadonlyArray<LogRecordProcessor> | undefined readonly loggerProviderConfig?: Omit<LoggerProviderConfig, "resource"> | undefined readonly loggerMergeWithExisting?: boolean | undefined readonly resource?: | { readonly serviceName: string readonly serviceVersion?: string readonly attributes?: Otel.Attributes } | undefined readonly shutdownTimeout?: Duration.Input | undefined}Since v4.0.0