Route 01 Local collector experiment

Find the platform edge before the incident.

Replay a bounded telemetry burst. See the first queue, slowdown, or drop. Leave with a tuning hypothesis—not a guess.

Loopback-only by default · samples stay local · no config writes

Capacity becomes visible when the platform starts to fill.

The route

One sample. Stepped arrivals. An explainable verdict.

  1. Read the controls

    Extract queue consumers, capacity, and batch settings from your Collector YAML. Templated values stay unknown.

  2. Replay bounded bursts

    Send your JSON bodies at stepped rates with hard caps on duration, requests, concurrency, and sample size.

  3. Mark the pressure line

    Combine response latency, throughput, failures, and optional Collector self-metrics into a stable, backpressure, or drops result.

Offline explainer

Model a burst before you run the CLI.

This deterministic queue model teaches the mechanics in your browser. It sends nothing and does not benchmark your Collector.

Ready. Adjust a lever or run the default burst.

Modeled result

Not run

Local model
Offered
Queue peak
Dropped
Drain time

Run the model to see whether this synthetic burst clears the platform, waits in queue, or crosses the drop gate.

The real experiment

Bring the pressure line to your terminal.

The Rust binary sends your bounded sample to your local OTLP/HTTP receiver and can read Collector self-metrics. Human output explains the result; --json makes it scriptable.

  • One native binary, no runtime or account
  • Loopback endpoint guard by default
  • Never edits the Collector config
CONTROL ROOM / 01
cargo install --git https://github.com/B-Divyesh/sf-collector-pressure-lab
$ cplab run \
  --config collector.yaml \
  --sample traces.ndjson \
  --rates 25,50,100,200

PRESSURE LINE  BACKPRESSURE
offered  achieved  p95       state
100/s      81.4/s  184.2ms   backpressure

First pressure threshold: ~81.4 req/s

Know the boundary

Small on purpose.

It measures

HTTP response latency, achieved throughput, non-success responses, and available queue/failure self-metrics across your chosen steps.

It suggests

Concrete next experiments around queue buffering, consumers, batches, downstream latency, and a finer threshold search.

It does not

Store telemetry, generate production-scale traffic, guarantee capacity, or rewrite a configuration on your behalf.