A real-time, multi-host performance monitoring tool. This project provides a central dashboard to visualize live and historical system metrics, view running processes, and receive alerts—all powered by a lightweight agent, a Node.js backend, and an Angular frontend.
-
Lightweight Python Agent:
A minimal-impact agent usingpsutilcollects key system metrics (CPU, Memory, Disk, Network, Load Average) from each monitored host. -
Real-time Monitoring:
The central dashboard displays live metrics from all connected hosts. Data is pushed continuously from agents to the server via Socket.io and broadcast to the dashboard for instant updates. -
Historical Data Visualization:
The server stores time-series metrics in MongoDB, allowing the dashboard to render interactive, historical graphs for CPU, memory, and network activity using Chart.js. -
Host-Specific Views:
Users can select any host from the dashboard to drill down into its specific live metrics and historical performance graphs. -
On-Demand Process Viewer:
You can request a paginated list of all running processes (including PID, name, CPU%, and Memory%) from a specific host at any time. This data is fetched on-demand and is not stored in the database to conserve resources. -
Simple Frontend Alerting:
The Angular dashboard generates a visual popup alert if any host's incoming metrics breach predefined client-side thresholds.
| Layer | Technology |
|---|---|
| Frontend | Angular |
| Styling | Tailwind CSS |
| Charting | Chart.js |
| Backend | Node.js, Express |
| Real-time Communication | Socket.io |
| Database | MongoDB (for historical metrics) |
| Linux Agent | Python, psutil |
The system is composed of three main parts:
- Python script that runs on each monitored Linux host.
- Uses
psutilto collect system metrics at a configurable interval. - Connects to the Node.js server via Socket.io to continuously push metric data.
- Listens for on-demand requests from the server (e.g., "get process list").
- Node.js/Express application acting as the central hub.
- Listens for Socket.io connections from agents and frontend.
- Receives metric data from agents, timestamps it, and stores it in MongoDB.
- Broadcasts live metrics to all connected dashboard clients.
- Provides REST APIs for the frontend to query historical data (for graphs).
- Relays on-demand requests (like "get processes") from the frontend to the specific agent.
- Single-page application serving as the user dashboard.
- Connects to the server via Socket.io to receive live metric broadcasts.
- Uses Chart.js to render graphs by fetching data from the server's REST API.
- Provides the UI for selecting hosts, viewing paginated process lists, and viewing alerts.
- Core features (real-time metrics, historical visualization, process viewer, and frontend alerts) are fully implemented.