What is Odigos?
Odigos is an instrumentation control plane for Kubernetes and VMs that instruments applications from the kernel using eBPF. Because collection runs in the kernel, app overhead stays low while visibility stays high. You get production-grade OpenTelemetry traces, metrics, logs, and profiles without shipping new agents in application code or waiting on library upgrades across every service.
That eBPF layer is what makes deep, consistent telemetry possible at scale. Odigos can automatically turn on and off deeper instrumentation when needed to help debug or troubleshoot problems:
- Code-level context — attributes tied to functions and runtime behavior
- HTTP traffic — requests and responses across your services
- Messaging systems — payloads and messages from Kafka and similar brokers
- Errors in detail — stack traces when things fail
- Custom instrumentation — extend coverage where auto-instrumentation stops without requiring code changes or restarts
Behind the scenes, Odigos creates and manages a full OpenTelemetry pipeline for your cluster: collectors that scale with load, routing to the backends you choose, and pipeline logic you control in the UI. Define sampling to manage volume, PII masking to keep sensitive data out of exports, and OTTL rules to filter, transform, or enrich telemetry before it leaves the cluster.
Why Odigos + ClickStack?
Rolling out OpenTelemetry across many services is often time consuming and only provides surface-level visibility in applications. Odigos handles eBPF instrumentation for deeper telemetry and collector operations on Kubernetes; ClickStack provides ClickHouse-backed storage and the HyperDX UI for querying telemetry at scale.
Prerequisites
- ClickStack installed and reachable from your Kubernetes cluster. See Getting started with open source ClickStack or Getting started with managed ClickStack.
- Your ClickStack OTLP HTTP endpoint (port
4318) and the authentication value Odigos will pass in theAuthorizationheader. With open source ClickStack this is the API ingestion key from Team Settings → API Keys in the HyperDX UI. With Managed ClickStack this is theOTLP_AUTH_TOKENyou set when starting your own standalone ClickStack collector. - A Kubernetes cluster (Linux nodes with kernel 4.18 or later for eBPF instrumentation)
- Helm, kubectl, and cluster credentials to install into
odigos-systemnamespace - An Odigos Enterprise on-prem token — contact the Odigos team for access
Integrate ClickStack with Odigos
Deploy Odigos with Helm
Odigos Enterprise requires an on-prem license token. Export it in your shell:
export ODIGOS_ONPREM_TOKEN="<your-enterprise-token>"Alternatively, you can store the token in a Kubernetes Secret named odigos-pro before installing. See Odigos Enterprise installation.
Add the Odigos Helm repository and install the chart into odigos-system:
helm repo add odigos https://odigos-io.github.io/odigos/
helm repo update
helm upgrade --install odigos odigos/odigos \
--namespace odigos-system \
--create-namespace \
--set onPremToken=$ODIGOS_ONPREM_TOKENYou can pass additional configuration overrides with --set flags or a custom values file (-f). The chart’s default values are in helm/odigos/values.yaml on GitHub.
Verify Odigos pods are running:
kubectl get pods -n odigos-systemAdd sources in the Odigos UI
- Port-forward the Odigos UI service:
kubectl port-forward svc/ui -n odigos-system 3000:3000- Open http://localhost:3000 in your browser.
- Go to Sources and select the namespaces or workloads you want to instrument.
- Click done at the bottom, once you have marked all workloads for instrumentation.
- Verify workloads have been instrumented successfully in the sources column.
Add ClickStack as a destination in the Odigos UI
To send telemetry to ClickStack, add an OTLP HTTP destination in Odigos. The exact configuration depends on how ClickStack is deployed. With open source ClickStack the OpenTelemetry collector is bundled and the ingestion key is generated for you in the HyperDX UI. With Managed ClickStack you run your own standalone ClickStack collector and choose the authentication token yourself when starting the container.
With open source ClickStack, for example the all-in-one image, the gateway OpenTelemetry collector is included and the ingestion API key is generated automatically by HyperDX.
- In the Odigos UI, click Add Destination and select OTLP HTTP.
- Set OTLP HTTP Endpoint to your ClickStack collector (for example,
http://clickstack.example.com:4318). See Ingesting with OpenTelemetry for endpoint details. - Copy your API ingestion key from the ClickStack UI under Team Settings → API Keys.
- In Headers, add:
- Key:
Authorization - Value: your API ingestion key
- Key:
- Enable Logs, Metrics, and Traces.
- Save the destination.
Managed ClickStack does not ship a hosted OpenTelemetry collector or surface an ingestion key in the UI. Instead, you run the ClickStack distribution of the collector in standalone mode yourself and set the authentication token via the OTLP_AUTH_TOKEN environment variable when starting the container. Odigos then sends OTLP HTTP traffic to that collector with the same token in the Authorization header.
-
Start the ClickStack collector in standalone mode, pointing it at your ClickHouse Cloud service and securing it with an
OTLP_AUTH_TOKENof your choice:export CLICKHOUSE_ENDPOINT=<HTTPS_ENDPOINT> export CLICKHOUSE_USER=<CLICKHOUSE_USER> export CLICKHOUSE_PASSWORD=<CLICKHOUSE_PASSWORD> export OTLP_AUTH_TOKEN="a_very_secure_string" docker run \ -e OTLP_AUTH_TOKEN=${OTLP_AUTH_TOKEN} \ -e CLICKHOUSE_ENDPOINT=${CLICKHOUSE_ENDPOINT} \ -e CLICKHOUSE_USER=${CLICKHOUSE_USER} \ -e CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} \ -p 4317:4317 \ -p 4318:4318 \ clickhouse/clickstack-otel-collector:latestFor TLS, dedicated ingestion users, and other production recommendations, see Securing the collector.
-
In the Odigos UI, click Add Destination and select OTLP HTTP.
-
Set OTLP HTTP Endpoint to the standalone collector you just started (for example,
http://my-collector.example.com:4318). -
In Headers, add:
- Key:
Authorization - Value: the
OTLP_AUTH_TOKENvalue you set on the collector
- Key:
-
Enable Logs, Metrics, and Traces.
-
Save the destination.
Verify telemetry in ClickStack
- Open the ClickStack UI (HyperDX):
- Open source ClickStack: for example,
http://<host>:8080on the all-in-one image. - Managed ClickStack: open your service in the ClickHouse Cloud console, then click Launch ClickStack.
- Open source ClickStack: for example,
- Check Logs, Metrics, and Traces for data from your instrumented services.
- Filter traces by
odigos.versionto validate end-to-end export.
If data is missing, check collector logs: kubectl logs deploy/odigos-gateway -n odigos-system
Advanced configuration
HyperDX log normalizer
If you export directly to ClickHouse with Odigos’s native ClickHouse destination (instead of OTLP HTTP to ClickStack), enable HyperDX log normalizer (HYPERDX_LOG_NORMALIZER: true). It parses JSON log bodies and normalizes attributes for better querying in the ClickStack UI.
Native ClickHouse destination
When ClickHouse is directly reachable from your cluster, you can use Odigos’s native ClickHouse destination instead of OTLP HTTP. Configure the ClickHouse endpoint, database name, and schema options in the UI or with a manifest — see Odigos ClickHouse destination.
- Production schema: Set
CLICKHOUSE_CREATE_SCHEMEtofalseand apply your own DDL. - TLS / auth: Use
CLICKHOUSE_TLS_ENABLED,CLICKHOUSE_USERNAME, and a Kubernetes Secret for the password.
Configure destinations with Kubernetes manifests
OTLP HTTP (ClickStack)
apiVersion: odigos.io/v1alpha1
kind: Destination
metadata:
name: clickstack
namespace: odigos-system
spec:
type: otlphttp
destinationName: otlphttp
signals:
- TRACES
- METRICS
- LOGS
data:
OTLP_HTTP_ENDPOINT: 'http://clickstack.example.com:4318'
# API ingestion key for open source ClickStack, or OTLP_AUTH_TOKEN for Managed ClickStack
OTLP_HTTP_HEADERS: 'Authorization:<YOUR_AUTHORIZATION_VALUE>'ClickHouse (direct)
apiVersion: odigos.io/v1alpha1
kind: Destination
metadata:
name: clickhouse
namespace: odigos-system
spec:
type: clickhouse
destinationName: clickhouse
signals:
- TRACES
- METRICS
- LOGS
data:
CLICKHOUSE_ENDPOINT: 'http://clickstack.example.com:8123'
CLICKHOUSE_DATABASE_NAME: 'otel'
CLICKHOUSE_CREATE_SCHEME: 'true'Apply the manifest:
kubectl apply -f destination.yamlOdigos VM Agent
The Odigos VM Agent instruments Linux processes, systemd services, and/or docker containers using eBPF. Telemetry exports to the same destinations as cluster-based Odigos, including ClickStack over OTLP HTTP.
The VM Agent is part of Odigos Pro. See the VM Agent overview for setup, sources, and destination configuration.
Odigos Central
Odigos Central is a centralized control plane for managing instrumentation, destinations, and pipeline configuration across multiple Kubernetes clusters from one UI - instead of configuring each cluster separately.
Odigos Central is available in Odigos Enterprise. See the Central overview for multi-cluster management, SSO, and unified sampling rules.
Next steps
- Explore traces across instrumented services in ClickStack
- Build dashboards for metrics Odigos exports
- Tune ClickHouse schema and TTL for your retention and query patterns