opentelemetry
js/opentelemetry.ts
fino:opentelemetry - tracing, metrics, logs, and SDK helpers.
This backward-compatible facade re-exports the public OpenTelemetry surface
from signal-specific modules and SDK helpers. New code can import narrower
surfaces from fino:opentelemetry/traces, fino:opentelemetry/metrics,
fino:opentelemetry/logs, and fino:opentelemetry/sdk.
Use this facade when configuring telemetry for an application or when
creating manual spans, logs, or metrics. Defaults are intentionally local:
the SDK exporter targets OTLP/HTTP on http://127.0.0.1:4318, trace context
uses W3C traceparent, tracestate, and baggage, and resources default
to unknown_service until a service name is provided.
The release baseline is Fino-native rather than strict package parity with
@opentelemetry/api or upstream SDK packages. It covers stable tracing,
metrics, logs, resources, propagation, in-memory export, and OTLP/HTTP JSON
export. OTLP protobuf, OTLP/gRPC, and full upstream semantic-convention
package compatibility are intentionally outside this module's baseline.
Conformance matrix
| Area | Baseline | Coverage |
|---|---|---|
| Traces | Fino-native tracer/provider/span model with W3C context fields, span events, links, status, limits, and in-memory or OTLP export. | tests/opentelemetry.test.ts |
| Logs | Log records, severities, attributes, resource/scope metadata, active trace correlation, and export through SDK processors. | tests/opentelemetry.test.ts |
| Metrics | Counters, up-down counters, histograms, gauges, observable instruments, views, exemplars, and aggregation export. | tests/opentelemetry.test.ts |
| Resources | Default unknown_service, user attributes, merging, schema URL, and resource metadata on exported signals. |
tests/opentelemetry.test.ts |
| W3C Trace Context | traceparent and tracestate inject/extract propagation for active telemetry contexts. |
tests/opentelemetry.test.ts |
| W3C Baggage | Baggage item parsing, mutation, serialization, and carrier propagation. | tests/opentelemetry.test.ts |
| OTLP/HTTP JSON | JSON request shape for trace, metric, and log signal export over OTLP/HTTP. | tests/opentelemetry-http.integration.test.ts |
| Retry | Configurable retry attempts, delay, backoff, jitter, and retryable HTTP failure handling. | tests/opentelemetry-http.integration.test.ts |
| Compression | OTLP/HTTP JSON gzip request compression. | tests/opentelemetry-http.integration.test.ts |
| Partial success | OTLP partial-success responses are surfaced without treating the export as a transport failure. | tests/opentelemetry-http.integration.test.ts |
| Upstream package parity | Intentional limit: module names, constructors, semantic-convention packages, and SDK shape are Fino-native rather than a drop-in upstream package mirror. | Documented release boundary |
| OTLP protobuf | Intentional limit: protobuf encoding is outside the current release baseline. | Documented release boundary |
| OTLP/gRPC | Intentional limit: gRPC transport is outside the current release baseline. | Documented release boundary |
import { OtelSDK, InMemoryExporter, getTracerProvider } from 'fino:opentelemetry';
const memory = new InMemoryExporter();
new OtelSDK({ exporters: [memory] }).start();
const span = getTracerProvider().getTracer('app').startSpan('work');
span.end();
See OpenTelemetry concepts: https://opentelemetry.io/docs/concepts/
Classes
class AlwaysOnSampler extends Sampler {
Re-exported from js/opentelemetry/traces.AlwaysOnSampler.
class Sampler {
Re-exported from js/opentelemetry/traces.Sampler.
class Span {
Re-exported from js/opentelemetry/traces.Span.
class Tracer {
Re-exported from js/opentelemetry/traces.Tracer.
class TracerProvider extends BaseProvider {
Re-exported from js/opentelemetry/traces.TracerProvider.
class Counter {
Re-exported from js/opentelemetry/metrics.Counter.
class Gauge {
Re-exported from js/opentelemetry/metrics.Gauge.
class HistogramInstrument {
Re-exported from js/opentelemetry/metrics.HistogramInstrument.
class Meter {
Re-exported from js/opentelemetry/metrics.Meter.
class MeterProvider extends BaseProvider {
Re-exported from js/opentelemetry/metrics.MeterProvider.
class ObservableCounter extends ObservableGauge {
Re-exported from js/opentelemetry/metrics.ObservableCounter.
class ObservableGauge {
Re-exported from js/opentelemetry/metrics.ObservableGauge.
class ObservableUpDownCounter extends ObservableGauge {
Re-exported from js/opentelemetry/metrics.ObservableUpDownCounter.
class UpDownCounter {
Re-exported from js/opentelemetry/metrics.UpDownCounter.
class LogRecordBuilder {
Re-exported from js/opentelemetry/logs.LogRecordBuilder.
class Logger {
Re-exported from js/opentelemetry/logs.Logger.
class LoggerProvider extends BaseProvider {
Re-exported from js/opentelemetry/logs.LoggerProvider.
class BatchLogRecordProcessor extends LogRecordProcessor {
Re-exported from js/opentelemetry/sdk.BatchLogRecordProcessor.
class BatchSpanProcessor extends SpanProcessor {
Re-exported from js/opentelemetry/sdk.BatchSpanProcessor.
class InMemoryExporter {
Re-exported from js/opentelemetry/sdk.InMemoryExporter.
class LogRecordProcessor {
Re-exported from js/opentelemetry/sdk.LogRecordProcessor.
class ManualMetricReader extends MetricReader {
Re-exported from js/opentelemetry/sdk.ManualMetricReader.
class MetricReader {
Re-exported from js/opentelemetry/sdk.MetricReader.
class OtelSDK {
Re-exported from js/opentelemetry/sdk.OtelSDK.
class PeriodicMetricReader extends MetricReader {
Re-exported from js/opentelemetry/sdk.PeriodicMetricReader.
class SpanProcessor {
Re-exported from js/opentelemetry/sdk.SpanProcessor.
class Baggage {
Re-exported from js/opentelemetry/sdk.Baggage.
class BaseProvider {
Re-exported from js/opentelemetry/sdk.BaseProvider.
class Resource {
Re-exported from js/opentelemetry/sdk.Resource.
class TextMapPropagator {
Re-exported from js/opentelemetry/sdk.TextMapPropagator.
class W3CTraceContextPropagator extends TextMapPropagator {
Re-exported from js/opentelemetry/sdk.W3CTraceContextPropagator.
Functions
function applySpanLimits(span: SpanRecord, limits: SpanLimits = {}): SpanRecord
Re-exported from js/opentelemetry/traces.applySpanLimits.
function getActiveSpan(): Span | undefined
Re-exported from js/opentelemetry/traces.getActiveSpan.
function getActiveSpanContext(): TraceContext | null
Re-exported from js/opentelemetry/traces.getActiveSpanContext.
function getTracerProvider(): TracerProvider
Re-exported from js/opentelemetry/traces.getTracerProvider.
function isScopedTraceTopic(
name: string,
phase: 'start' | 'end' | 'event' | 'attribute' | 'link' | 'status' | 'rename'
): boolean
Re-exported from js/opentelemetry/traces.isScopedTraceTopic.
function isTracerProviderContextEnabled(): boolean
Re-exported from js/opentelemetry/traces.isTracerProviderContextEnabled.
function runWithActiveSpan<R>(span: Span, fn: () => R): R
Re-exported from js/opentelemetry/traces.runWithActiveSpan.
function runWithTracerProvider<R>(provider: TracerProvider, fn: () => R): R
Re-exported from js/opentelemetry/traces.runWithTracerProvider.
function runWithoutTracerProvider<R>(fn: () => R): R
Re-exported from js/opentelemetry/traces.runWithoutTracerProvider.
function setTracerProvider(provider: TracerProvider): void
Re-exported from js/opentelemetry/traces.setTracerProvider.
function accumulateMetric(store: Map<string, MetricRecord>, key: string, metric: MetricRecord): void
Re-exported from js/opentelemetry/metrics.accumulateMetric.
function applyMetricView(metric: MetricRecord, views: MetricView[]): MetricRecord
Re-exported from js/opentelemetry/metrics.applyMetricView.
function attributesKey(attributes: Attributes): string
Re-exported from js/opentelemetry/metrics.attributesKey.
function cloneMetric(metric: MetricRecord): MetricRecord
Re-exported from js/opentelemetry/metrics.cloneMetric.
function gaugeFromSignal(meter: Meter, name: string, signal: ReadonlySignal<number>, options: MetricInstrumentOptions & {
attributes?: Attributes;
} = {}): ObservableGauge
Re-exported from js/opentelemetry/metrics.gaugeFromSignal.
function getMeterProvider(): MeterProvider
Re-exported from js/opentelemetry/metrics.getMeterProvider.
function metricInstrumentKey(metric: MetricRecord): string
Re-exported from js/opentelemetry/metrics.metricInstrumentKey.
function metricSeriesKey(metric: MetricRecord): string
Re-exported from js/opentelemetry/metrics.metricSeriesKey.
function normalizeMetricKind(kind: string | undefined): string
Re-exported from js/opentelemetry/metrics.normalizeMetricKind.
function runWithMeterProvider<R>(provider: MeterProvider, fn: () => R): R
Re-exported from js/opentelemetry/metrics.runWithMeterProvider.
function runWithoutMeterProvider<R>(fn: () => R): R
Re-exported from js/opentelemetry/metrics.runWithoutMeterProvider.
function setMeterProvider(provider: MeterProvider): void
Re-exported from js/opentelemetry/metrics.setMeterProvider.
function zeroMetric(metric: MetricRecord): MetricRecord
Re-exported from js/opentelemetry/metrics.zeroMetric.
function applyLogLimits(log: LogRecord, limits: {
attributeCountLimit?: number;
attributeValueLengthLimit?: number;
} = {}): LogRecord
Re-exported from js/opentelemetry/logs.applyLogLimits.
function getLoggerProvider(): LoggerProvider
Re-exported from js/opentelemetry/logs.getLoggerProvider.
function runWithLoggerProvider<R>(provider: LoggerProvider, fn: () => R): R
Re-exported from js/opentelemetry/logs.runWithLoggerProvider.
function runWithoutLoggerProvider<R>(fn: () => R): R
Re-exported from js/opentelemetry/logs.runWithoutLoggerProvider.
function setLoggerProvider(provider: LoggerProvider): void
Re-exported from js/opentelemetry/logs.setLoggerProvider.
function metricsSignal(reader: ManualMetricReader, options: {
intervalMs?: number;
} = {}): ReadonlySignal<MetricRecord[]>
Re-exported from js/opentelemetry/sdk.metricsSignal.
function bytesEqual(a: Uint8Array, b: Uint8Array): boolean
Re-exported from js/opentelemetry/sdk.bytesEqual.
function carrierApiFor<TCarrier>(
carrier: TCarrier,
carrierApi?: CarrierApi<TCarrier>
): CarrierApi<TCarrier>
Re-exported from js/opentelemetry/sdk.carrierApiFor.
function consumeRequestContext(requestId: string): ActiveTelemetryContext | null
Re-exported from js/opentelemetry/sdk.consumeRequestContext.
function currentActiveTelemetryContext(): ActiveTelemetryContext | undefined
Re-exported from js/opentelemetry/sdk.currentActiveTelemetryContext.
function defaultCarrierApiFor<TCarrier extends CarrierLike>(carrier: TCarrier): CarrierApi<TCarrier>
Re-exported from js/opentelemetry/sdk.defaultCarrierApiFor.
function encodeSegment(value: unknown): string
Re-exported from js/opentelemetry/sdk.encodeSegment.
function getActiveBaggage(): Baggage
Re-exported from js/opentelemetry/sdk.getActiveBaggage.
function hexToBytes(hex: string, size: number): Uint8Array
Re-exported from js/opentelemetry/sdk.hexToBytes.
function installRequestContext(requestId: string, context: ActiveTelemetryContext): void
Re-exported from js/opentelemetry/sdk.installRequestContext.
function limitAttributeEntries(attributes: Attributes, limits: {
attributeCountLimit?: number;
attributeValueLengthLimit?: number;
}): {
attrs: Attributes;
dropped: number;
}
Re-exported from js/opentelemetry/sdk.limitAttributeEntries.
function mergeAttributes(a?: Attributes, b?: Attributes): Attributes
Re-exported from js/opentelemetry/sdk.mergeAttributes.
function normalizeResource(resource?: Resource | Attributes | null): Resource
Re-exported from js/opentelemetry/sdk.normalizeResource.
function normalizeScope(
name: string,
version?: string,
schemaUrl?: string | null,
attributes?: Attributes,
droppedAttributesCount?: number
): ScopeInfo
Re-exported from js/opentelemetry/sdk.normalizeScope.
function nowUnixNano(): number
Re-exported from js/opentelemetry/sdk.nowUnixNano.
function otelRuntimeEvent<TPayload extends Record<string, unknown>>(domain: string, operation: string, phase: string, payload: TPayload = {} as TPayload): TPayload & {
schemaVersion: number;
topic: string;
family: string;
domain: string;
operation: string;
phase: string;
correlationId: unknown;
}
Re-exported from js/opentelemetry/sdk.otelRuntimeEvent.
function otelRuntimeTopic(domain: string, operation: string, phase: string): string
Re-exported from js/opentelemetry/sdk.otelRuntimeTopic.
function otelTopic(signal: string, scope: ScopeInfo, ...suffixes: string[]): string
Re-exported from js/opentelemetry/sdk.otelTopic.
function publishScoped<TPayload>(
signal: SignalName,
scope: ScopeInfo,
suffixes: string[],
payload: TPayload
): void
Re-exported from js/opentelemetry/sdk.publishScoped.
function randomHex(length: number): string
Re-exported from js/opentelemetry/sdk.randomHex.
function registerActiveSpanContextGetter(getter: () => TraceContext | null): void
Re-exported from js/opentelemetry/sdk.registerActiveSpanContextGetter.
function requireNonEmptyName(kind: string, value: unknown): string
Re-exported from js/opentelemetry/sdk.requireNonEmptyName.
function requireRecord(kind: string, value: unknown): Record<string, unknown>
Re-exported from js/opentelemetry/sdk.requireRecord.
function runWithActiveContext<R>(context: ActiveTelemetryContext, fn: () => R): R
Re-exported from js/opentelemetry/sdk.runWithActiveContext.
function runWithBaggage<R>(baggage: Baggage, fn: () => R): R
Re-exported from js/opentelemetry/sdk.runWithBaggage.
function scopeSegment(scope: ScopeInfo): string
Re-exported from js/opentelemetry/sdk.scopeSegment.
function snapshotCarrier<TCarrier extends CarrierLike>(
carrier: TCarrier,
carrierApi?: CarrierApi<TCarrier>
): Record<string, unknown>
Re-exported from js/opentelemetry/sdk.snapshotCarrier.
function topic<T = unknown>(name: string): Topic<T>
Re-exported from topic.topic.
function topicNames(signal: string, scope: ScopeInfo, ...suffixes: string[]): string[]
Re-exported from js/opentelemetry/sdk.topicNames.
function truncateAttributeValue(value: unknown, limit: number): unknown
Re-exported from js/opentelemetry/sdk.truncateAttributeValue.
Interfaces
interface ActiveTelemetryContext extends TraceContext {
Re-exported from js/opentelemetry/traces.ActiveTelemetryContext.
interface SamplingResult {
Re-exported from js/opentelemetry/traces.SamplingResult.
interface SpanEndOptions {
Re-exported from js/opentelemetry/traces.SpanEndOptions.
interface SpanEventRecord {
Re-exported from js/opentelemetry/traces.SpanEventRecord.
interface SpanLimits {
Re-exported from js/opentelemetry/traces.SpanLimits.
interface SpanLinkContext {
Re-exported from js/opentelemetry/traces.SpanLinkContext.
interface SpanLinkRecord extends SpanLinkContext {
Re-exported from js/opentelemetry/traces.SpanLinkRecord.
interface SpanRecord {
Re-exported from js/opentelemetry/traces.SpanRecord.
interface SpanStartOptions {
Re-exported from js/opentelemetry/traces.SpanStartOptions.
interface SpanStatus {
Re-exported from js/opentelemetry/traces.SpanStatus.
interface TraceContext {
Re-exported from js/opentelemetry/traces.TraceContext.
interface ExemplarRecord {
Re-exported from js/opentelemetry/metrics.ExemplarRecord.
interface ExponentialBuckets {
Re-exported from js/opentelemetry/metrics.ExponentialBuckets.
interface MetricExemplarContext {
Re-exported from js/opentelemetry/metrics.MetricExemplarContext.
interface MetricInstrumentOptions {
Re-exported from js/opentelemetry/metrics.MetricInstrumentOptions.
interface MetricRecord {
Re-exported from js/opentelemetry/metrics.MetricRecord.
interface MetricView {
Re-exported from js/opentelemetry/metrics.MetricView.
interface ObservableMetricObservation {
Re-exported from js/opentelemetry/metrics.ObservableMetricObservation.
interface ObservableMetricRegistration {
Re-exported from js/opentelemetry/metrics.ObservableMetricRegistration.
interface QuantileValueRecord {
Re-exported from js/opentelemetry/metrics.QuantileValueRecord.
interface LogRecord {
Re-exported from js/opentelemetry/logs.LogRecord.
interface CarrierApi<TCarrier = CarrierLike> {
Re-exported from js/opentelemetry/sdk.CarrierApi.
interface Disposable {
Re-exported from js/opentelemetry/sdk.Disposable.
interface ExportResult {
Re-exported from js/opentelemetry/sdk.ExportResult.
interface Instrumentation {
Re-exported from js/opentelemetry/sdk.Instrumentation.
interface OtelExporter {
Re-exported from js/opentelemetry/sdk.OtelExporter.
interface OtelSdkLike {
Re-exported from js/opentelemetry/sdk.OtelSdkLike.
interface PartialSuccessResult {
Re-exported from js/opentelemetry/sdk.PartialSuccessResult.
interface ProviderOptions {
Re-exported from js/opentelemetry/sdk.ProviderOptions.
interface ResourceOptions {
Re-exported from js/opentelemetry/sdk.ResourceOptions.
interface RetryOptions {
Re-exported from js/opentelemetry/sdk.RetryOptions.
interface RuntimeDnsEvent {
Re-exported from js/opentelemetry/sdk.RuntimeDnsEvent.
interface RuntimeHttpRequestEvent {
Re-exported from js/opentelemetry/sdk.RuntimeHttpRequestEvent.
interface RuntimeSocketEvent {
Re-exported from js/opentelemetry/sdk.RuntimeSocketEvent.
interface RuntimeTlsEvent {
Re-exported from js/opentelemetry/sdk.RuntimeTlsEvent.
Constants
const Histogram
Re-exported from js/opentelemetry/metrics.Histogram.
const PeriodicExportingMetricReader
Re-exported from js/opentelemetry/sdk.PeriodicExportingMetricReader.
const OTEL_SCHEMA_VERSION
Re-exported from js/opentelemetry/sdk.OTEL_SCHEMA_VERSION.
const OTEL_TOPIC_SUFFIXES
Re-exported from js/opentelemetry/sdk.OTEL_TOPIC_SUFFIXES.
const Propagation
Re-exported from js/opentelemetry/sdk.Propagation.
Types
type MetricAggregationType = 'histogram' | 'lastValue' | 'sum'
Re-exported from js/opentelemetry/metrics.MetricAggregationType.
type MetricTemporality = 'delta' | 'cumulative'
Re-exported from js/opentelemetry/metrics.MetricTemporality.
type Attributes = Record<string, unknown>
Re-exported from js/opentelemetry/sdk.Attributes.
type CarrierLike = {
[key: string]: unknown;
get?(key: string): unknown;
set?(key: string, value: unknown): unknown;
keys?(): Iterable<string>;
}
Re-exported from js/opentelemetry/sdk.CarrierLike.
type ScopeInfo = {
name: string;
version?: string;
schemaUrl?: string | null;
attributes?: Attributes;
droppedAttributesCount?: number;
}
Re-exported from js/opentelemetry/sdk.ScopeInfo.
type SignalName = 'trace' | 'log' | 'metric'
Re-exported from js/opentelemetry/sdk.SignalName.
Enums
enum SeverityNumber {
TRACE = 1,
TRACE2 = 2,
TRACE3 = 3,
TRACE4 = 4,
DEBUG = 5,
DEBUG2 = 6,
DEBUG3 = 7,
DEBUG4 = 8,
INFO = 9,
INFO2 = 10,
INFO3 = 11,
INFO4 = 12,
WARN = 13,
WARN2 = 14,
WARN3 = 15,
WARN4 = 16,
ERROR = 17,
ERROR2 = 18,
ERROR3 = 19,
ERROR4 = 20,
FATAL = 21,
FATAL2 = 22,
FATAL3 = 23,
FATAL4 = 24
}
Re-exported from js/opentelemetry/logs.SeverityNumber.