Skip to content

NodeSdk.ts

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



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>
}

Source

Since v4.0.0

Layer that provides an empty OpenTelemetry Resource.

Signature

declare const layerEmpty: Layer.Layer<Resource.Resource, never, never>

Source

Since v2.0.0

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>

Source

Since v4.0.0

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
}

Source

Since v4.0.0