A fully self-hosted observability stack in a single container.
This guide walks you through setting up Qtap with ClickStack — a self-contained observability stack that bundles ClickHouse, an OTel collector, and the HyperDX UI into a single Docker image. Events and artifacts flow through OpenTelemetry, with no S3 setup required.
Quick version: Run ClickStack, point Qtap at it, see traffic in your browser. Total setup time: ~5 minutes.
What You'll Get
Component
What It Does
Port
ClickStack
ClickHouse + OTel collector + HyperDX UI
8080, 4317, 4318
Qtap
eBPF agent capturing traffic and sending via OTel
—
Both events (connection metadata, HTTP transactions) and objects (request/response headers and bodies) are sent through the same OTel endpoint. No separate object storage to configure.
Once you see the startup complete, visit http://localhost:8080 to access the HyperDX UI.
Step 2: Create the Qtap Configuration
Create a file called qtap-clickstack.yaml:
This configuration:
Sends events (connection metadata, HTTP transaction summaries) to ClickStack via OTel
Sends objects (full request/response headers and bodies) to ClickStack via OTel
Captures all egress HTTP traffic at full detail level
Both stores share the same OTel endpoint — no S3 credentials needed
This replaces many small S3 files with batched OTLP log records, which ClickHouse ingests efficiently.
Step 3: Start Qtap
Verify Qtap is running and connected:
You should see the eventstore and objectstore initialize successfully:
Step 4: Generate Traffic and View
Generate some traffic:
Open http://localhost:8080 in your browser. In the HyperDX UI, create a source with table name otel_logs to view captured events and artifacts.
You'll see:
Connection events — TCP connections with protocol detection, TLS info, process attribution
HTTP transaction summaries — method, URL, status, duration, content type
Full request/response data — headers and bodies captured by the http_capture plugin
How It Works
Qtap captures traffic using eBPF and exports both event metadata and full artifacts as OpenTelemetry Logs. ClickStack receives them through its built-in OTel collector and stores everything in ClickHouse.