Learn R Programming

otel

OpenTelemetry API for R packages and projects

OpenTelemetry is an observability framework. OpenTelemetry is a collection of tools, APIs, and SDKs used to instrument, generate, collect, and export telemetry data such as metrics, logs, and traces, for analysis in order to understand your software’s performance and behavior.

For an introduction to OpenTelemetry, see the OpenTelemetry website docs.

To learn how to instrument your R code, see Getting Started. For project status, installation instructions and more, read on.

Features

  • Lightweight packages. otel is a small R package without dependencies and compiled code. otelsdk needs a C++11 compiler and otel.
  • Minimal performance impact when tracing is disabled. otel functions do not evaluate their arguments in this case.
  • Zero-code instrumentation support. Add tracing to (some) functions of selected packages automatically.
  • Configuration via environment variables.
  • Minimal extra code. Add tracing to a function with a single extra function call.
  • Production mode: otel functions do not crash your production app in production mode.
  • Development mode: otel functions error early in development mode.

Getting started

Set otel_tracer_name to the desired tracer name. (See ?otel_tracer_name.) Then add otel::start_local_active_span() calls to the functions you want to trace:

otel_tracer_name <- "<package-id>"
fn <- function(...) {
  spn <- otel::start_local_active_span("fn")
  ...
}

See Getting Started for details.

The otel and otelsdk R packages

Use the otel package as a dependency if you want to instrument your R package or project for OpenTelemetry.

Use the otelsdk package to produce OpenTelemetry output from an R package or project that was instrumented with the otel package.

Reference Documentation

Status

The current status of the major functional components for OpenTelemetry R is as follows:

TracesMetricsLogs
DevelopmentDevelopmentDevelopment

Version support

otel and otelsdk support R 3.6.0 and higher on Unix and R 4.3.0 or higher on Windows.

Installation

Install otel from CRAN:

# install.packages("pak")
pak::pak("otel")

You can install the development version of otel from GitHub with:

# install.packages("pak")
pak::pak("r-lib/otel")

Repositories

License

MIT © Posit, PBC

Copy Link

Version

Install

install.packages('otel')

Version

0.2.0

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Gabor Csardi

Last Published

August 29th, 2025

Functions in otel (0.2.0)

get_tracer

Get a tracer from the default tracer provider
get_meter

Get a meter from the default meter provider
histogram_record

Record a value of an OpenTelemetry histogram
is_measuring_enabled

Check whether OpenTelemetry metrics collection is active
is_logging_enabled

Check whether OpenTelemetry logging is active
get_logger

Get a logger from the default logger provider
get_default_tracer_provider

Get the default tracer provider
is_tracing_enabled

Check if tracing is active
get_default_meter_provider

Get the default meter provider
Getting Started

Getting Started
otel_gauge

OpenTelemetry Gauge Object
log_severity_levels

OpenTelemetry log severity levels
local_active_span

Activate an OpenTelemetry span for an R scope
log

Log an OpenTelemetry log message
otel_counter

OpenTelemetry Counter Object
otel_histogram

OpenTelemetry Histogram Object
otel_logger_provider

OpenTelemetry Logger Provider Object
logger_provider_noop

No-op logger provider
otel_logger

OpenTelemetry Logger Object
meter_provider_noop

No-op Meter Provider
otel_meter_provider

OpenTelemetry meter provider objects
start_span

Start an OpenTelemetry span.
otel_up_down_counter

OpenTelemetry Up-Down Counter Object
otel_tracer_provider

OpenTelemetry Tracer Provider Object
start_local_active_span

Start and activate a span
otel_tracer

OpenTelemetry Tracer Object
otel_span_context

An OpenTelemetry Span Context object
otel_meter

OpenTelemetry Meter Object
pack_http_context

Pack the currently active span context into standard HTTP OpenTelemetry headers
otel_span

OpenTelemetry Span Object
up_down_counter_add

Increase or decrease an OpenTelemetry up-down counter
with_active_span

Evaluate R code with an active OpenTelemetry span
Zero Code Instrumentation

Zero Code Instrumentation
tracing-constants

OpenTelemetry tracing constants
tracer_provider_noop

No-op tracer provider
get_active_span

Returns the active span, if any
default_tracer_name

Default tracer name (and meter and logger name) for an R package
end_span

End an OpenTelemetry span
gauge_record

Record a value of an OpenTelemetry gauge
as_attributes

R objects as OpenTelemetry attributes
extract_http_context

Extract a span context from HTTP headers received from a client
get_active_span_context

Returns the active span context
Environment Variables

Environment variables to configure otel
counter_add

Increase an OpenTelemetry counter
get_default_logger_provider

Get the default logger provider