Skip to content

Resource

OpenTelemetry resource service and layers.

An OpenTelemetry resource identifies the process or service that emits spans, metrics, and logs. This module stores that resource in Effect context and provides layers for creating it from explicit service metadata, from OTEL_SERVICE_NAME and OTEL_RESOURCE_ATTRIBUTES, or as an empty resource. It also includes configToAttributes for turning service metadata into raw OpenTelemetry attributes.

5 exports Added in v4.0.0 Source

Converting

Converts resource configuration into OpenTelemetry attributes, adding service name, optional service version, and telemetry SDK metadata.

When to use

Use to turn explicit service metadata into a raw OpenTelemetry attribute map for lower-level resource construction or merging with environment-derived attributes via layerFromEnv.

Details

The returned record copies attributes first, then sets service.name, telemetry.sdk.name, and telemetry.sdk.language. service.version is included only when serviceVersion is provided.

Gotchas

Custom values for service.name and telemetry.sdk.* are overwritten by this helper. An empty serviceVersion is treated as absent.

See

  • layer for creating a Resource layer from explicit metadata
  • layerFromEnv for merging attributes with OpenTelemetry environment variables

Signature

declare function configToAttributes(options: {
  readonly attributes?: any;
  readonly serviceName: string;
  readonly serviceVersion?: string;
}): Record<string, string>;

Layers

layer

Added in v4.0.0 Source

Creates a Resource layer from service metadata and additional OpenTelemetry attributes.

Signature

declare function layer(config: {
  readonly attributes?: any;
  readonly serviceName: string;
  readonly serviceVersion?: string;
}): Layer<Resource, never, never>;

layerEmpty

Added in v4.0.0 Source

Layer that provides an empty OpenTelemetry resource.

Signature

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

layerFromEnv

Added in v4.0.0 Source

Creates a Resource layer from OpenTelemetry environment variables, optionally merging additional attributes.

Signature

declare function layerFromEnv(additionalAttributes?: any): Layer<Resource>;

Services

Resource

Added in v4.0.0 Source

Service tag for OpenTelemetry metadata attached to emitted telemetry.

When to use

Use to provide process, service, and deployment metadata that should be attached to spans, metrics, and logs.

Signature

declare class Resource extends Shape<"@effect/opentelemetry/Resource", Resource, this> {
  constructor(_: never);
}