Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

schultyy/mustermann

Open more actions menu

Repository files navigation

mustermann

CI
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

cargo install mustermann

Or install it from the releases page.

Usage

mustermann [OPTIONS] <file_path> [otel_endpoint] [--service-name <service_name>]

Options

  • -p, --print-code: Enable debug mode to print generated bytecode
  • -s, --service-name <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

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:

servicemap

License

MIT

About

Generate Test Data for your OpenTelemetry pipeline

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.