Skip to main content

Getting Started

pyroscope Grafana Pyroscope is an open-source continuous profiling backend. Odigos exports profile data over OTLP to Pyroscope so the same eBPF profiler that powers in-product views can also feed long-term, queryable storage.
This destination only emits the Profiles signal. The destination must include PROFILES, and continuous profiling must be enabled for the agent you use:
Pyroscope version
Use a Pyroscope build that accepts OTLP profiles on the endpoint you configure. If you are unsure, upgrade to a recent release before configuring Odigos.
Quickstart: self-hosted Pyroscope
If you don’t already run Pyroscope, the upstream Helm chart gets you a working instance in a couple of commands:
The distributor will be reachable in-cluster at pyroscope.pyroscope:4040 — use that as the PYROSCOPE_URL value below.
Provide the distributor’s host:port only. Do not add /otlp or other path suffixes — Odigos sends OTLP profiles to /v1development/profiles on the host you configure.
TLS
Toggle PYROSCOPE_TLS_ENABLED when Pyroscope is fronted by TLS. For plain traffic, leave it off.
Verifying the export
After applying the destination and sending traffic to a profiled source, open the Pyroscope UI (kubectl -n pyroscope port-forward svc/pyroscope 4040) and confirm that profiles appear under your service.

Configuring Destination Fields

❌ Traces ❌ Metrics ❌ Logs ✅ Profiles
  • PYROSCOPE_URL string : Pyroscope Endpoint. Hostname and port of the Pyroscope distributor HTTP API (e.g. pyroscope.pyroscope:4040). Odigos sends OTLP profiles to /v1development/profiles on this host; do not add an /otlp path.
    • This field is required
    • Example: host:port
  • PYROSCOPE_TLS_ENABLED boolean : Enable TLS. Secure connection
    • This field is optional and defaults to False

Adding Destination to Odigos

There are two primary methods for configuring destinations in Odigos:
Using the UI
1
Use the Odigos CLI to access the UI
2
Click on Add Destination, select Pyroscope and follow the on-screen instructions
Using Kubernetes manifests
1
Save the YAML below to a file (e.g. pyroscope.yaml)
2
Apply the YAML using kubectl