Dstl8 Free Account Get Started

How to Point telemetrygen at a Real Backend with Dstl8 tap

July 16, 2026 By Bob Quillin
Share
Telemetrygen with Dstl8 tap

TL;DR — To send telemetrygen output somewhere you can actually read it, start a local OTLP receiver with dstl8 tap --listen &, then run telemetrygen logs --otlp-endpoint localhost:4317 --otlp-insecure. dstl8 tap auto-converts each record to OTLP and streams it to your dstl8 org, where you view it with dstl8 tui. One terminal, no backend to build.

If you’ve used telemetrygen to load-test an OpenTelemetry collector, you know the awkward part: the data goes in, but there’s nowhere good to look. You point it at a debug exporter, or /dev/null, and squint at raw stdout. This guide shows a better target — dstl8 tap, a drop-in local OTLP receiver that parses, distills, and triages the stream so you can see what you generated.

What is telemetrygen?

telemetrygen is a CLI from the OpenTelemetry Collector Contrib project that generates synthetic OTLP telemetry — logs, traces, and metrics — and exports it over gRPC or HTTP. It’s the standard tool for exercising a collector or pipeline without wiring up a real application. Learn more about in this how-to blog “How to Use telemetrygen to feed Telemetry to the OTel Collector.”

What is Dstl8 tap?

dstl8 tap is a universal OTLP ingest tool. It reads log lines from stdin or accepts OTLP directly with --listen, auto-detects the format, converts everything to clean OTLP, and streams it to your dstl8 org — where it’s parsed into streams, severity, and patterns, and surfaced in the dstl8 TUI. For this guide, --listen turns it into a local OTLP receiver that telemetrygen can target.

Prerequisites

  • telemetrygen — install with Go: go install github.com/open-telemetry/opentelemetry-collector-contrib/cmd/telemetrygen@latest
  • dstl8 — install the CLI and sign up (setup also wires up the AI-agent MCP if you want it): brew install control-theory/dstl8/dstl8 && dstl8 setup

Send telemetrygen logs to dstl8 tap (step by step)

1. Start the receiver. --listen opens OTLP on gRPC :4317 and HTTP :4318. The & backgrounds it so you can stay in one terminal:

dstl8 tap --listen &

You’ll see it come up:

Tapping logs  otlp source "OTLP demo"
  Listening for OTLP: gRPC localhost:4317 · HTTP localhost:4318

2. Generate logs with telemetrygen at that endpoint:

telemetrygen logs --otlp-endpoint localhost:4317 --otlp-insecure --duration 30s

3. Watch tap receive and forward it. tap reports live stats — every record converted to OTLP and streamed to your org, zero dropped:

  tap: 600 read · 600 sent · 0 failed · 44 KiB

4. Read the distilled result in the TUI:

dstl8 tui

Your synthetic stream shows up parsed — severity mapped, log viewer populated, patterns grouped — instead of scrolling past as raw stdout.

No account? See the conversion with –dry-run

Want to watch tap convert to OTLP without sending anything (or signing up)? Pipe a file through it:

cat app.log | dstl8 tap --dry-run

It prints the OTLP JSON to your terminal and sends nothing — a quick way to see the parsing before you commit.

One terminal, not two

The & in step 1 is the trick: it backgrounds the listener so telemetrygen runs in the same shell. If your machine is slow to bind the port, add a one-second pause so the receiver is ready before you generate:

dstl8 tap --listen &
sleep 1
telemetrygen logs --otlp-endpoint localhost:4317 --otlp-insecure --duration 30s

Frequently asked questions

Does telemetrygen support logs?

Yes. telemetrygen has logs, traces, and metrics subcommands. telemetrygen logs generates synthetic OTLP log records, which is what dstl8 tap ingests.

What ports does dstl8 tap –listen use?

The OTLP defaults: gRPC on localhost:4317 and HTTP on localhost:4318. Override them with --listen-grpc-port and --listen-port.

Do I need a dstl8 account?

To send data to your org, yes — run dstl8 setup once (it creates or detects your account). To just see the OTLP conversion locally, use --dry-run, which sends nothing and needs no account.

gRPC or HTTP — how do I use the HTTP endpoint?

telemetrygen defaults to gRPC (:4317). To use HTTP instead, add --otlp-http and point at :4318:

telemetrygen logs --otlp-endpoint localhost:4318 --otlp-http --otlp-insecure

Can I set the service name?

Yes — pass it as a resource attribute on telemetrygen (--otlp-attributes 'service.name="checkout-api"'), or override it on tap with --service checkout-api.

How is this different from pointing telemetrygen at a collector?

A collector receives and forwards — you still need a backend and a place to look. dstl8 tap is the destination that parses and shows the data, so you see the distilled result immediately instead of moving bytes around.

Test telemetrygen on Your Own Collector

You just walked through the manual flow. Here’s the same thing running live — pick a tab and watch your logs get parsed, distilled, and triaged:

Watch it, then run it on your stack

Pick where you already work:

dstl8 tui — 145×50
dstl8  ·  dev-local  ›  Demo Workspace
DashboardIncidents (4)HeatmapLog Viewer

LOG SEVERITY

13:5414:1214:3014:48
FatalErrorWarnInfoDebugTrace

LOGS

switch tabs   tab switch sections   enter view   d open app   q quit
dstl8  ·  dev-local  ›  Demo Workspace
DashboardIncidents (4)HeatmapLog Viewer
window: 1h    group: stream_name
14:0514:1614:2714:3814:49
CRITICALPOORWEAKFAIRNEUTRALPOSITIVE
switch tabs   tab switch sections   enter view   d open app   q quit
dstl8  ·  dev-local  ›  Image provider service comp…
WorkspacesIncidents (4)Sources
Image provider service completely down due to memory pressure (92.3% error rate)ACTIVECRITICAL
Time: 2026-07-05 13:02 → ongoing    Duration: 4d1h
Activity: 2 bursts / 3d · current burst 380m, peak 438/5min · last seen 2m ago

IMPACTED RESOURCES

· deployment: image-provider [open] ×96386 last seen 2m ago
· pod: image-provider-0dff14e6 [open] ×48196 last seen 2m ago
· service: image-provider [open] ×96386 last seen 2m ago
· deployment: otel-collector [open] ×5244 last seen 3m ago
· service: payment [open] ×2396 last seen 5m ago

SUMMARY

The image-provider service remains non-functional with 92.9% of requests failing (289 errors). All product-catalog images and checkout flows depending on image validation remain blocked after 3+ days of continuous failures.
↗ Open the full web app
scroll   esc back   d open app   ? help   q quit

Run it on your cluster:

# one-time: install + sign up, then stream a live deployment's logs brew install control-theory/dstl8/dstl8 && dstl8 setup && kubectl logs -f deploy/your-app | dstl8 tap --service your-app
Kubernetes source docs →

Run it in one terminal:

# one-time: install + sign up brew install control-theory/dstl8/dstl8 && dstl8 setup # background the OTLP receiver, then point telemetrygen at it dstl8 tap --listen & telemetrygen logs --otlp-endpoint localhost:4317 --otlp-insecure --duration 30s
telemetrygen guide →

Run it in your editor:

# install + sign up — setup installs the dstl8 MCP into Claude Code, Codex, etc. brew install control-theory/dstl8/dstl8 && dstl8 setup
MCP docs →

And the same single line taps your real logs, not just synthetic ones:

kubectl logs -f deploy/api | dstl8 tap --service api

Ready to run it on your own stack? → OpenTelemetry Log Analysis →

Table of Contents
For media inquiries, please contact
press@controltheory.com
Ready to Deploy Dstl8?

Join engineering teams catching emergent patterns in staging before they page you at 2am.

ControlTheory
Free Account

Start seeing what Vercel can't show you

Gonzo running against your Vercel log stream in 2 minutes. Early access to Dstl8. No credit card, no sales call.

Enter a valid email to continue