Deterministic Rule Engine
No black-box ML magic. You retain 100% explicit control over what gets dropped: nothing disappears unless a rule you wrote says so.
Telemetry Chopper is an open-source OpenTelemetry proxy that drops health checks, debug logs and other noise at the edge, redacts PII inside your perimeter, and prices every dropped byte at your own contract rates.
git clone https://github.com/PRIYAM232/telemetry-chopper.git && cd telemetry-chopper && docker compose -f deploy/docker/docker-compose.yaml up -d --buildIngested
18,432.6 GB
Dropped
8,127.4 GB
Saved (MTD)
$14,629.32
Throughput · last 30s
Rule hits
44.1% volume reduction
Built natively for the OpenTelemetry ecosystem
OTLP Compliant
gRPC :4317 · HTTP :4318
Low-Latency Overhead
Zero-alloc regex matching
Self-Hosted Security
Runs inside your cluster
Deterministic Engine
Explicit rules, no ML
Cost calculator
Plug in your daily volume and vendor for a quick estimate. It's a simplified version of the dashboard's model: one blended price per GB plus cloud egress. The dashboard prices each signal and indexed events separately, at your own contract rates.
~$1.80/GB · Blended ingest + 15-day indexing estimate
Estimates use illustrative list rates plus $0.09/GB cloud egress. Configure your exact contract in the Rate Card engine.
Estimated monthly savings
$22,680Annual savings
$272,160Cloud egress savings / mo
$1,080Overage headroom
If your commitment equals today's volume, this reduction leaves room for a +67% traffic spike before overage billing.
Features
Everything you need to shrink vendor bills without flying blind during an incident.
No black-box ML magic. You retain 100% explicit control over what gets dropped: nothing disappears unless a rule you wrote says so.
Configure your exact enterprise contract rates. Model savings across raw ingestion vs. indexed search events.
Cap noisy-tenant spikes with THROTTLE rules and track billable volume against your commitment, so you see overage risk before the invoice does, while cutting outbound cloud network transfer fees.
Redact credit card numbers, SSNs, and authorization tokens before they ever leave your Kubernetes cluster.
- ssn=078-05-1120
+ ssn=[REDACTED_PATTERN]
- card=4111 1111 1111 1111
+ card=[REDACTED_PATTERN]
+ authorization=[REDACTED]
How it works
Telemetry Chopper drops in as a standard OTLP endpoint. The data plane touches your telemetry; the control plane never does.
Your services emit logs, traces, and metrics over OTLP — no code changes, just point the exporter at Chopper.
Edge filtering and redaction in a Go-powered collector. Rules sync from the control plane in seconds, with zero restarts.
A smaller, cleaner stream reaches your vendor: the signals you keep, without the noise your rules remove.
Comparison
Collectors move data. Enterprise pipelines charge for it. AI reducers guess. Chopper gives you explicit rules and a dollar figure for every one of them.
| Feature | Telemetry Chopper | Vector / OTel | Cribl | Grepr | Sawmills |
|---|---|---|---|---|---|
| 100% Open Source | Yes | Yes | No | NoTools only | NoSome components |
| Real-Time Dollar Dashboard | Yes | No | PartialAdd-on pack | No | PartialMonthly reports |
| Explicit Deterministic Rules | Yes | Yes | Yes | Partial | PartialAI-recommended |
| Custom Rate Card Engine | Yes | No | No | No | No |
| Free / Self-Hosted | Yes | Yes | PartialFree ≤1 TB/day | PartialSaaS-first | NoFrom $2,500/mo |
Product names are trademarks of their respective owners and are used for identification only. Capabilities change: verify with each vendor before making a purchasing decision. Spot an error? Open an issue.
Developer quickstart
Run it anywhere you run containers. Create rules in the dashboard, and every collector picks them up within seconds, with no restarts.
Chopper receives telemetry over OTLP: point your OpenTelemetry SDKs or Collector at it. Data sent through a vendor's own agent goes straight to the vendor and bypasses it.
1$ git clone https://github.com/PRIYAM232/telemetry-chopper.git2$ cd telemetry-chopper34# Postgres → migrate + seed → Control Plane (:3000) → Collector (:4317/:4318)5$ docker compose -f deploy/docker/docker-compose.yaml up -d --build67# Dashboard: http://localhost:3000Rules you create in the dashboard, as every collector in the fleet receives them (abridged).
1{2 "fleet_id": "3f0c…",3 "rules": [4 {5 "name": "drop-health-checks",6 "isActive": true,7 "actionType": "DROP",8 "targetSignal": "TRACES",9 "conditionField": "http.route",10 "conditionOp": "REGEX_MATCH",11 "conditionValue": "^/(health|healthz|ready)$"12 },13 {14 "name": "redact-ssn",15 "isActive": true,16 "actionType": "REDACT",17 "targetSignal": "LOGS",18 "conditionField": "log.body",19 "conditionOp": "REGEX_MATCH",20 "conditionValue": "\\b\\d{3}-\\d{2}-\\d{4}\\b"21 },22 {23 "name": "drop-debug-logs",24 "isActive": true,25 "actionType": "DROP",26 "targetSignal": "LOGS",27 "conditionField": "log.severity",28 "conditionOp": "EQUALS",29 "conditionValue": "DEBUG"30 }31 ]32}