https://github.com/schultyy/mustermann
Generate Test Data for your OpenTelemetry pipeline
https://github.com/schultyy/mustermann
logs opentelemetry otlp rust tracing
Last synced: 4 months ago
JSON representation
Generate Test Data for your OpenTelemetry pipeline
- Host: GitHub
- URL: https://github.com/schultyy/mustermann
- Owner: schultyy
- License: mit
- Created: 2025-02-28T03:34:53.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-04-13T02:24:38.000Z (6 months ago)
- Last Synced: 2025-06-10T18:12:55.934Z (4 months ago)
- Topics: logs, opentelemetry, otlp, rust, tracing
- Language: Rust
- Homepage: https://crates.io/crates/mustermann
- Size: 793 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# mustermann

Mustermann is a CLI tool that generates test data for OpenTelemetry pipelines using a custom virtual machine. It allows you to define complex service interactions and log patterns through YAML configuration files, making it perfect for testing and validating your observability infrastructure.
## Features
- Generate realistic test data for OpenTelemetry pipelines
- Define service interactions and dependencies
- Create custom log patterns with variable substitution
- Control execution frequency and patterns
- Support for different log severity levels
- Custom virtual machine for efficient execution## Installation
```bash
cargo install mustermann
```Or install it from the [releases page](https://github.com/schultyy/mustermann/releases).
## Usage
```bash
mustermann [OPTIONS] [otel_endpoint] [--service-name ]
```### Options
- `-p, --print-code`: Enable debug mode to print generated bytecode
- `-s, --service-name `: The name of the service to be used in the logs (default: "mustermann")
- `file_path`: Path to the configuration YAML file
- `otel_endpoint`: Optional OpenTelemetry endpoint URL### Example
```bash
mustermann config.yaml http://localhost:4317 --service-name my-service
```Standalone service just printing values:
```
service payments {
method charge {
print "Processing payment for order %s" with ["12345", "67890"];
sleep 500ms;
}loop {
call charge;
}
}
```Standalone service printing values to stderr:
```
service payments {
method charge {
stderr "Processing payment for order %s" with ["12345", "67890"];
sleep 500ms;
}loop {
call charge;
}
}
```Service accepting requests from other services:
```
service payments {
method charge {
print "Processing payment for order %s" with ["12345", "67890"];
sleep 500ms;
}
}
```Call another service:
```
service products {
method get_products {
print "Fetching product orders %s" with ["12345", "67890"];
sleep 500ms;
}
}service frontend {
method main_page {
print "Main page";
call products.get_products;
}loop {
call main_page;
}
}
```## Multi-service example
```
service products {
method get_products {
print "Fetching product orders %s" with ["12345", "67890"];
sleep 500ms;
}
}service features {
method is_enabled {
print "Check if feature is enabled %s" with ["login", "upload", "create"];
sleep 1000ms;
}
}service frontend {
method login {
print "Main page";
call features.is_enabled;
}loop {
call login;
}
}service analytics {
method main_page {
print "Main page";
call products.get_products;
}loop {
call main_page;
}
}service frontend_b {
method main_page {
print "Main page";
call products.get_products;
}loop {
call main_page;
}
}
```This service definition will generate the following service map:

## License
MIT