Sonda
Sonda is a synthetic telemetry generator written in Rust. It produces realistic observability signals -- metrics and logs -- for testing pipelines, validating ingest paths, and simulating failure scenarios. Unlike pure-random noise generators, Sonda models the patterns that actually break real pipelines: gaps, micro-bursts, cardinality spikes, and shaped value sequences.
Features at a glance
| Category | Options |
|---|---|
| Generators | constant, sine, sawtooth, uniform random, sequence, step, spike, CSV replay |
| Encoders | Prometheus text, InfluxDB line protocol, JSON lines, syslog, Prometheus remote write, OTLP |
| Sinks | stdout, file, TCP, UDP, HTTP push, Prometheus remote write, Kafka, Loki, OTLP/gRPC |
| Scheduling | configurable rate, duration, gap windows, burst windows, cardinality spikes, dynamic labels, jitter |
| Signals | metrics (gauge, histogram, summary), logs (template and replay modes) |
| Built-in scenarios | 11 curated patterns (cpu-spike, memory-leak, interface-flap, log-storm, and more) |
| Deployment | static binary, Docker, Kubernetes (Helm chart) |
Quick install
Install script (Linux and macOS):
|
Cargo:
Docker:
See the Getting Started guide for all installation options.
Your first metric
Emit a constant value -- the simplest signal for health-check or baseline testing:
up 1 1775518552355
up 1 1775518553360
up 1 1775518554360
Shape the signal with a sine wave, labels, and any of the eight built-in generators:
Push directly to a backend -- no scenario file needed:
Define complex scenarios in YAML for repeatable runs with sonda metrics --scenario config.yaml.
The Tutorial walks through every generator,
encoder, sink, and scheduling option step by step.
Built-in scenarios
Sonda ships with 11 pre-built patterns you can run instantly -- no YAML needed:
See the Built-in Scenarios guide for the full catalog and customization workflow.
Documentation
Full documentation is available at https://davidban77.github.io/sonda/.
- Getting Started -- installation, first metric, first log scenario
- Tutorial -- generators, encoders, sinks, gaps, bursts, multi-scenario runs
- Configuration Reference -- scenario files, generators, encoders, sinks
- CLI Reference -- every flag for
metrics,logs,histogram,summary, andrun - Deployment -- Docker, Kubernetes, sonda-server HTTP API
- Guides -- alert testing, pipeline validation, CSV replay, example catalog
Library usage
Add sonda-core to use the generation engine programmatically:
[]
= "0.8"
Heavy dependencies (HTTP, remote write, Kafka, OTLP) are gated behind Cargo feature flags so you only pay for what you use. See the sonda-core docs on docs.rs for API details and feature flag reference.
Contributing
sonda/
├── sonda-core/ library crate: generators, encoders, schedulers, sinks
├── sonda/ binary crate: CLI
├── sonda-server/ binary crate: HTTP API control plane
└── examples/ YAML scenario files
&&
Contributions are welcome. See CONTRIBUTING.md for build instructions, coding conventions, and the pull request process.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)
at your option.