PrioMon is a high-performance distributed monitoring system that utilizes a gossip protocol to propagate system metrics (CPU, Memory, Network, Storage) across a cluster of nodes. It features a unique priority-based bandwidth-saving mechanism that intelligently filters metrics based on their importance and the magnitude of data changes.
- Gossip Protocol Propagation: Efficient data dissemination without a single point of failure.
- Priority Filtering: Reduces bandwidth usage by up to 100x by prioritizing critical status updates and skipping redundant ones.
- Node Resilience: Automatic failure detection and handling of dead nodes.
- SSD Optimized: Uses SQLite WAL (Write-Ahead Logging) to protect your hardware during intensive high-frequency simulations.
- Integrated Analytics: Built-in plotting tools to visualize convergence time, success rates, and bandwidth savings.
PrioMon/
├── src/ # Core Gossip Engine implementation
│ ├── app/ # Dockerized node logic (priomon.py, node.py)
│ └── query_client.py # Client-side query bridge
├── experiments/ # Simulation Orchestration & Analysis
│ ├── monitoring.py # Central experiment runner & monitoring server
│ ├── plot.py # Analytics visualization tool
│ └── config.ini # Simulation parameters
├── docker-compose.yml # Service definitions for building the node cluster
└── requirements.txt # Orchestrator dependencies (Python)
- Python 3.9+
- Docker & Docker Compose
- A virtual environment (recommended)
# Clone the repository
git clone <repo-url>
cd PrioMon
# Install dependencies
pip install -r requirements.txt- Build the Node Image:
docker-compose up --build -d
- Start the Orchestrator:
python experiments/monitoring.py - Trigger the Experiment:
Open your browser and navigate to
http://localhost:4000/start.
After the simulation finishes, run the plotting tool:
python experiments/plot.pyThis will generate PNG charts in the experiments/ directory.
Tweak the parameters in experiments/config.ini to change node counts, gossip rates, or metric priorities.