Package: @effect/opentelemetry
Module: OtelMetrics
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>
Since v4.0.0