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!
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.