EdgeMon is a lightweight, self-hosted system telemetry and monitoring dashboard. It tracks real-time performance indicators (CPU, memory, disk, network, and temperature) and exposes a web dashboard built with Flask alongside a persistent SQLite storage engine.
- Real-time Telemetry Dashboard: Clean, interactive web interface for visualizing resource usage.
- Persistent History: Background daemon logs telemetry data into an SQLite database (
metrics.db). - Cross-platform Temperature Readings: Native support for temperature polling on both Windows (WMI/GPUtil/PowerShell) and Linux (
/sys/class/thermal). - Automated Alert System: Warnings when CPU, Memory, Disk, or Temperature cross configured thresholds.
- Data Export: Endpoint to export telemetry logs directly into a formatted CSV report.
EdgMon_V3.1/
├── app.py # Flask Web Server & API endpoints
├── monitor.py # Hardware telemetry poller & DB logger
├── models.py # SQLite database schema and operations
├── requirements.txt # Project dependencies
├── static/ # Static assets (stylesheets, logos)
└── templates/ # HTML template files (dashboard.html)
- Python 3.12+
git clone https://github.com/omar230101276/EdgeMone_Server.git
cd EdgeMone_ServerCreate and activate a virtual environment to manage dependencies locally:
- Windows:
python -m venv .venv .venv\Scripts\activate - Linux / macOS:
python3 -m venv .venv source .venv/bin/activate
Install all required Python libraries:
pip install -r requirements.txt
pip install setuptoolsTo run the full monitoring suite, you should run the web server and the background collector concurrently:
python app.pyBy default, the server runs on http://localhost:5000.
python monitor.pyThis logs system metrics to the SQLite database every 5 seconds.
GET /— Renders the web monitoring dashboard.GET /api/data— Returns the current real-time telemetry snapshot and any active alerts.GET /api/system— Returns static hardware identifiers and basic connectivity status.GET /api/health— Lightweight health endpoint showing core parameters for load-balancer usage.GET /download— Generates and downloads a CSV report containing the historical SQLite metric logs.
Thresholds can be adjusted inside monitor.py:
THRESHOLD_CPU: Default80%THRESHOLD_MEMORY: Default80%THRESHOLD_DISK: Default80%THRESHOLD_TEMP: Default70.0°CCHECK_INTERVAL: Default5seconds