A distributed telemetry system that combines eBPF-based kernel tracing with ML prediction for low-overhead, multi-cluster performance monitoring. Built in Rust with Python ML services, coordinated via ZooKeeper, and deployable on Kubernetes.
kernel/ - eBPF kernel programs (Aya framework)
userspace/ - Main Rust monitoring application
simple_ml_bridge/ - Python ML prediction service
scripts/ - Deployment, testing, and evaluation scripts
eval_data/ - Evaluation datasets and results
# Run collector with basic system monitoring
cargo run -- --zookeeper-connection localhost:2181 --cluster-id local --cpu --memory --network
# Run collector with all system monitors
cargo run -- --zookeeper-connection localhost:2181 --cluster-id local --all-system
# Run collector with eBPF tracing
cargo run -- --zookeeper-connection localhost:2181 --cluster-id local --ebpf-all
# Run collector with prediction enabled
cargo run -- --zookeeper-connection localhost:2181 --cluster-id local --all-system --prediction
# Run aggregator
cargo run -- --zookeeper-connection localhost:2181 --cluster-id local --aggregator --influxdb-url http://localhost:8086
# Run aggregator with prediction enabled
cargo run -- --zookeeper-connection localhost:2181 --cluster-id local --aggregator --prediction --influxdb-url http://localhost:8086- Collector (default) - Collecting system metrics and/or eBPF data, sends to aggregator
- Aggregator - Processes telemetry data, stores in InfluxDB, predicts future metrics using ML service
The eval_data/ directory contains evaluation datasets covering:
- eBPF overhead and observability measurements
- Network usage prediction accuracy
- Prediction utility comparison (no prediction vs. loaded model vs. live training)
- Live training variance analysis
- Chaos engineering resilience tests