Synthetic Event Simulation Platform for Data Engineering
EventForge generates realistic synthetic e-commerce activity for testing data pipelines, streaming systems, analytics platforms, and data infrastructure.
Instead of replaying static datasets, EventForge simulates user behavior through configurable state machines and produces coherent event streams suitable for Kafka, data lakes, warehouses, and analytics workloads. Event forge provides;
- Realistic user journey simulation
- Deterministic replay using seeded generation
- Configurable traffic patterns and behavior
- Kafka-native event streaming
- Local development and benchmarking environments
- Containerized deployment with observability
- Stream processing validation
- Data pipeline development
- Analytics engineering
- Warehouse benchmarking
- Dashboard prototyping
- Load and performance testing
- Configurable e-commerce state machine
- Session-based user journeys
- State-specific event payloads
- Deterministic replay via configurable seeds
Current flow:
landing
↓
search
↓
product_view
↓
add_to_cart
↓
checkout
↓
purchase
- Kafka integration
- Asynchronous batching
- Compression support
- Snappy
- Gzip
- LZ4
- ZSTD
- Kafka
- NDJSON files
- Stdout
- Prometheus metrics and Grafana dashboards (Optional)
- Real-time event monitoring
- Docker Compose environment
- Redpanda broker
- Prometheus
- Grafana
┌─────────────┐
│ Config │
└──────┬──────┘
│
▼
┌──────────────────┐
│ Simulation Engine│
└────────┬─────────┘
│
▼
┌──────────────────┐
│ Event Generation │
└────────┬─────────┘
│
┌─────────────┼─────────────┐
│ │ │
▼ ▼ ▼
Kafka File Stdout
go run ./cmd/sim -c configs/config.yamldocker compose up -dServices:
| Service | Address |
|---|---|
| Redpanda | localhost:19092 |
| Metrics | localhost:8080/metrics |
| Prometheus | localhost:9090 |
| Grafana | localhost:3000 |
Grafana credentials:
admin / admin
Example:
kafka:
brokers:
- "localhost:19092"
topic: "ecommerce-events"
batch_size: 100
batch_timeout: "1s"
compression: "snappy"
simulator:
seed: 42
concurrent_users: 20
events_per_second: 25
sinks:
- stdout
- file
output_file: "/var/log/sim/events.ndjson"
state_machine:
transitions:
- from: landing
to: search
probability: 0.8Environment variable overrides:
SIM_KAFKA_BROKERS
SIM_SIMULATOR_SINKS
{
"event_id": "uuid",
"timestamp": "2024-01-15T10:30:00Z",
"session_id": "uuid",
"user_id": "uuid",
"event_type": "search",
"data": {}
}EventForge exposes Prometheus metrics including:
sim_events_produced_total
sim_sessions_created_total
sim_active_users
sim_kafka_messages_sent_total
sim_kafka_batches_sent_total
go test ./...- State-machine driven event generation
- Configurable transition probabilities
- Deterministic simulation
- Kafka producer with async batching
- File and stdout sinks
- Prometheus metrics
- Grafana dashboards
- Docker Compose deployment
- Persistent users and personas
- Temporal traffic patterns
- Historical/backfill generation
- Multi-domain support
- Data quality anomaly injection
- Source-system simulation