skillfed

pyroscope-otel

A library providing profiling functionalities related to OpenTelemetry

pyroscope-otel v1.1.0 1.5M downloads/30d#3,882 on PyPI
Permissive license Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for… (full text in the JSON record) Active released

What it is and what it does

Pyroscope-otel is a bridge between OpenTelemetry tracing and Pyroscope continuous profiling. It provides a span processor that automatically attaches a profile identifier to the root span of each trace, creating a direct link between traces in Grafana Tempo and their corresponding performance profiles in Pyroscope. On the profiling side, it adds thread-level tags (span_id, span_name, trace_id) for the lifetime of the root span, enabling filtering and correlation of profile samples by trace.

The package requires both Pyroscope and OpenTelemetry to be independently configured in your application. It works with manual instrumentation (explicit TracerProvider setup) and auto-instrumentation frameworks, though Pyroscope configuration remains mandatory in all cases. The integration is lightweight—it depends only on opentelemetry-api, opentelemetry-sdk, and pyroscope-io—and installs as a pure Python wheel with no compiled dependencies.

Use it for:

  • Correlate slow traces in Grafana Tempo with CPU/memory profiles in Pyroscope to pinpoint performance bottlenecks
  • Navigate from a distributed trace to the exact profiling data for that transaction to debug latency issues
  • Filter profile samples by trace ID on the Pyroscope server to isolate performance data for specific requests
  • Monitor applications using both OpenTelemetry and Pyroscope without maintaining separate correlation logic

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Connects OpenTelemetry tracing with Pyroscope continuous profiling, attaching profile identifiers to spans and adding trace context to profile samples.

Yes, if you already use both OpenTelemetry and Pyroscope and need to correlate traces with profiles. The package is actively maintained, has no known vulnerabilities, and installs with low friction. It is a thin, purpose-built integration layer rather than a general-purpose tool, so install it only if you have both tracing and profiling infrastructure in place.

Install

pyroscope-otel on PyPI

pip

pip install pyroscope-otel

uv

uv add pyroscope-otel

poetry

poetry add pyroscope-otel

Installing pyroscope-otel

Before you install

Low install friction with a pure-Python wheel. Actively maintained as of 45 days ago. Requires Python 3.10 or later.

License in practice

Apache License 2.0 (permissive) permits commercial and derivative use with minimal restrictions; attribution and license reproduction required in distributions.

Quickstart

pip install pyroscope-otel

from pyroscope import configure as pyroscope_configure
from opentelemetry.sdk.trace import TracerProvider
from pyroscope.otel import PyroscopeSpanProcessor

pyroscope_configure(app_name="my-app", server_address="http://localhost:4040")
provider = TracerProvider()
provider.add_span_processor(PyroscopeSpanProcessor())

Pyroscope must be configured before creating spans. Requires Python 3.10 or later.

Verify before relying

  • Whether the package works with Python versions between 3.10 and current stable, or only the latest minor release
  • Performance overhead of attaching profile IDs and trace tags to every root span
  • Compatibility with trace exporters other than Grafana Tempo

Package facts

License Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for… (full text in the JSON record) (permissive)
Python support supports the current Python release (>=3.10)
Install friction low — pure-Python wheel
Runtime dependencies 3 — opentelemetry-api, opentelemetry-sdk, pyroscope-io
Maintenance actively maintained — 45 days since the last release
First released
Downloads 1,459,832/month — #3,882 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: pyroscope_otel-1.1.0-py3-none-any.whl

Tags

opentelemetry profiling integrationtrace profile correlationpyroscope otel span processorcontinuous profiling with tracesgrafana tempo pyroscope link
observabilityprofilingtracing

More Monitoring packages

tqdm

Wraps any iterable to display a real-time…

copyleft · top 100 on PyPI

opentelemetry-semantic-conventions

Provides generated Python code for…

permissive · top 100 on PyPI

opentelemetry-sdk

Provides the reference implementation of the…

permissive · top 100 on PyPI

opentelemetry-api

Provides the abstract API and interfaces for…

permissive · top 100 on PyPI

opentelemetry-exporter-otlp-proto-http

Exports OpenTelemetry observability data to an…

permissive · top 1,000 on PyPI

opentelemetry-instrumentation

Provides automatic instrumentation commands and…

permissive · top 1,000 on PyPI

azure-core-tracing-opentelemetry

Integrates Azure SDK clients with OpenTelemetry…

unclear · top 5,000 on PyPI

pyroscope-io

Pyroscope-io is a continuous profiling agent…

permissive · top 5,000 on PyPI

otel-extensions

Provides helper classes, decorators, and…

permissive · top 15,000 on PyPI

opentelemetry-exporter-gcp-trace

Exports OpenTelemetry traces to Google Cloud…

permissive · top 5,000 on PyPI

arize-otel

Wraps OpenTelemetry with Arize-aware defaults…

permissive · top 15,000 on PyPI

otel-ci

Records and exports OpenTelemetry spans from…

unclear · top 15,000 on PyPI

opentelemetry-propagator-jaeger

Provides trace context propagation for the…

permissive · top 5,000 on PyPI

opentelemetry-instrumentation-sklearn

Adds distributed tracing instrumentation to…

permissive · top 15,000 on PyPI

opentelemetry-sdk-extension-aws

Provides OpenTelemetry SDK components to make…

permissive · top 5,000 on PyPI

opentelemetry-processor-baggage

Adds baggage context data from OpenTelemetry to…

permissive · top 5,000 on PyPI