effect-io-ai

Package: @effect/opentelemetry
Module: OtelMetrics

OtelMetrics.layer

Creates a Layer that registers a metric producer with metric readers.

Example (Creating a metrics layer with temporality)

import { OtelMetrics } from "@effect/opentelemetry"
import { PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics"
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http"

const metricExporter = new OTLPMetricExporter({ url: "<your-otel-url>" })

// Use delta temporality for backends like Datadog or Dynatrace
const metricsLayer = OtelMetrics.layer(
  () => new PeriodicExportingMetricReader({
    exporter: metricExporter,
    exportIntervalMillis: 10000
  }),
  { temporality: "delta" }
)

// Use cumulative temporality for backends like Prometheus (default)
const cumulativeLayer = OtelMetrics.layer(
  () => new PeriodicExportingMetricReader({ exporter: metricExporter }),
  { temporality: "cumulative" }
)

Signature

declare const layer: (evaluate: LazyArg<MetricReader | Arr.NonEmptyReadonlyArray<MetricReader>>, options?: { readonly shutdownTimeout?: Duration.Input | undefined; readonly temporality?: TemporalityPreference | undefined; }) => Layer.Layer<never, never, Resource>

Source

Since v4.0.0