# otel v0.2.0 - Table of Contents

Pure Elixir implementation of OpenTelemetry

## Pages

- [README](readme.md)

- How-to
  - [Trace](trace.md)
  - [Log](log.md)
  - [Metrics](metrics.md)

- Configuration
  - [Configuration](configuration.md)
  - [Logger Handler](logger-handler.md)

- Testing
  - [E2E Test Scenarios](e2e.md)

- Legal
  - [LICENSE](license.md)
  - [NOTICE](notice.md)

## Modules

- [Otel.API.Baggage](Otel.API.Baggage.md): OTel Baggage (spec `baggage/api.md`, Status: **Stable**).
- [Otel.API.Baggage.Percent](Otel.API.Baggage.Percent.md): W3C Baggage percent-encoding codec (W3C Baggage spec
§value L64-L69, §property L82-L100).
- [Otel.API.Common.Types](Otel.API.Common.Types.md): Macro module injecting shared OTel type aliases into consumer
modules.
- [Otel.API.Ctx](Otel.API.Ctx.md): OTel Context (spec `context/README.md`, Status: **Stable**).
- [Otel.API.InstrumentationScope](Otel.API.InstrumentationScope.md): A logical unit of software identified by `(name, version, schema_url,
attributes)` that emits telemetry (spec
`common/instrumentation-scope.md`, Status: **Stable**).
- [Otel.API.Logs](Otel.API.Logs.md): Shared types for the OTel Logs API data model
(`logs/data-model.md` §Severity Fields L234-L363).
- [Otel.API.Logs.LogRecord](Otel.API.Logs.LogRecord.md): LogRecord data model (`logs/data-model.md` §"Log and Event
Record Definition" L155-L451; Status: **Stable**).
- [Otel.API.Logs.Logger](Otel.API.Logs.Logger.md): `Logger` behaviour and dispatch facade (OTel
`logs/api.md` §Logger L99-L155; Status: **Stable** —
inherits the file-level Stable from `logs/api.md` L9, no
per-section carve-out remaining at v1.55.0).
- [Otel.API.Logs.Logger.Noop](Otel.API.Logs.Logger.Noop.md): No-op `Logger` implementation (OTel `logs/noop.md`
§Logger, Status: **Stable**).
- [Otel.API.Logs.LoggerProvider](Otel.API.Logs.LoggerProvider.md): Global LoggerProvider registration and Logger retrieval
(OTel `logs/api.md` §LoggerProvider, L54-L97).
- [Otel.API.Metrics.Counter](Otel.API.Metrics.Counter.md): Synchronous Counter instrument facade (OTel
`metrics/api.md` §Counter, Status: **Stable**, L497-L598).
- [Otel.API.Metrics.Gauge](Otel.API.Metrics.Gauge.md): Synchronous Gauge instrument facade (OTel `metrics/api.md`
§Gauge, Status: **Stable**, L828-L916).
- [Otel.API.Metrics.Histogram](Otel.API.Metrics.Histogram.md): Synchronous Histogram instrument facade (OTel
`metrics/api.md` §Histogram, Status: **Stable**,
L735-L827).
- [Otel.API.Metrics.Instrument](Otel.API.Metrics.Instrument.md): Instrument handle (OTel `metrics/api.md` §Instrument,
Status: **Stable**, L178-L278).
- [Otel.API.Metrics.Measurement](Otel.API.Metrics.Measurement.md): A single numeric data point reported to the SDK (OTel
`metrics/api.md` §Measurement, Status: **Stable**,
L1278-L1287).
- [Otel.API.Metrics.Meter](Otel.API.Metrics.Meter.md): `Meter` behaviour and dispatch facade (OTel `metrics/api.md`
§Meter, Status: **Stable**, L157-L176).
- [Otel.API.Metrics.Meter.Noop](Otel.API.Metrics.Meter.Noop.md): No-op Meter implementation (OTel `metrics/noop.md` §Meter,
Status: **Stable**, L84-L266).
- [Otel.API.Metrics.MeterProvider](Otel.API.Metrics.MeterProvider.md): Global MeterProvider registration and Meter retrieval
(OTel `metrics/api.md` §MeterProvider, Status: **Stable**,
L106-L155).
- [Otel.API.Metrics.ObservableCounter](Otel.API.Metrics.ObservableCounter.md): Asynchronous Counter instrument facade (OTel
`metrics/api.md` §Asynchronous Counter, Status: **Stable**,
L599-L733).
- [Otel.API.Metrics.ObservableGauge](Otel.API.Metrics.ObservableGauge.md): Asynchronous Gauge instrument facade (OTel `metrics/api.md`
§Asynchronous Gauge, Status: **Stable**, L917-L1031).
- [Otel.API.Metrics.ObservableUpDownCounter](Otel.API.Metrics.ObservableUpDownCounter.md): Asynchronous UpDownCounter instrument facade (OTel
`metrics/api.md` §Asynchronous UpDownCounter, Status:
**Stable**, L1158-L1277).
- [Otel.API.Metrics.UpDownCounter](Otel.API.Metrics.UpDownCounter.md): Synchronous UpDownCounter instrument facade (OTel
`metrics/api.md` §UpDownCounter, Status: **Stable**,
L1032-L1157).
- [Otel.API.Propagator.TextMap](Otel.API.Propagator.TextMap.md): `TextMapPropagator` behaviour and global facade (OTel
`context/api-propagators.md` §TextMap Propagator
L114-L203; §Global Propagators L308-L346).
- [Otel.API.Propagator.TextMap.Baggage](Otel.API.Propagator.TextMap.Baggage.md): W3C Baggage propagator (W3C `HTTP_HEADER_FORMAT.md` §Header
Content L19-L113; OTel `context/api-propagators.md`
§TextMap Inject/Extract L155-L203).
- [Otel.API.Propagator.TextMap.Composite](Otel.API.Propagator.TextMap.Composite.md): Composite TextMap propagator (OTel
`context/api-propagators.md` §Composite Propagator,
L259-L305).
- [Otel.API.Propagator.TextMap.Noop](Otel.API.Propagator.TextMap.Noop.md): No-op TextMap propagator used when no propagator is
explicitly configured (spec `context/api-propagators.md`
L322-L325, Status: **Stable**).
- [Otel.API.Propagator.TextMap.TraceContext](Otel.API.Propagator.TextMap.TraceContext.md): W3C Trace Context Level 2 propagator (W3C
`20-http_request_header_format.md` §Traceparent Header
L51-L244; OTel `context/api-propagators.md` §TextMap
L114-L203).
- [Otel.API.Trace](Otel.API.Trace.md): Trace API facade — TracerProvider, Context Interaction, and
Span Creation entry points (OTel `trace/api.md`
§TracerProvider L88-L157, §Context Interaction L159-L183,
§Span Creation L378-L414).
- [Otel.API.Trace.Event](Otel.API.Trace.Event.md): A timestamped event recorded on a Span (spec `trace/api.md`
§Add Events, Status: **Stable**, L520-L558).
- [Otel.API.Trace.Link](Otel.API.Trace.Link.md): A link from the current Span to another `SpanContext` (spec
`trace/api.md` §Link, Status: **Stable**, L803-L834).
- [Otel.API.Trace.Span](Otel.API.Trace.Span.md): Span operations facade (OTel `trace/api.md` §Span operations
L449-L705; Status: **Stable**).
- [Otel.API.Trace.Span.Noop](Otel.API.Trace.Span.Noop.md): No-op Span operations implementation (OTel `trace/api.md`
§"Behavior of the API in the absence of an installed SDK",
L860-L874, Status: **Stable**).
- [Otel.API.Trace.SpanContext](Otel.API.Trace.SpanContext.md): Immutable context of a Span (spec `trace/api.md` §SpanContext,
Status: **Stable**, L221-L278).
- [Otel.API.Trace.SpanId](Otel.API.Trace.SpanId.md): Opaque 64-bit Span identifier (W3C `parent-id` / OTel
`trace/api.md` §SpanContext SpanId, L234-L235).
- [Otel.API.Trace.SpanKind](Otel.API.Trace.SpanKind.md): SpanKind — clarifies the relationship between Spans (spec
`trace/api.md` §SpanKind, Status: **Stable**).
- [Otel.API.Trace.Status](Otel.API.Trace.Status.md): A Span's Status (spec `trace/api.md` §Set Status, Status:
**Stable**).
- [Otel.API.Trace.TraceId](Otel.API.Trace.TraceId.md): Opaque 128-bit Trace identifier (W3C `trace-id` / OTel
`trace/api.md` §SpanContext TraceId, L231-L232).
- [Otel.API.Trace.TraceState](Otel.API.Trace.TraceState.md): W3C Trace Context `tracestate` field (spec §3.3).
- [Otel.API.Trace.Tracer](Otel.API.Trace.Tracer.md): Tracer behaviour (spec `trace/api.md` §Tracer, Status:
**Stable**, L184-L219).
- [Otel.API.Trace.Tracer.Noop](Otel.API.Trace.Tracer.Noop.md): No-op Tracer used when no SDK is installed (spec `trace/api.md`
§Behavior of the API in the absence of an installed SDK,
L860-L874, Status: **Stable**).
- [Otel.API.Trace.TracerProvider](Otel.API.Trace.TracerProvider.md): Global TracerProvider registration and Tracer retrieval
(OTel `trace/api.md` §TracerProvider, L88-L157).
- [Otel.Configuration](Otel.Configuration.md): Declarative configuration for the OpenTelemetry Elixir SDK
(`OTEL_CONFIG_FILE`).
- [Otel.Configuration.Composer](Otel.Configuration.Composer.md): Composes a validated declarative-config in-memory model into the
per-pillar provider config maps that
`Otel.SDK.{Trace.TracerProvider, Metrics.MeterProvider, Logs.LoggerProvider}`
consume at `start_link/1`.
- [Otel.Configuration.Parser](Otel.Configuration.Parser.md): YAML → in-memory term parser for declarative configuration files
(`OTEL_CONFIG_FILE`).
- [Otel.Configuration.Schema](Otel.Configuration.Schema.md): JSON Schema validation of post-substitution declarative
configuration models against the
[opentelemetry-configuration v1.0.0 schema](https://github.com/open-telemetry/opentelemetry-configuration/blob/v1.0.0/opentelemetry_configuration.json).
- [Otel.Configuration.Substitution](Otel.Configuration.Substitution.md): Environment variable substitution for declarative configuration
files (`OTEL_CONFIG_FILE`).
- [Otel.LoggerHandler](Otel.LoggerHandler.md): Bridges Erlang's `:logger` to the OpenTelemetry Logs API
(OTel `logs/api.md` + `logs/supplementary-guidelines.md`
§How to Create a Log4J Log Appender).
- [Otel.OTLP](Otel.OTLP.md): OTLP exporter for OpenTelemetry.
- [Otel.OTLP.HTTP.Retry](Otel.OTLP.HTTP.Retry.md): Retry wrapper around `:httpc.request/4` for OTLP/HTTP exporters.
- [Otel.OTLP.Logs.LogRecordExporter.HTTP](Otel.OTLP.Logs.LogRecordExporter.HTTP.md): OTLP HTTP Exporter for logs.
- [Otel.OTLP.Metrics.MetricExporter.HTTP](Otel.OTLP.Metrics.MetricExporter.HTTP.md): OTLP HTTP Exporter for metrics.
- [Otel.OTLP.Trace.SpanExporter.HTTP](Otel.OTLP.Trace.SpanExporter.HTTP.md): OTLP HTTP Exporter for traces.
- [Otel.SDK](Otel.SDK.md): OpenTelemetry SDK for Elixir.
- [Otel.SDK.Config](Otel.SDK.Config.md): Composes provider configuration from three layers, in precedence
order from highest to lowest
- [Otel.SDK.Config.Env](Otel.SDK.Config.Env.md): Spec-compliant typed reads of `OTEL_*` environment variables.
- [Otel.SDK.Config.Selector](Otel.SDK.Config.Selector.md): Atom-name → canonical `{module, config}` normalization for SDK
configuration values.
- [Otel.SDK.Exporter.Init](Otel.SDK.Exporter.Init.md): Centralised one-shot exporter initialisation.
- [Otel.SDK.Logs.LogRecord](Otel.SDK.Logs.LogRecord.md): SDK-side `ReadWriteLogRecord` (`logs/sdk.md` §ReadWriteLogRecord
L298-L319 + §ReadableLogRecord L277-L296).
- [Otel.SDK.Logs.LogRecordExporter](Otel.SDK.Logs.LogRecordExporter.md): Behaviour for log record exporters
(`logs/sdk.md` §LogRecordExporter L549-L645 + §Concurrency
requirements L647-L660).
- [Otel.SDK.Logs.LogRecordExporter.Console](Otel.SDK.Logs.LogRecordExporter.Console.md): Standard-output `LogRecordExporter` for debugging
(`logs/sdk_exporters/stdout.md`).
- [Otel.SDK.Logs.LogRecordLimits](Otel.SDK.Logs.LogRecordLimits.md): Configurable limits for `Otel.API.Logs.LogRecord` attribute
collections (`logs/sdk.md` §LogRecord Limits L321-348).
- [Otel.SDK.Logs.LogRecordProcessor](Otel.SDK.Logs.LogRecordProcessor.md): Behaviour for log record processors
(`logs/sdk.md` §LogRecordProcessor L350-L503).
- [Otel.SDK.Logs.LogRecordProcessor.Batch](Otel.SDK.Logs.LogRecordProcessor.Batch.md): Batching `LogRecordProcessor`
(`logs/sdk.md` §Batching processor L528-L548).
- [Otel.SDK.Logs.LogRecordProcessor.Simple](Otel.SDK.Logs.LogRecordProcessor.Simple.md): Simple `LogRecordProcessor` (`logs/sdk.md` §Simple processor
L514-L526).
- [Otel.SDK.Logs.Logger](Otel.SDK.Logs.Logger.md): SDK implementation of the `Otel.API.Logs.Logger` behaviour
(`logs/sdk.md` §Logger).
- [Otel.SDK.Logs.LoggerProvider](Otel.SDK.Logs.LoggerProvider.md): SDK implementation of the LoggerProvider.
- [Otel.SDK.Metrics.Aggregation](Otel.SDK.Metrics.Aggregation.md): Aggregation behaviour and default instrument-to-aggregation
mapping (`metrics/sdk.md` §Aggregation L612-L860).
- [Otel.SDK.Metrics.Aggregation.Base2ExponentialBucketHistogram](Otel.SDK.Metrics.Aggregation.Base2ExponentialBucketHistogram.md): Base2 Exponential Bucket Histogram aggregation
(`metrics/sdk.md` §Base2 Exponential Bucket Histogram
Aggregation L670-L760, Status: **Stable**, v1.55.0).
- [Otel.SDK.Metrics.Aggregation.Drop](Otel.SDK.Metrics.Aggregation.Drop.md): Drop aggregation. Ignores all measurements.

- [Otel.SDK.Metrics.Aggregation.ExplicitBucketHistogram](Otel.SDK.Metrics.Aggregation.ExplicitBucketHistogram.md): Explicit bucket histogram aggregation.
- [Otel.SDK.Metrics.Aggregation.LastValue](Otel.SDK.Metrics.Aggregation.LastValue.md): Last value aggregation. Keeps the most recent measurement.
- [Otel.SDK.Metrics.Aggregation.Sum](Otel.SDK.Metrics.Aggregation.Sum.md): Sum aggregation. Collects the arithmetic sum of measurements.
- [Otel.SDK.Metrics.Exemplar](Otel.SDK.Metrics.Exemplar.md): An Exemplar is a recorded measurement that links metric data
to trace context. Exemplars are sampled from measurements by
ExemplarReservoirs and attached to metric data points during
collection.

- [Otel.SDK.Metrics.Exemplar.Filter](Otel.SDK.Metrics.Exemplar.Filter.md): Exemplar filters determine whether a measurement should be
considered for exemplar sampling.
- [Otel.SDK.Metrics.Exemplar.Reservoir](Otel.SDK.Metrics.Exemplar.Reservoir.md): ExemplarReservoir behaviour. A reservoir samples and stores
exemplars from offered measurements, then returns them during
collection.
- [Otel.SDK.Metrics.Exemplar.Reservoir.AlignedHistogramBucket](Otel.SDK.Metrics.Exemplar.Reservoir.AlignedHistogramBucket.md): A reservoir aligned with explicit histogram bucket boundaries.
- [Otel.SDK.Metrics.Exemplar.Reservoir.SimpleFixedSize](Otel.SDK.Metrics.Exemplar.Reservoir.SimpleFixedSize.md): A reservoir that uses uniformly-weighted random sampling.
- [Otel.SDK.Metrics.Meter](Otel.SDK.Metrics.Meter.md): SDK implementation of the `Otel.API.Metrics.Meter`
behaviour (`metrics/sdk.md` §Meter L870-L943).
- [Otel.SDK.Metrics.MeterProvider](Otel.SDK.Metrics.MeterProvider.md): SDK implementation of the `Otel.API.Metrics.MeterProvider`
behaviour (`metrics/sdk.md` §MeterProvider L43-L155).
- [Otel.SDK.Metrics.MetricExporter](Otel.SDK.Metrics.MetricExporter.md): Behaviour for push metric exporters.
- [Otel.SDK.Metrics.MetricExporter.Console](Otel.SDK.Metrics.MetricExporter.Console.md): Console exporter for metrics debugging.
- [Otel.SDK.Metrics.MetricProducer](Otel.SDK.Metrics.MetricProducer.md): Behaviour for bridging third-party metric sources into the
OpenTelemetry metrics pipeline.
- [Otel.SDK.Metrics.MetricReader](Otel.SDK.Metrics.MetricReader.md): MetricReader behaviour and collection pipeline.
- [Otel.SDK.Metrics.MetricReader.PeriodicExporting](Otel.SDK.Metrics.MetricReader.PeriodicExporting.md): A MetricReader that periodically collects metrics and exports
them via a configured exporter.
- [Otel.SDK.Metrics.Stream](Otel.SDK.Metrics.Stream.md): A metric stream produced by matching a View to an Instrument.
- [Otel.SDK.Metrics.View](Otel.SDK.Metrics.View.md): Instrument selection criteria + stream configuration
(`metrics/sdk.md` §View L259-L327).
- [Otel.SDK.Resource](Otel.SDK.Resource.md): Immutable representation of the entity producing telemetry
(`resource/sdk.md` §"SDK").
- [Otel.SDK.Trace.Event](Otel.SDK.Trace.Event.md): SDK-internal representation of a Span Event.
- [Otel.SDK.Trace.IdGenerator](Otel.SDK.Trace.IdGenerator.md): Behaviour for trace ID and span ID generation.
- [Otel.SDK.Trace.IdGenerator.Default](Otel.SDK.Trace.IdGenerator.Default.md): Default ID generator using Erlang's `:rand.uniform/1`.
- [Otel.SDK.Trace.Link](Otel.SDK.Trace.Link.md): SDK-internal representation of a Span Link.
- [Otel.SDK.Trace.Sampler](Otel.SDK.Trace.Sampler.md): Sampler behaviour and dispatch
(`trace/sdk.md` §Sampler L329-L460).
- [Otel.SDK.Trace.Sampler.AlwaysOff](Otel.SDK.Trace.Sampler.AlwaysOff.md): Sampler that always drops.
- [Otel.SDK.Trace.Sampler.AlwaysOn](Otel.SDK.Trace.Sampler.AlwaysOn.md): Sampler that always records and samples.
- [Otel.SDK.Trace.Sampler.ParentBased](Otel.SDK.Trace.Sampler.ParentBased.md): Sampler decorator that delegates based on parent span state.
- [Otel.SDK.Trace.Sampler.TraceIdRatioBased](Otel.SDK.Trace.Sampler.TraceIdRatioBased.md): Sampler that samples a configured ratio of traces.
- [Otel.SDK.Trace.Span](Otel.SDK.Trace.Span.md): SDK implementation of the `Otel.API.Trace.Span` behaviour
(`trace/sdk.md` §Span L692-L944) — data + lifecycle
operations.
- [Otel.SDK.Trace.SpanExporter](Otel.SDK.Trace.SpanExporter.md): Behaviour for span exporters
(`trace/sdk.md` §Span Exporter L1120-L1209).
- [Otel.SDK.Trace.SpanExporter.Console](Otel.SDK.Trace.SpanExporter.Console.md): Console exporter for debugging and learning purposes.
- [Otel.SDK.Trace.SpanLimits](Otel.SDK.Trace.SpanLimits.md): Configurable limits for Span data.
- [Otel.SDK.Trace.SpanProcessor](Otel.SDK.Trace.SpanProcessor.md): Behaviour for span processors
(`trace/sdk.md` §SpanProcessor L946-L1075).
- [Otel.SDK.Trace.SpanProcessor.Batch](Otel.SDK.Trace.SpanProcessor.Batch.md): BatchSpanProcessor that accumulates spans and exports in
batches (`trace/sdk.md` §Batching processor L1086-L1118).
- [Otel.SDK.Trace.SpanProcessor.Simple](Otel.SDK.Trace.SpanProcessor.Simple.md): SimpleSpanProcessor that exports each span immediately on
end (`trace/sdk.md` §Simple processor L1076-L1084).
- [Otel.SDK.Trace.SpanStorage](Otel.SDK.Trace.SpanStorage.md): ETS-backed storage for active spans.
- [Otel.SDK.Trace.Tracer](Otel.SDK.Trace.Tracer.md): SDK implementation of the `Otel.API.Trace.Tracer` behaviour
(`trace/sdk.md` §Tracer L120-L228).
- [Otel.SDK.Trace.TracerProvider](Otel.SDK.Trace.TracerProvider.md): SDK implementation of the `Otel.API.Trace.TracerProvider`
behaviour (`trace/sdk.md` §TracerProvider L36-L116).

