OpenTelemetry as system dependency

Setting up OpenTelemetry for your applications and systems depends on where those apps and systems run. Some are very automated, especially Kubernetes, thanks to the OpenTelemetry Operator, or AWS Lambda, with the OpenTelemetry Lambda layers.

But the countless Java, .NET, Node.js, and Python apps running directly on Linux hosts have had no such automation. Instrumenting those has meant downloading agents by hand and wiring up environment variables yourself. At OTel Unplugged EU in Brussels this February, one ask kept coming up: clear packaging, installation, and usage paths. You asked for:

{apt|yum} install opentelemetry

And now you can actually do it!

Try it out

The opentelemetry package installs the OpenTelemetry Injector together with the OpenTelemetry SDKs and auto-instrumentation packages for Java, .NET, Node.js, and Python. The Injector hooks into the startup of processes on the host and activates the matching auto-instrumentation for your applications — no changes to your application code or deployment scripts required.

Getting up and running takes three steps: install the packages, tell the SDKs where to send the telemetry, and restart the processes you want instrumented.

Installing the packages

The project has defined steps to try this out now — for the impatient:

On Debian, Ubuntu, and derivatives, add the APT repository:

echo "deb [trusted=yes] https://open-telemetry.github.io/opentelemetry-packaging/debian stable main" | sudo tee /etc/apt/sources.list.d/opentelemetry.list
sudo apt update
sudo apt install opentelemetry

On Fedora, RHEL, and derivatives, add the YUM repository:

cat <<EOF | sudo tee /etc/yum.repos.d/opentelemetry.repo
[opentelemetry]
name=OpenTelemetry Auto-Instrumentation System Packages
baseurl=https://open-telemetry.github.io/opentelemetry-packaging/rpm/packages
enabled=1
gpgcheck=0
EOF
sudo dnf install opentelemetry

You can also install the opentelemetry-injector package and the auto-instrumentation packages for the languages you want to monitor, and they will seamlessly work together.

Read the full instructions to learn more about the options and where to send data.

Configuring where to send the telemetry

Out of the box, the auto-instrumentation sends OTLP data to localhost: port 4317 for OTLP/gRPC and port 4318 for OTLP/HTTP. From there, you have two options.

Send telemetry directly from the SDKs: set the endpoint and credentials in /etc/opentelemetry/injector/default_env.conf, and the Injector passes them to every instrumented process:

OTEL_EXPORTER_OTLP_ENDPOINT=https://otlp.example.com
OTEL_EXPORTER_OTLP_HEADERS=api-key=REPLACE_ME

Run a Collector on the host: keep the default localhost endpoints, install the OpenTelemetry Collector on the same host, and configure it in /etc/otelcol/config.yaml to forward the telemetry to its destination. The Collector packages are not currently installed by the opentelemetry metapackage; see the Collector packaging section for how that is going to change.

Brought to you by the Packaging SIG

The Packaging SIG is officially established as of May 2026.

The goal of the Packaging SIG is to provide a product-like, idiomatic experience of monitoring applications running on (virtual) hosts through a combination of the OpenTelemetry Injector injecting SDKs and auto-instrumentation packages, OpenTelemetry eBPF Instrumentation (OBI), and the OpenTelemetry Collector.

We believe that OpenTelemetry should feel like a product, and work towards the Stable By Default vision of the project.

We collaborate in the opentelemetry-packaging repository, discuss in the #otel-packaging channel of the CNCF Slack, and meet weekly on Wednesdays at 10:00 AM PT.

Come by and say hi!

The future (TM)

The packaging effort is new. There are scope, scalability, and security enhancements on our immediate roadmap.

Towards production

The repository is hosted on GitHub under GitHub Pages. This is not meant for production workloads, and we will look for production-grade hosting solutions.

We don’t sign packages yet. We will find a secure solution that still allows us to quickly release without creating manual, error-prone steps.

Collector packaging

We will now work to add the OpenTelemetry Collector packages to the new repositories. They are currently published under opentelemetry-collector-releases. Track this issue for more information.

More languages and OBI

Today, the Injector activates SDK-based auto-instrumentation for Java, .NET, Node.js, and Python.

For languages without SDK auto-instrumentation — think Go, Rust, C++ — we will work with the OpenTelemetry eBPF Instrumentation (OBI) folks to let OBI instrument applications using eBPF.

The OpenTelemetry Injector also has plans to support Ruby, so that might also happen in the foreseeable future!

Thank you!

A big thank you to the contributors who have participated in this effort.

Thank you as well to the many reviewers of the Packaging SIG proposal and initial implementation!